【小ネタ】AWS KMS のキーポリシーが動作しない場合は Action や Resource も確認する
アノテーション・テクニカルサポートチームの hato です。
「送信元の VPC エンドポイントや IP アドレスで制限する KMS キーポリシーを設定したが、意図した通りに動作しない」という際に確認すべき点の小ネタです。
キーポリシーが動作しない場合は Action や Resource があるか確認する
現状の仕様として、キーポリシーに Action や Resource 要素がないキーポリシーも設定できます。
ただし、対象となる Action や Resource 要素が不足している場合は、そのポリシーステートメントは効果を発揮しません。
例えば、次のようなキーポリシーを設定すると、送信元 IP アドレスでアクセス制限ができるように見えますが、Action が設定されていないため、後半の Deny のポリシーステートメントは効果を発揮しません。
{
"Version": "2012-10-17",
"Id": "hato-key-consolepolicy",
"Statement": [
{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": [
"123456789012"
]
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Deny access from non-approved IP addresses",
"Effect": "Deny",
"Principal": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"192.0.2.0/24",
"203.0.113.0/24"
]
}
}
}
]
}
ポリシーエディタではエラーが表示される
AWS マネジメントコンソール(ポリシーエディタ)では Action や Resource 要素がないキーポリシーはエラーが表示されます。
キーポリシーが動作しないな?と思った場合は、ポリシーエディタでエラー等が発生していないかも確認ポイントです。
参考資料
必要な Action 要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。Action 要素のないキーポリシーステートメントは、どの KMS キーにも適用されません。
キーポリシーステートメントに Action要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても CreateKey および PutKeyPolicy APIs は成功します。
…(中略)…
必要な Resource 要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。Resource 要素のないキーポリシーステートメントは、どの KMS キーにも適用されません。
キーポリシーステートメントに Resource要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても CreateKey および PutKeyPolicy APIs は成功します。