IAM ポリシーが AWS KMS の KMS キーへのアクセスをユーザーまたはロールに許可しないようにするにはどうすればよいですか?

最終更新日: 2021 年 2 月 17 日

AWS Identity and Access Management (IAM) アイデンティティ (ユーザー、グループ、ロール) によるアクセスから AWS KMS キーを保護したいと考えているのですが、デフォルトの KMS ポリシーは、IAM 許可を使用して KMS キーにアクセスすることをアカウント内の IAM アイデンティティに許可します。これを回避するにはどうすればよいですか?

簡単な説明

デフォルトの KMS キー IAM ポリシーには、以下のようなステートメントが含まれています。

{
    "Sid": "Enable IAM User Permissions",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
    },
    "Action": "kms:*",
    "Resource": "*"
}

この例では、EffectPrincipal 要素が AWS ルートユーザーアカウントを参照せず、Amazon リソースネーム (ARN) が、この IAM ポリシーを使用した KMS キーへのアクセスを許可します。必要な AWS Key Management Service (AWS KMS) 許可が IAM エンティティにアタッチされている場合は、AWS アカウント 111122223333 のすべてのプリンシパルに KMS キーに対するルートアクセス権があります。

解決方法

IAM エンティティが KMS キーにアクセスできないようにし、ルートユーザーアカウントが KMS キーを管理できるようにすることが可能です。これは、ルートユーザーアカウントが KMS キーへのアクセス権の失うことも防止します。

以下のように、同じアカウント内のキー管理者が KMS キーポリシーに含まれているようにしてください。

{
    "Sid": "Allow access for Key Administrators",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::111122223333:user/KMSAdminUser",
            "arn:aws:iam::111122223333:role/KMSAdminRole"
        ]
    },
    "Action": [
        "kms:Create*",
        "kms:Describe*",
        "kms:Enable*",
        "kms:List*",
        "kms:Put*",
        "kms:Update*",
        "kms:Revoke*",
        "kms:Disable*",
        "kms:Get*",
        "kms:Delete*",
        "kms:TagResource",
        "kms:UntagResource",
        "kms:ScheduleKeyDeletion",
        "kms:CancelKeyDeletion"
    ],
    "Resource": "*"
}

以下のように、KMS キー IAM ポリシー Sid を「EnableRootAccessAndPreventPermissionDelegation」に置き換え、Condition 要素を追加します。

重要: アカウント 111122223333 をお使いのアカウント番号に置き換え、条件キー aws:PrincipalTypeAccount に設定されていることを確認してください。

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

KMS キーポリシーの管理者セクションにリストされているアカウントルートユーザーと IAM エンティティのみが、キーを管理できます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?