병인 2022. 5. 9. 19:15

IAM

  • IAM = Identity and Access Management
  • Global Service
    • IAM은 사용자를 생성하고 그룹에 배치하기 때문
  • Root account 는 계정을 생성할 때 기본으로 생성된다.
    • Root account는 오직 계정을 생성할 때만 사용되어야 한다.
    • 그 후에는 루트 계정을 사용해서도, 공유해서도 안된다.
    • 그 대신에 Users를 생성해야 한다.
  • Users(사용자)
    • IAM에서 사용자를 생성할 때 하나의 사용자는 조직(organization) 내의 한 사람에 해당된다.
    • 필요하다면 사용자들을 그룹으로 묶을 수 있다.
  • Groups
    • 그룹에는 오직 사용자만 포함이 가능하다. 다른 그룹이 포함될 수 없다.
    • 사용자는 그룹에 소속되지 않을 수 있고, 여러 개의 그룹에 동시에 소속할 수도 있다.

IAM: Permissions

  • 사용자 또는 그룹에게 정책, 또는 IAM 정책이라고 불리는 JSON 문서를 지정할 수 있다.
  • 정책들을 자용해 사용자들의 권한을 정의할 수 있다.
  • AWS에서는 최소 권한의 원칙을 적용해야 한다.
    • 사용자가 꼭 필요로 하는 것 이상의 권한을 주지 않는 것
    • 비용, 보안 문제 때문

IAM 정책

  • 그룹에게 정책을 줄 수 있다.
  • 개인에게 정책을 줄 때는 inline으로 정책을 준다.
  • inline은 사용자가 그룹에 속해 있든 아니든 적용 가능하다.

IAM Policies Structure

{
    "Version" : "2012-10-17",
    "Id" : "S3-Account-Permissions",
    "Statement" : [
        {
                "Sid" : "1",
                "Effect" : "Allow",
                "Principal" : {
                    "AWS" : ["arn:aws:iam::12345678910:root"]
                },
                "Action" : [
                    "s3:GetObject",
                    "s3:PutObject"
                ],
                "Resource" : ["arn:aws:s3:::mybucket/*"]
        }
    ]
}
  • Version : 정책 언어 버전으로 보통은 "2012-10-17" 이다.
  • Id : 정책을 식별함 (Optional)
  • Statement : 1개 혹은 여러 개 일 수 있다.
    • Sid : 문장 ID로 문장의 식별자 (Optional)
    • Effect : 문장이 특정 API에 접근하는 걸 허용할지 거부할지에 대한 내용이다.
      • Allow : 허용
        • Deny : 거부
    • Principal : 특정 정책이 적용될 사용자(User), 계정(Account), 혹은 역할(Role)로 구성된다. (Optional)
    • Action : Effect에 기반해 허용 및 거부되는 API 호출의 목록이다.
    • Resource : 적용될 Action의 리소스의 목록으로 위의 예시에서는 버킷이지만 다른 것들이 될 수 있다.
    • Condition : Statement가 언제 적용될지를 결정한다. (Optional)

IAM MFA

  • 보안 이슈 방어 메커니즘
    • Password Policy(비밀번호 정책)의 정의
      • 비밀번호가 강력할수록 계정의 보안이 철저해진다.
      • AWS 비밀번호 정책 옵션
        • 비밀번호의 최소 길이
        • 특정 유형의 글자 사용 요구(대문자, 소문자, 숫자, 특수 문자 등)
      • IAM user들의 비밀번호 변경을 허용 또는 금지할 수 있다.
      • 일정 기간이 지나면 비밀번호를 만료시켜 새 비밀번호 설정을 요구한다.
      • 비밀번호의 재사용을 막아 비밀번호 변경 시에 동일한 비밀번호나 이전에 사용했던 비밀번호를 사용하지 못하게 할 수 있다.
    • Multi Factor Authentication(MFA)
      • 사용자가 계정에 접근 권한이 있고 많은 작업을 할 수 있다.
      • Root Account는 반드시 보호해야 하며 전체 IAM 사용자들도 보호해야 한다.
      • MFA 장치 사용
        • Virtual MFA device
          • Google Authenticator
          • Authy
        • Universal 2nd Factor (U2F) 보안 키
          • Hardware Key Fob MFA Device

IAM Role

  • IAM Role은 User와 같지만 실제 사람이 사용하도록 만들어진 것이 아닌 AWS 서비스에 의해 사용되도록 만들어짐
  • 예를들어 EC2 인스턴스를 만들고 해당 인스턴스에서 AWS에 있는 어떤 정보에 접근하려고 할 때 IAM Role을 사용하여 접근할 수 있다.
  • 주요 Role
    • EC2 Instance Roles
    • Lambda Function Roles

IAM Security Tools

  • IAM 자격 증명 보고서를 만들 수 이싿.
    • 계정 수준에서 가능
    • 계정에 있는 사용자와 다양한 자격 증명의 상태를 포함한다.
  • IAM 액세스 관리자
    • 사용자 수준에서 가능
    • 사용자에게 부여된 서비스의 권한과 해당 서비스에 마지막으로 액세스한 시간이 보인다.

IAM 가이드라인 & 모범 사례

  • Root Account는 AWS 계정을 설정할 때를 제외하고 사용하지 말아라
  • 하나의 AWS 사용자는 한 명의 실제 사용자를 의미하게 하라
  • 사용자를 그룹에 넣어 해당 그룹에 권한을 부여하라
  • 비밀번호 정책을 강력하게 만들어라
  • IAM Role을 만들고 사용해야 한다.
  • CLI나 SDK를 사용할 경우 반드시 액세스 키를 만들어야 한다.
  • 계정의 권한을 감사할 때는 IAM 자격 증명 보고서와 IAM 액세스 분석기를 사용하라.
  • 마지막으로 절대로 IAM 사용자와 액세스 키를 공유하지 말아라.