설명
IAM 사용자의 iam:AttachGroupPolicy 권한이 지나치게 넓으면 그룹에 강한 관리형 정책을 연결해 구성원의 권한을 바꿀 수 있습니다. 자신이 속한 그룹에 연결할 수 있다면 자신의 권한도 확대될 수 있습니다.
대상은 같은 계정의 IAM 그룹입니다. 그룹에 정책을 연결하는 권한만으로 그룹 구성원을 바꾸거나 다른 AWS 계정을 관리할 수 있는 것은 아닙니다.
잠재적 영향
- 한 사용자의 잘못된 연결이 여러 그룹 구성원의 권한을 확대할 수 있습니다.
- 승인되지 않은 고권한 정책은 리소스 접근과 변경 위험을 키울 수 있습니다.
해결 방법
불필요한 iam:AttachGroupPolicy 권한을 제거하고 관리 작업을 승인된 역할로 분리하세요. 필요한 경우 대상 그룹 ARN을 Resource에 지정하고 iam:PolicyARN 조건으로 연결할 정책을 제한하세요. 구성원과 다른 권한 제한을 확인하며 정상 작업과 미승인 연결 거부를 시험하세요.
예시
같은 사용자와 인라인 정책을 변경하는 비교입니다. 별도 정책 연결 리소스는 이 인라인 허용에 필요하지 않습니다.
변경 전
hcl
resource "aws_iam_user" "example" {
name = "cosmic"
}
resource "aws_iam_user_policy" "example" {
name = "test_inline_policy"
user = aws_iam_user.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"iam:AttachGroupPolicy",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
사용자에게 전체 그룹을 대상으로 관리형 정책을 연결할 수 있는 권한을 줍니다.
변경 후
hcl
resource "aws_iam_user" "example" {
name = "cosmic"
}
resource "aws_iam_user_policy" "example" {
name = "test_inline_policy"
user = aws_iam_user.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
이 허용문을 EC2 조회 작업으로 바꿉니다. 다른 정책에서 같은 연결 권한을 받는지도 확인하세요.