설명
역할에 광범위한 iam:AttachRolePolicy를 허용하면 해당 역할을 사용하는 주체가 자신이 사용하는 역할이나 다른 역할에 강한 관리형 정책을 연결할 수 있습니다. 허용 범위와 사용 가능한 역할에 따라 권한이 확대될 수 있습니다.
정책을 연결해도 명시적 거부, 권한 경계와 조직 정책을 자동으로 우회하지는 않습니다. 다른 역할을 사용하려면 그 역할의 신뢰와 호출 권한도 충족해야 합니다.
잠재적 영향
- 사용 중인 역할에 불필요한 관리 권한이 추가될 수 있습니다.
- 공유 역할의 권한 변경은 여러 서비스와 사용자 세션에 영향을 줄 수 있습니다.
해결 방법
필요하지 않은 iam:AttachRolePolicy를 제거하세요. 관리가 필요한 경우 Resource의 대상 역할 ARN과 iam:PolicyARN 조건의 승인된 정책으로 제한하세요. 자기 역할의 권한 변경 가능성과 다른 제한을 검토하고 정상 관리 작업과 미승인 연결 거부를 확인하세요.
예시
같은 역할의 인라인 정책을 변경하는 발췌입니다. 생략된 역할 신뢰 정책은 실제 배포 구성에 별도로 포함하세요.
변경 전
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:AttachRolePolicy",
]
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 조회로 바꾸며 역할 자체의 식별자는 유지합니다. 다른 경로로 받은 정책 연결 권한도 검토하세요.