在 IAM 政策陳述式中指定 KMS 金鑰 - AWS Key Management Service

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

在 IAM 政策陳述式中指定 KMS 金鑰

您可以使用 IAM 政策,允許主體使用或管理 KMS 金鑰。在政策陳述式的 Resource 元素中指定 KMS 金鑰。

  • 若要在 IAM 政策陳述式中指定 KMS 金鑰,您必須使用其金鑰 ARN。您不能使用金鑰 ID別名名稱別名 ARN 來識別 IAM 政策陳述式中的 KMS 金鑰。

    例如:"Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"

    若要根據其別名控制 KMS 金鑰的存取權,請使用 kms: RequestAliaskms: ResourceAliases 條件金鑰。如需詳細資訊,請參閱 AWS KMS 的 ABAC

    只有在控制別名作業 (例如、或 DeleteAlias) 存取的原則陳述式中,才使用別名 ARN 作為CreateAlias資源。UpdateAlias如需詳細資訊,請參閱 控制對別名的存取

  • 若要在帳戶和區域中指定多個 KMS 金鑰,請在金鑰 ARN 的區域或資源 ID 位置中使用萬用字元 (*)。

    例如,若要在帳戶的美國西部 (奧勒岡) 區域中指定所有 KMS 金鑰,請使用 "Resource": "arn:aws:kms:us-west-2:111122223333:key/*"。若要在帳戶的所有區域中指定所有 KMS 金鑰,請使用 "Resource": "arn:aws:kms:*:111122223333:key/*"。

  • 若要代表所有 KMS 金鑰,請單獨使用萬用字元 ("*")。對於不使用任何特定 KMS 金鑰 (亦即、、和) 的作業 CreateKeyGenerateRandomListAliases,請使用此格式ListKeys

在撰寫政策陳述式時,最佳實務是僅指定主體需要使用的 KMS 金鑰,而不是為其授予所有 KMS 金鑰的存取權。

例如,下列 IAM 政策陳述式允許主體呼叫政策陳述式Resource元素中列出的 KMS 金鑰解密作業。DescribeKeyGenerateDataKey透過金鑰 ARN 指定 KMS 金鑰 (這是最佳實務) 可確保許可僅限於指定的 KMS 金鑰。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "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 金鑰 AWS 帳戶,您可以在區域和金鑰 ID 位置使用萬用字元 (*)。例如,下列政策陳述式可讓主體在兩個可信任範例帳戶中的所有 KMS 金鑰上呼叫指定的操作。

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

您也可以在 Resource 元素中單獨使用萬用字元 ("*")。因為它允許存取帳戶具有使用許可的所有 KMS 金鑰,所以建議主要用於沒有特定 KMS 金鑰的操作,以及 Deny 陳述式。您也可以在只允許較不敏感之唯讀操作的政策陳述式中使用它。若要判斷 AWS KMS 作業是否涉及特定 KMS 金鑰,請在中的表格的 [資源] 欄中尋找 KMS 金鑰AWS KMS 權限

例如,下列政策陳述式使用 Deny 效果,以禁止主體在任何 KMS 金鑰上使用指定的操作。它使用 Resource 元素中的萬用字元來代表所有 KMS 金鑰。

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

下列政策陳述式僅使用萬用字元來代表所有 KMS 金鑰。但它只允許不太敏感的唯讀操作和不適用於任何特定 KMS 金鑰的操作。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:ListKeys", "kms:ListAliases", "kms:ListResourceTags" ], "Resource": "*" } }