本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
預設金鑰政策
建立KMS金鑰時,您可以指定新金鑰的KMS金鑰政策。如果您不提供 ,請為您 AWS KMS 建立 。 AWS KMS 使用的預設金鑰政策會因您在 AWS KMS 主控台中建立金鑰或使用 而有所不同 AWS KMS API。
以程式設計方式建立金鑰時的預設KMS金鑰政策
當您使用 以程式設計方式建立KMS金鑰 AWS KMS API(包括使用 AWS SDKs
當您使用 建立金鑰時的預設KMS金鑰政策 AWS Management Console
當您使用 建立KMS金鑰 AWS Management Console時,金鑰政策會從允許存取 AWS 帳戶 並啟用IAM政策 的政策陳述式開始。然後,主控台會新增金鑰管理員陳述式 、金鑰使用者陳述式 和 (適用於大多數金鑰類型) 陳述式,允許主體將KMS金鑰與其他 AWS 服務搭配使用。您可以使用 AWS KMS 主控台的功能來指定IAM使用者、 IAMroles和 AWS 帳戶 誰是金鑰管理員,以及誰是金鑰使用者 (或兩者)。
許可
允許存取 AWS 帳戶 並啟用IAM政策
以下預設金鑰政策陳述式至關重要。
-
它可讓 AWS 帳戶 擁有KMS金鑰的 完整存取KMS金鑰。
與其他 AWS 資源政策不同, AWS KMS 金鑰政策不會自動授予帳戶或其任何身分的許可。若要向帳戶管理員授予許可,金鑰政策必須包含提供此許可的明確陳述式。
-
它允許帳戶使用IAM政策來允許存取KMS金鑰,以及金鑰政策。
沒有此許可,允許存取金鑰IAM的政策是無效的,但拒絕存取金鑰IAM的政策仍然有效。
-
它透過向帳戶管理員 (包括帳戶根使用者) 授予無法刪除存取控制許可,來降低金鑰變得無法管理的風險。
下列金鑰政策陳述式是以程式設計方式建立之金鑰的整個預設KMS金鑰政策。這是 AWS KMS 主控台中建立之金鑰的預設KMS金鑰政策中的第一個政策陳述式。
{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Action": "kms:*", "Resource": "*" }
- 允許IAM政策允許存取 KMS金鑰。
-
上述金鑰政策陳述式提供擁有金鑰許可 AWS 帳戶 的 ,以使用IAM政策以及金鑰政策,以允許KMS金鑰上的所有動作 (
kms:*
)。此金鑰政策陳述式中的主體是帳戶主體 ,並以ARN此格式表示:
arn:aws:iam::
。帳戶主體代表 AWS 帳戶及其管理員。account-id
:root當金鑰政策陳述式中的主體是帳戶主體時,政策陳述式不會授予任何IAM主體使用KMS金鑰的許可。相反地,它允許帳戶使用IAM政策來委派政策陳述式中指定的許可。此預設金鑰政策陳述式可讓帳戶使用IAM政策來委派KMS金鑰上所有動作 (
kms:*
) 的許可。 - 降低KMS金鑰變得無法管理的風險。
-
與其他 AWS 資源政策不同, AWS KMS 金鑰政策不會自動將許可授予帳戶或其任何主體。向包括帳戶主體在內的任何主體授予許可,必須使用明確授予許可的金鑰政策陳述式。您不需要授予帳戶主體或任何主體存取KMS金鑰的權限。然而,向帳戶主體授予存取許可,能夠幫助您防止金鑰變得無法管理。
例如,假設您建立的金鑰政策僅提供單一使用者存取KMS金鑰的權限。如果您接著刪除該使用者,則金鑰會變成無法管理,您必須聯絡 AWS 支援
,才能重新取得KMS金鑰的存取權。 上述金鑰政策陳述式授予許可,以控制帳戶主體 的金鑰,其代表 AWS 帳戶 及其管理員,包括帳戶根使用者 。帳戶根使用者是唯一不能刪除的主體,除非您刪除 AWS 帳戶。IAM 最佳實務不鼓勵代表帳戶根使用者行事,除非是緊急情況。不過,如果您刪除具有KMS金鑰存取權的所有其他使用者和角色,您可能需要擔任帳戶根使用者。
允許金鑰管理員管理KMS金鑰
主控台建立的預設金鑰政策可讓您選擇帳戶中IAM的使用者和角色,並讓他們成為金鑰管理員。此陳述式稱為金鑰管理員陳述式。金鑰管理員具有管理KMS金鑰的許可,但沒有在密碼編譯操作 中使用KMS金鑰的許可。您可以在預設檢視或政策檢視中建立KMS金鑰時,將IAM使用者和角色新增至金鑰管理員清單。
警告
由於金鑰管理員具有變更金鑰政策並建立授予的許可,因此他們可以授予自己和此政策中未指定的其他 AWS KMS 許可。
有權管理標籤和別名的主體也可以控制對KMS金鑰的存取。如需詳細資訊,請參閱 ABAC 適用於 AWS KMS。
注意
IAM 最佳實務會阻止使用具有長期憑證IAM的使用者。盡可能使用角色IAM,提供臨時憑證。如需詳細資訊,請參閱 IAM 使用者指南 中的安全最佳實務IAM。
以下範例顯示 AWS KMS 主控台之預設檢視中的金鑰管理員陳述式。
以下是 AWS KMS 主控台之政策檢視中的範例金鑰管理員陳述式。此金鑰管理員陳述式適用於單一區域對稱加密KMS金鑰。
{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS":"arn:aws:iam::
111122223333
:role/ExampleAdminRole
"}, "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", "kms:RotateKeyOnDemand" ], "Resource": "*" }
最常見金鑰的預設KMS金鑰管理員陳述式,即單一區域對稱加密KMS金鑰,允許下列許可。如需有關每個許可的詳細資訊,請參閱 AWS KMS 許可。
當您使用 AWS KMS 主控台建立KMS金鑰時,主控台會將您指定的使用者和角色新增至金鑰管理員陳述式中的 Principal
元素。
這些許可中有許多都包含萬用字元 (*
),允許以指定動詞開頭的所有許可。因此,當 AWS KMS 新增操作時,會自動允許金鑰管理員使用這些API操作。您不需要更新您的主要政策,即可包含新的操作。如果您想要將金鑰管理員限制為一組固定API的操作,您可以變更金鑰政策 。
kms:Create*
-
允許 kms:CreateAlias 和 kms:CreateGrant。(
kms:CreateKey
許可僅在IAM政策中有效。) kms:Describe*
-
允許 kms:DescribeKey 需要
kms:DescribeKey
許可才能在 中檢視金鑰的KMS金鑰詳細資訊頁面 AWS Management Console。 kms:Enable*
-
允許 kms:EnableKey 對於對稱加密KMS金鑰,它也允許 kms:EnableKeyRotation。
kms:List*
-
允許 kms:ListGrants、
kms:ListKeyPolicies
和 kms:ListResourceTags。(在 中檢視KMS金鑰所需的kms:ListAliases
和kms:ListKeys
許可僅在 IAM 政策中 AWS Management Console有效。) kms:Put*
-
允許
kms:PutKeyPolicy
此許可允許金鑰管理員變更此金鑰的KMS金鑰政策。 kms:Update*
-
允許 kms:UpdateAlias 和
kms:UpdateKeyDescription
。對於多區域金鑰,它允許在此KMS金鑰kms:UpdatePrimaryRegion上。 kms:Revoke*
-
允許 kms:RevokeGrant,它允許金鑰管理員刪除授權,即使他們不是授權中的淘汰主體。
kms:Disable*
-
允許 kms:DisableKey 對於對稱加密KMS金鑰,它也允許 kms:DisableKeyRotation。
kms:Get*
-
允許 kms:GetKeyPolicy 和 kms:GetKeyRotationStatus。對於具有匯入KMS金鑰材料的金鑰,它允許
kms:GetParametersForImport
。對於非對稱KMS金鑰,它允許kms:GetPublicKey
。需要kms:GetKeyPolicy
許可才能在 中檢視金鑰的KMS金鑰政策 AWS Management Console。 kms:Delete*
-
允許 kms:DeleteAlias 對於具有匯入金鑰材料的金鑰,它允許 kms:DeleteImportedKeyMaterial。
kms:Delete*
許可不允許金鑰管理員刪除KMS金鑰 (ScheduleKeyDeletion
)。 kms:TagResource
-
允許 kms:TagResource,這可讓金鑰管理員將標籤新增至KMS金鑰。由於標籤也可以用來控制對KMS金鑰的存取,因此此許可可讓管理員允許或拒絕對KMS金鑰的存取。如需詳細資訊,請參閱 ABAC 適用於 AWS KMS。
kms:UntagResource
-
允許 kms:UntagResource,這可讓金鑰管理員從KMS金鑰中刪除標籤。由於標籤可用來控制對金鑰的存取,因此此許可可讓管理員允許或拒絕對KMS金鑰的存取。如需詳細資訊,請參閱 ABAC 適用於 AWS KMS。
kms:ScheduleKeyDeletion
-
允許
kms:ScheduleKeyDeletion
,這允許金鑰管理員刪除此KMS金鑰 。若要刪除此許可,請清除 Allow key administrators to delete this key (允許金鑰管理員刪除此金鑰) 選項。 kms:CancelKeyDeletion
-
允許
kms:CancelKeyDeletion
,這允許金鑰管理員取消刪除此KMS金鑰 。若要刪除此許可,請清除 Allow key administrators to delete this key (允許金鑰管理員刪除此金鑰) 選項。 kms:RotateKeyOnDemand
-
允許
kms:RotateKeyOnDemand
,這允許金鑰管理員執行此KMS金鑰 中金鑰材料的隨需輪換。
AWS KMS 當您建立特殊用途金鑰時, 會將下列許可新增至預設金鑰管理員陳述式。
kms:ImportKeyMaterial
-
kms:ImportKeyMaterial
許可允許金鑰管理員將金鑰材料匯入KMS金鑰。只有在您建立不含金鑰材料 的KMS金鑰時,金鑰政策才會包含此許可。 kms:ReplicateKey
-
kms:ReplicateKey
許可允許金鑰管理員在不同區域中建立多區域主要金鑰的複本。 AWS 只有當您建立多區域主要金鑰或複本金鑰時,此許可才會包含在金鑰政策中。 kms:UpdatePrimaryRegion
-
kms:UpdatePrimaryRegion
許可允許金鑰管理員將多區域複本金鑰變更為多區域主要金鑰。只有當您建立多區域主要金鑰或複本金鑰時,此許可才會包含在金鑰政策中。
允許金鑰使用者使用KMS金鑰
主控台為金鑰建立的預設KMS金鑰政策可讓您選擇帳戶中IAM的使用者和IAM角色,以及外部 AWS 帳戶,並使其成為金鑰使用者 。
主控台會將兩個政策陳述式新增至金鑰使用者的金鑰政策。
-
直接使用KMS金鑰 — 第一個金鑰政策陳述式提供金鑰使用者許可,以針對該類型KMS金鑰的所有支援密碼編譯操作直接使用KMS金鑰。
-
將KMS金鑰與 AWS 服務搭配使用 — 第二個政策陳述式提供金鑰使用者許可,允許與 整合 AWS 的服務代表他們 AWS KMS 使用KMS金鑰來保護 資源,例如 Amazon S3 儲存貯體和 Amazon DynamoDB 資料表。
您可以在建立KMS金鑰時 AWS 帳戶 ,將IAM使用者、IAM角色和其他 新增至金鑰使用者清單中。您也可以使用主控台的金鑰政策預設檢視來編輯清單,如下圖所示。金鑰政策的預設檢視位於金鑰詳細資訊頁面。如需允許其他 中的使用者 AWS 帳戶 使用 KMS金鑰的詳細資訊,請參閱 允許其他帳戶中的使用者使用KMS金鑰。
注意
IAM 最佳實務會阻止使用具有長期憑證IAM的使用者。盡可能使用角色IAM,提供臨時憑證。如需詳細資訊,請參閱 IAM 使用者指南 中的安全最佳實務IAM。
單一區域對稱的預設金鑰使用者陳述式允許下列許可。如需有關每個許可的詳細資訊,請參閱 AWS KMS 許可。
當您使用 AWS KMS 主控台建立KMS金鑰時,主控台會將您指定的使用者和角色新增至每個金鑰使用者陳述式中的 Principal
元素。
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::
111122223333
:role/ExampleRole
", "arn:aws:iam::444455556666
:root" ]}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333
:role/ExampleRole
", "arn:aws:iam::444455556666
:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} }
允許金鑰使用者使用KMS金鑰進行密碼編譯操作
金鑰使用者具有許可,可在KMS金鑰支援的所有密碼編譯操作中直接使用KMS金鑰。他們也可以使用 DescribeKey 操作,在 AWS KMS 主控台中或使用 AWS KMS API操作來取得有關KMS金鑰的詳細資訊。
根據預設, AWS KMS 主控台會將下列範例中的金鑰使用者陳述式新增至預設金鑰政策。由於它們支援不同的API操作,因此對稱加密KMS金鑰、HMACKMS金鑰、公有金鑰加密的非對稱KMS金鑰和用於簽署和驗證的非對稱KMS金鑰的政策陳述式中的動作略有不同。
- 對稱加密KMS金鑰
-
主控台會將下列陳述式新增至對稱加密金鑰的KMS金鑰政策。
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/
ExampleKeyUserRole
"}, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*" ], "Resource": "*" } - HMAC KMS 金鑰
-
主控台會將下列陳述式新增至金鑰的HMACKMS金鑰政策。
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/
ExampleKeyUserRole
"}, "Action": [ "kms:DescribeKey", "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*" } - 公有KMS金鑰加密的非對稱金鑰
-
主控台會將下列陳述式新增至非對稱KMS金鑰的金鑰政策,其金鑰用量為 加密和解密 。
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/
ExampleKeyUserRole
" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey", "kms:GetPublicKey" ], "Resource": "*" } - 用於簽署和驗證的非對稱KMS金鑰
-
主控台會將下列陳述式新增至非對稱KMS金鑰的金鑰政策,其金鑰用量為 Sign and Verify 。
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/
ExampleKeyUserRole
"}, "Action": [ "kms:DescribeKey", "kms:GetPublicKey", "kms:Sign", "kms:Verify" ], "Resource": "*" } - 用於衍生共用秘密的非對稱KMS金鑰
-
主控台會將下列陳述式新增至非對稱KMS金鑰的金鑰政策,其金鑰使用量為金鑰協議 。
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/
ExampleKeyUserRole
"}, "Action": [ "kms:DescribeKey", "kms:GetPublicKey", "kms:DeriveSharedSecret" ], "Resource": "*" }
這些陳述式中的動作會提供金鑰使用者下列許可。
kms:Encrypt
-
允許金鑰使用者使用此KMS金鑰加密資料。
kms:Decrypt
-
允許金鑰使用者使用此KMS金鑰解密資料。
kms:DeriveSharedSecret
-
允許金鑰使用者使用此KMS金鑰衍生共用秘密。
kms:DescribeKey
-
允許金鑰使用者取得此KMS金鑰的詳細資訊,包括其識別碼、建立日期和金鑰狀態。它還允許金鑰使用者在 AWS KMS 主控台中顯示有關KMS金鑰的詳細資訊。
kms:GenerateDataKey*
-
允許金鑰使用者為用戶端密碼編譯操作請求對稱資料金鑰或非對稱資料金鑰對。主控台使用 * 萬用字元來表示下列API操作的許可:GenerateDataKey、GenerateDataKeyPair、 GenerateDataKeyWithoutPlaintext和 GenerateDataKeyPairWithoutPlaintext。這些許可僅在加密資料KMS金鑰的對稱金鑰上有效。
- 公里:GenerateMac
-
允許金鑰使用者使用HMACKMS金鑰來產生HMAC標籤。
- 公里:GetPublicKey
-
允許金鑰使用者下載非對稱金鑰的公KMS有金鑰。與您共用此公有金鑰的各方可以加密 以外的資料 AWS KMS。不過,這些加密文字只能透過呼叫 AWS KMS中的 Decrypt 操作進行解密。
- 公里:ReEncrypt*
-
允許金鑰使用者重新加密最初用此KMS金鑰加密的資料,或使用此KMS金鑰重新加密先前加密的資料。ReEncrypt 操作需要同時存取來源和目的地KMS金鑰。若要達成此目的,您可以允許來源KMS金鑰的
kms:ReEncryptFrom
許可和目的地KMS金鑰的kms:ReEncryptTo
許可。不過,為了簡化,主控台允許kms:ReEncrypt*
(使用*
萬用字元) 兩個KMS金鑰。 - kms:Sign
-
允許金鑰使用者使用此KMS金鑰簽署訊息。
- kms:Verify
-
允許金鑰使用者使用此KMS金鑰驗證簽章。
- 公里:VerifyMac
-
允許金鑰使用者使用HMACKMS金鑰來驗證HMAC標籤。
允許金鑰使用者搭配 AWS 服務使用KMS金鑰
主控台中的預設金鑰政策也會為金鑰使用者提供所需的授予許可,以保護其使用 grant. AWS services AWS 的服務中的資料。 服務通常會使用 grant 來取得使用KMS金鑰的特定有限許可。
此金鑰政策陳述式允許金鑰使用者在KMS金鑰上建立、檢視和撤銷授予,但前提是授予操作請求來自AWS 與 整合的服務 AWS KMS
金鑰使用者需要這些授予許可,才能將其KMS金鑰與整合服務搭配使用,但這些許可不足。金鑰使用者也需要有許可才能使用整合服務。如需讓使用者存取與 整合 AWS 之服務的詳細資訊 AWS KMS,請參閱整合服務的文件。
{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/
ExampleKeyUserRole
"}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} }
例如,金鑰使用者可以透過下列方式在KMS金鑰上使用這些許可。
-
將此KMS金鑰與 Amazon Elastic Block Store (Amazon EBS) 和 Amazon Elastic Compute Cloud (Amazon EC2) 搭配使用,以將加密磁碟EBS區連接至EC2執行個體。金鑰使用者隱含地授予 Amazon 使用 KMS金鑰將加密磁碟區連接至執行個體的EC2許可。如需詳細資訊,請參閱Amazon Elastic Block Store (Amazon EBS) 如何使用 AWS KMS。
-
將此KMS金鑰與 Amazon Redshift 搭配使用,以啟動加密叢集。金鑰使用者隱含地授予 Amazon Redshift 許可,以使用 KMS金鑰啟動加密叢集並建立加密快照。如需詳細資訊,請參閱Amazon Redshift 如何使用 AWS KMS。
-
將此KMS金鑰與AWS 與 整合的其他 服務 AWS KMS搭配使用,該服務會使用 授予來建立、管理這些服務或使用加密資源。
預設金鑰政策允許金鑰使用者將其許可授予所有使用授權的整合服務。不過,您可以建立自訂金鑰政策,將許可限制為指定的 AWS 服務。如需詳細資訊,請參閱 公里:ViaService 條件金鑰。