설명
리소스 기반 정책의 허용문은 Principal로 권한을 받을 계정, 역할, 사용자 또는 서비스를 지정합니다. IAM 자격 증명 기반 정책에서는 연결된 자격 증명 자체가 주체이므로 Principal을 사용하지 않습니다.
잠재적 영향
필요한 주체가 빠진 리소스 정책은 유효하지 않거나 의도한 권한을 부여하지 못할 수 있습니다.
해결 방법
리소스 기반 허용문에 필요한 Principal을 지정하고 최소 범위로 제한하세요. IAM JSON의 키 이름은 Principal이며 Principals가 아닙니다.
예시
예시는 KMS 키 정책의 허용문 일부를 비교합니다. 실제 계정 ID와 사용자를 지정하고, 전체 정책에서는 키 정책을 관리할 권한도 유지해야 합니다.
변경 전
hcl
resource "aws_kms_key" "example" {
description = "KMS key + secure_policy"
deletion_window_in_days = 7
policy = <<EOF
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "Secure Policy",
"Effect": "Allow",
"Resource": "*",
"Action": [
"kms:Create*",
"kms:Describe*",
"kms:Enable*"
]
}
]
}
EOF
}
변경 후
hcl
resource "aws_kms_key" "example" {
description = "KMS key + secure_policy"
deletion_window_in_days = 7
policy = <<EOF
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "Secure Policy",
"Effect": "Allow",
"Resource": "*",
"Action": [
"kms:Create*",
"kms:Describe*",
"kms:Enable*"
],
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:user/user-name-1",
"arn:aws:iam::123456789012:user/UserName2"
]
}
}
]
}
EOF
}