檢查金鑰政策 - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

檢查金鑰政策

金鑰政策是控制對 KMS 金鑰之存取的主要方式。每個 KMS 金鑰只有一個金鑰政策。

當金鑰政策包含預設金鑰政策時,金鑰政策可讓帳戶中的 IAM 管理員使用 IAM 政策控制 KMS 金鑰的存取。此外,如果金鑰政策授權另一個 AWS 帳戶 使用 KMS 金鑰,則外部帳戶的 IAM 管理員可以使用 IAM 政策委派這些許可。請檢查 IAM 政策,以判斷可存取 KMS 金鑰之主體的完整清單。

若要檢視AWS KMS客戶管理金鑰或您帳戶AWS 受管金鑰中的金鑰政策,請使用 AWS KMS API 中的AWS Management Console或GetKeyPolicy作業。若要檢視金鑰政策,您必須具有 KMS 金鑰的 kms:GetKeyPolicy 許可。如需檢視 KMS 金鑰之金鑰政策的說明,請參閱 檢視金鑰政策

檢查金鑰政策文件並記下在各政策陳述式 Principal 元素中指定的所有主體。在具有 Allow 效用的政策陳述式中,IAM 使用者、IAM 角色以及 Principal 元素中的 AWS 帳戶 可以存取此 KMS 金鑰。

注意

除非採用條件來限制金鑰政策,否則請勿在任何允許許可的金鑰政策陳述式將主體設為星號 (*)。星號為每個 AWS 帳戶 許可提供每個身分來使用 KMS 金鑰,除非另一個政策陳述式明確拒絕。其他 AWS 帳戶 的使用者只要其本身帳戶有對應的許可,即可利用您的 KMS 金鑰。

以下範例使用預設金鑰政策中的政策陳述式來示範如何執行此操作。

範例 政策陳述式 1
{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }

在政策陳述式 1 中,arn:aws:iam::111122223333:rootAWS 帳戶主體,其指的是 AWS 帳戶 111122223333。(其不是帳戶根使用者。) 在預設情況下,當您使用 AWS Management Console 建立新的 KMS 金鑰,或者以程式設計方式建立新的 KMS 金鑰但不提供金鑰政策時,這類政策陳述式會包含在金鑰政策文件中。

具有允許 AWS 帳戶 存取權之陳述式的金鑰政策文件,會在帳戶中啟用 IAM 政策以允許存取 KMS 金鑰。這表示帳戶中的使用者和角色可能可以存取 KMS 金鑰,即使他們未在金鑰政策文件中被明確列為主體。仔細檢查所有列為主體之 AWS 帳戶 中的所有 IAM 政策,判斷其是否允許存取此 KMS 金鑰。

範例 政策陳述式 2
{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSKeyAdmins"}, "Action": [ "kms:Describe*", "kms:Put*", "kms:Create*", "kms:Update*", "kms:Enable*", "kms:Revoke*", "kms:List*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }

在政策聲明 2 中,arn:aws:iam::111122223333:role/KMSKeyAdmins指的是在 AWS 帳戶 111122223333 中名為 KMS KeyAdmins 的 IAM 角色。被授權擔任此角色的使用者可以執行政策陳述式中所列的動作,這些是用於管理 KMS 金鑰的管理動作。

範例 政策陳述式 3
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*" }

在政策聲明 3 中,arn:aws:iam::111122223333:role/EncryptionApp指的是在 AWS 帳戶 111122223333 EncryptionApp 中指定的 IAM 角色。被授權擔任此角色的主體可以執行政策陳述式中所列的動作,包括對稱加密 KMS 金鑰的密碼編譯操作

範例 政策陳述式 4
{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} }

在政策聲明 4 中,arn:aws:iam::111122223333:role/EncryptionApp指的是在 AWS 帳戶 111122223333 EncryptionApp 中指定的 IAM 角色。被授權擔任此角色的主體能夠執行政策陳述式中所列的動作。當這些動作結合範例政策陳述式 3 中允許的動作時,是委派 KMS 金鑰的使用給大部分與 AWS KMS 整合的 AWS 服務 (尤其是使用授予的服務) 的必要動作。「kms:Condition 元素中的GrantIsForAWSResource值可確保僅當委派是與授權整合AWS KMS並使用授權的AWS服務時,才允許委派。

若要了解在金鑰政策文件中指定主體的所有不同方法,請參閱《IAM 使用者指南》中的 Specifying a Principal (指定主體)。

若要進一步了解 AWS KMS 金鑰政策,請參閱中的主要政策 AWS KMS