IAM 정책의 계정 단위 주체 점검

계정 단위의 IAM 주체 지정과 실제 역할 신뢰 범위를 검토하세요.

설명

역할 신뢰 정책의 arn:aws:iam::123456789012:root 같은 계정 ARN은 해당 계정에 대한 위임이며 루트 사용자만을 뜻하지 않습니다. 계정 관리자는 필요한 권한을 가진 사용자나 역할에 접근을 위임할 수 있습니다. 이것이 모든 AWS 계정이나 모든 사용자의 무조건적인 수임을 뜻하지는 않습니다.

특정 역할만 신뢰하려는 경우에는 그 역할 ARN과 필요한 조건으로 제한하세요. IAM 관리형 정책에는 Principal을 사용할 수 없으므로, 작업 권한 정책과 역할 신뢰 정책을 구분해야 합니다.

잠재적 영향

  • 계정 단위 위임이 의도보다 넓으면 해당 계정의 권한 변경에 따라 역할을 사용할 수 있는 주체가 늘어날 수 있습니다.
  • 역할 권한이 과도하면 잘못된 위임이나 자격 증명 악용의 영향이 커질 수 있습니다.

해결 방법

  1. 계정 단위 위임이 필요한지 확인하고, 특정 주체만 필요하면 신뢰 정책의 Principal에 승인된 역할 ARN을 지정하세요.
  2. 교차 계정 호출 권한과 신뢰 조건을 함께 검토하고 역할의 작업 권한도 최소화하세요. 계정 위임 자체가 항상 잘못된 것은 아니므로 실제 운영 목적을 기준으로 판단하세요.
  3. 불필요한 신뢰 관계를 제거한 뒤 필요한 역할 수임은 성공하고 승인하지 않은 요청은 거부되는지 시험하세요.

예시

첫 예시는 관리형 정책에 Principal을 넣었으므로 유효하지 않습니다. 두 번째는 특정 역할을 신뢰하는 올바른 정책 유형을 사용합니다. 계정과 역할 ARN을 실제 승인된 값으로 바꾸고 호출자 권한 및 대상 역할의 권한을 별도로 구성하세요.

변경 전

yaml
- name: IAM 정책 생성
  community.aws.iam_managed_policy:
    policy_name: ManagedPolicy
    policy:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action: logs:CreateLogGroup
          Resource: "*"
          Principal:
            AWS: arn:aws:iam::123456789012:root
    make_default: false
    state: present

이 구성은 유효한 역할 신뢰를 만들지 않습니다. 같은 계정 ARN을 신뢰 정책에서 사용하면 해당 계정에 대한 위임을 뜻합니다.

변경 후

yaml
- name: Configure trust for an approved role
  amazon.aws.iam_role:
    name: log-writer-target-role
    assume_role_policy_document: >
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {
              "AWS": "arn:aws:iam::123456789012:role/log-writer-role"
            }
          }
        ]
      }
    state: present

이 신뢰 문은 지정한 역할만 대상으로 합니다. 다른 신뢰 문과 호출자 권한도 함께 확인하세요.

참조