😊

KMSのデフォルトのキーポリシーの内容について

2024/01/19に公開

KMSのデフォルトのキーポリシーの内容について

KMSのデフォルトのキーポリシー(KMSにてカスタマー管理型のキーを作成する際、「キー管理者」および「キーユーザー」に何も設定せずにキーを作成した場合のキーポリシー)における「arn:aws:iam::account-id:root」の解釈について調査したため、まとめます。

デフォルトのキーポリシー

デフォルトのキーポリシーです。このポリシーによって許可されている範囲を本記事でまとめています。
https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/key-policy-default.html#key-policy-default-allow-root-enable-iam

{
    "Id": "key-consolepolicy-3",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}

背景

ポリシーにrootとあるため、アカウント(111122223333)のルートユーザーのすべてのKMSに対するすべてのアクションを許可するポリシーだと考えていました。

しかしながら、マネージドポリシー「AdministratorAccess」がアタッチされたルートユーザー以外のユーザーであっても当該KMSキーの削除アクションができるため、このrootはルートユーザーのことを示しておらず、他の意味を持っていると考えました。

結論

このデフォルトのキーポリシーは、アカウント内の(111122223333)IAMプリンシパル(IAMユーザーやIAMロール等)に許可を与えるということを示すということが分かりました。

すなわち、KMSキーを操作するIAMプリンシパル(IAMユーザーやIAMロール等)にKMSに対する必要な権限が割り当てられていれば、ルートユーザー以外であっても、KMSに対するアクションが可能ということを指すということになります。

arn:aws:iam::111122223333:rootの解釈についてはこちらのドキュメントに記載されていました。

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts

AWS アカウント を指定するときは、アカウント ARN (arn:aws:iam::account-ID:root、または "AWS": プレフィックスの後に ID を付けた短縮形を使用できます。

キーポリシーにてルートユーザーにのみ許可を与えたい場合

では、実際にルートユーザーにのみ許可を与えるためのキーポリシーはどうなるのか。AWSの記事があったため紹介します。
https://repost.aws/ja/knowledge-center/kms-prevent-access

{
    "Sid": "EnableRootAccessAndPreventPermissionDelegation",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
    },
    "Action": "kms:*",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:PrincipalType": "Account"
        }
    }
}

まとめ

KMSのデフォルトのキーポリシーのrootの意味がわからなかったため、備忘録的に記載しました。
AWSのドキュメントを参考にしただけですが、この記事が誰かの参考になれば幸いです。

Discussion