설명
IAM 사용자의 iam:AttachUserPolicy 권한이 지나치게 넓으면 자신이나 다른 사용자에게 강한 관리형 정책을 연결할 수 있습니다. 연결과 이후 작업이 다른 제한으로 차단되지 않으면 권한 상승으로 이어질 수 있습니다.
정책 연결은 권한 경계, 조직 정책이나 명시적 거부를 자동으로 제거하지 않습니다. 실제 대상 사용자와 연결 가능한 정책을 함께 검토하세요.
잠재적 영향
- 사용자가 승인 없이 자신의 리소스 접근·변경 권한을 키울 수 있습니다.
- 다른 사용자의 권한을 확대해 자격 증명 오용 시 피해를 늘릴 수 있습니다.
해결 방법
불필요한 iam:AttachUserPolicy를 제거하고 관리 작업은 승인된 역할로 수행하세요. 필요한 경우 Resource에 대상 사용자 ARN을 지정하고 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:AttachUserPolicy",
]
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 조회만 남습니다. 다른 정책의 연결 권한과 불필요한 조회 권한도 함께 검토하세요.