설명
역할 신뢰 정책의 arn:aws:iam::123456789012:root 같은 계정 ARN은 해당 계정에 대한 위임이며 루트 사용자만을 뜻하지 않습니다. 계정 관리자는 필요한 권한을 가진 사용자나 역할에 접근을 위임할 수 있습니다. 이것이 모든 AWS 계정이나 모든 사용자의 무조건적인 수임을 뜻하지는 않습니다.
특정 역할만 신뢰하려는 경우에는 그 역할 ARN과 필요한 조건으로 제한하세요. IAM 관리형 정책에는 Principal을 사용할 수 없으므로, 작업 권한 정책과 역할 신뢰 정책을 구분해야 합니다.
잠재적 영향
- 계정 단위 위임이 의도보다 넓으면 해당 계정의 권한 변경에 따라 역할을 사용할 수 있는 주체가 늘어날 수 있습니다.
- 역할 권한이 과도하면 잘못된 위임이나 자격 증명 악용의 영향이 커질 수 있습니다.
해결 방법
- 계정 단위 위임이 필요한지 확인하고, 특정 주체만 필요하면 신뢰 정책의
Principal에 승인된 역할 ARN을 지정하세요. - 교차 계정 호출 권한과 신뢰 조건을 함께 검토하고 역할의 작업 권한도 최소화하세요. 계정 위임 자체가 항상 잘못된 것은 아니므로 실제 운영 목적을 기준으로 판단하세요.
- 불필요한 신뢰 관계를 제거한 뒤 필요한 역할 수임은 성공하고 승인하지 않은 요청은 거부되는지 시험하세요.
예시
첫 예시는 관리형 정책에 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
이 신뢰 문은 지정한 역할만 대상으로 합니다. 다른 신뢰 문과 호출자 권한도 함께 확인하세요.