【小ネタ】AWS KMS のキーポリシーが動作しない場合は Action や Resource も確認する

【小ネタ】AWS KMS のキーポリシーが動作しない場合は Action や Resource も確認する

KMS で Action や Resource がないキーポリシーも設定できますが、設定しない場合は効果を発揮しません
Clock Icon2025.05.02

アノテーション・テクニカルサポートチームの 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 要素がないキーポリシーはエラーが表示されます。
キーポリシーが動作しないな?と思った場合は、ポリシーエディタでエラー等が発生していないかも確認ポイントです。

AWS KMS Key Policy Troubleshooting Action Resource 1

参考資料

必要な Action 要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。Action 要素のないキーポリシーステートメントは、どの KMS キーにも適用されません。

キーポリシーステートメントに Action要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても CreateKey および PutKeyPolicy APIs は成功します。

…(中略)…

必要な Resource 要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。Resource 要素のないキーポリシーステートメントは、どの KMS キーにも適用されません。

キーポリシーステートメントに Resource要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても CreateKey および PutKeyPolicy APIs は成功します。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.