IAM 政策範例 - AWS Key Management Service

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

IAM 政策範例

在本節中,您可以找到允許各種 AWS KMS 動作之許可的 IAM 政策範例。

重要

以下政策中的一些許可僅在 KMS 金鑰的金鑰政策也允許時,才會獲得允許。如需詳細資訊,請參閱 許可參考

如需撰寫及格式化 JSON 政策文件的說明,請參閱《IAM 使用者指南》中的 IAM JSON 政策參考

允許使用者檢視 AWS KMS 主控台中的 KMS 金鑰

以下 IAM 政策允許使用者唯讀存取 AWS KMS 主控台。具有這些許可的使用者可以檢視其 AWS 帳戶 中的所有 KMS 金鑰,但它們無法建立或變更任何 KMS 金鑰。

若要檢視AWS 受管金鑰客戶受管金鑰頁面上的 KMS 金鑰,主體需要 kms: ListKeys 、kms: ListAliasestag: GetResources 權限,即使金鑰沒有標籤或別名也一樣。若要在 KMS 金鑰詳細資料頁面上檢視選用的 KMS 金鑰資料表欄和資料DescribeKey,則需要其餘權限,特別是 kms:。需要 iam: ListUsersiam: ListRoles 許可才能在默認視圖中顯示密鑰策略而不會出現錯誤。若要檢視 [自訂金鑰存放區] 頁面上的資料以及自訂金鑰存放區中 KMS 金鑰的詳細資料,主體也需要 kms: DescribeCustomKeyStores 權限。

如果您限制對特定 KMS 金鑰的使用者主控台存取,則主控台會針對不可見的每個 KMS 金鑰顯示錯誤。

此政策包含兩個政策陳述式。第一個政策陳述式中的 Resource 元素允許範例 AWS 帳戶 所有區域中所有 KMS 金鑰上的指定許可。主控台檢視器不需要額外的存取權,因為 AWS KMS 主控台只會顯示主體帳戶中的 KMS 金鑰。即使他們有在其他 AWS 帳戶 中檢視 KMS 金鑰的許可,亦是如此。其餘 AWS KMS 和 IAM 許可需要 "Resource": "*" 元素,因為其不適用於任何特定的 KMS 金鑰。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyAccessForAllKMSKeysInAccount", "Effect": "Allow", "Action": [ "kms:GetPublicKey", "kms:GetKeyRotationStatus", "kms:GetKeyPolicy", "kms:DescribeKey", "kms:ListKeyPolicies", "kms:ListResourceTags", "tag:GetResources" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "ReadOnlyAccessForOperationsWithNoKMSKey", "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "iam:ListRoles", "iam:ListUsers" ], "Resource": "*" } ] }

允許使用者建立 KMS 金鑰

下列 IAM 政策可讓使用者建立各類型的 KMS 金鑰。Resource 元素的值是 *,因為 CreateKey 操作不會使用任何特定 AWS KMS 資源 (KMS 金鑰或別名)。

若要限制使用者使用特定類型的 KMS 鑰,請使用 kms: KeyUsage、kms: 和 kms: KeyOrigin 條件金鑰。KeySpec

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" } }

建立金鑰的主體可能需要一些相關許可。

  • kms:PutKeyPolicy— 具有kms:CreateKey權限的主體可以設定 KMS 金鑰的初始金鑰原則。不過,CreateKey呼叫者必須具有 kms: PutKeyPolicy 權限,這可讓他們變更 KMS 金鑰原則,或者必須指定的BypassPolicyLockoutSafetyCheck參數CreateKey,不建議這麼做。CreateKey 呼叫者可以從 IAM 政策為 KMS 金鑰取得 kms:PutKeyPolicy 許可,或者其可以在所建立之 KMS 金鑰的金鑰政策中包含此許可。

  • kms:TagResource— 若要在CreateKey作業期間將標籤新增至 KMS 金鑰,CreateKey呼叫者必須在 IAM 政策中具有 kms: TagResource 權限。在新 KMS 金鑰的金鑰政策中包含此許可並不足夠。但是,如果 CreateKey 呼叫者在初始金鑰政策中包含 kms:TagResource,則他們可以在建立 KMS 金鑰之後,在個別呼叫中新增標籤。

  • kms:CreateAlias— 在主控台中建立 KMS 金鑰的AWS KMS主體必須具有 kms:K MS 金鑰和別名的CreateAlias權限。(主控台進行兩個呼叫;一個至 CreateKey 和一個至 CreateAlias)。您必須在 IAM 政策中提供別名許可。您可以在金鑰政策、IAM 政策中提供 KMS 金鑰許可。如需詳細資訊,請參閱 控制對別名的存取

除了 kms:CreateKey,下列 IAM 政策提供針對 AWS 帳戶 中所有 KMS 金鑰的 kms:TagResource 許可,以及針對該帳戶中所有別名的 kms:CreateAlias 許可。其中還包含一些只能在 IAM 政策中提供的有用唯讀許可。

此 IAM 政策並不包括 kms:PutKeyPolicy 許可或可在金鑰政策中設定的任何其他許可。最佳實務是在金鑰政策中設定這些許可,在其中它們會專門套用至一個 KMS 金鑰。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPermissionsForParticularKMSKeys", "Effect": "Allow", "Action": "kms:TagResource", "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPermissionsForParticularAliases", "Effect": "Allow", "Action": "kms:CreateAlias", "Resource": "arn:aws:kms:*:111122223333:alias/*" }, { "Sid": "IAMPermissionsForAllKMSKeys", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } ] }

允許使用者使用特定 AWS 帳戶 中的任何 KMS 金鑰來加密和解密

下列 IAM 政策可讓使用者使用 AWS 帳戶 111122223333 的任何 KMS 金鑰來加密和解密資料。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } }

允許使用者使用特定 AWS 帳戶 和區域中的任何 KMS 金鑰來加密和解密

下列 IAM 政策可讓使用者使用美國西部 (奧勒岡)區域 AWS 帳戶 111122223333 中的任何 KMS 金鑰來加密和解密資料。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/*" ] } }

允許使用者使用特定 KMS 金鑰來加密和解密

以下 IAM 政策允許使用者使用 Resource 元素中指定的兩個 KMS 金鑰來加密和解密資料。若要在 IAM 政策陳述式中指定 KMS 金鑰,您必須使用 KMS 金鑰的金鑰 ARN

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ] } }

防止使用者停用或刪除任何 KMS 金鑰

以下 IAM 政策能防止使用者停用或刪除任何 KMS 金鑰,即使另一個 IAM 政策或金鑰政策允許這些許可。明確拒絕許可的政策會覆寫所有其他政策,即使那些政策明確允許相同的許可。如需更多詳細資訊,請參閱 對金鑰存取進行故障診斷

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:DisableKey", "kms:ScheduleKeyDeletion" ], "Resource": "*" } }