설명
iam:AttachGroupPolicy를 가진 역할은 허용된 IAM 그룹에 관리형 정책을 연결해 그 구성원인 사용자의 권한을 확대할 수 있습니다. IAM 역할은 그룹 구성원이 아니므로 이 작업 자체가 호출 역할의 권한을 직접 높이지는 않습니다.
강한 정책을 연결할 수 있는 대상 그룹과 사용자를 함께 검토하세요. 명시적 거부와 권한 경계 등은 연결 후에도 적용됩니다.
잠재적 영향
- 자동화나 서비스 역할이 여러 사용자의 권한을 의도치 않게 바꿀 수 있습니다.
- 확대된 사용자 권한이 악용되면 정보 유출이나 리소스 변경 위험이 커질 수 있습니다.
해결 방법
역할에 필요하지 않은 iam:AttachGroupPolicy를 제거하세요. 필요한 관리 작업은 Resource의 그룹 ARN과 iam:PolicyARN 조건의 승인된 정책 ARN으로 제한하세요. 그룹 구성원과 변경 로그를 검토하고 정상 관리 작업과 미승인 연결 거부를 시험하세요.
예시
같은 역할과 인라인 정책의 발췌입니다. 역할의 신뢰 정책은 생략했으므로 실제 구성에서 별도로 정의하세요.
변경 전
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "test_inline_policy"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"iam:AttachGroupPolicy",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
이 역할을 사용하는 주체에게 전체 그룹의 정책 연결 권한을 허용합니다.
변경 후
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "test_inline_policy"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
이 허용문에는 EC2 조회만 남깁니다. 역할의 다른 권한도 검토해야 하며, 이 예제가 전체 역할 구성을 대신하지는 않습니다.