本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配加密磁碟區使用的必要 AWS KMS 金鑰政策
Amazon EC2 Auto Scaling 使用服務連結角色將許可委派給其他 AWS 服務。Amazon EC2 Auto Scaling 服務連結角色已預先定義,並包含 Amazon EC2 Auto Scaling AWS 服務 代表您呼叫其他 所需的許可。預先定義的許可也包括存取您的 AWS 受管金鑰。不過,其不包括對客戶受管金鑰的存取權,該存取權允許您保有對這些金鑰的完整控制權。
本主題介紹在為 Amazon EBS 加密指定客戶受管金鑰時,如何設定啟動 Auto Scaling 執行個體所需的金鑰政策。
注意
Amazon EC2 Auto Scaling 不需要額外的授權,就能使用預設的 AWS 受管金鑰 來保護帳戶中的加密磁碟區。
概要
當 Amazon EC2 Auto Scaling 啟動執行個體時, AWS KMS keys 以下可用於 Amazon EBS 加密: Amazon EC2
您可以在建立會指定加密磁碟區的加密快照或啟動範本時,設定客戶受管金鑰,或依預設啟用加密。
設定金鑰政策
您的 KMS 金鑰必須具有金鑰政策,允許 Amazon EC2 Auto Scaling 使用透過客戶受管金鑰加密的 Amazon EBS 磁碟區來啟動執行個體。
請使用此頁面上的範例來設定金鑰政策,為客戶受管金鑰提供 Amazon EC2 Auto Scaling 存取權。您可以在建立金鑰時修改客戶受管金鑰的金鑰政策,或之後再修改。
您必須至少新增兩個政策陳述式到金鑰政策,該政策才能與 Amazon EC2 Auto Scaling 搭配運作。
-
第一個陳述式允許
Principal
元素中指定的 IAM 身分直接使用客戶受管金鑰。它包含對金鑰執行 AWS KMSEncrypt
、Decrypt
、GenerateDataKey*
、ReEncrypt*
和DescribeKey
操作的許可。 -
第二個陳述式允許在
Principal
元素中指定的 IAM 身分使用CreateGrant
操作來產生授予,將其自身許可的子集委派給與 AWS KMS 或其他主體整合 AWS 服務 的 。這允許其使用金鑰來代表您建立加密資源。
在您為金鑰政策新增政策陳述式時,請勿變更政策中任何現有的陳述式。
對於下列每個範例,必須取代的引數,例如金鑰 ID 或服務連結角色的名稱,都會顯示為使用者預留位置文字
。在大多數情況下,您可以將服務連結角色的名稱取代為 Amazon EC2 Auto Scaling 服務連結角色的名稱。
如需詳細資訊,請參閱下列資源:
-
若要使用 建立金鑰 AWS CLI,請參閱 create-key
。 -
若要使用 更新金鑰政策 AWS CLI,請參閱 put-key-policy
。 -
若要尋找金鑰 ID 和 Amazon Resource Name (ARN),請參閱《AWS Key Management Service 開發人員指南》中的尋找金鑰 ID 和 ARN。
-
如需 Amazon EC2 Auto Scaling 服務連結角色的詳細資訊,請參閱 Amazon EC2 Auto Scaling 的服務連結角色。
-
如需有關 Amazon EBS 加密和 KMS 一般的資訊,請參閱《Amazon EBS 使用者指南》和》 開發人員指南》中的 Amazon EBS 加密。 AWS Key Management Service
範例 1:允許存取客戶受管金鑰的金鑰政策區段
請將以下兩個政策陳述式新增至客戶受管金鑰的金鑰政策,以將範例 ARN 取代為可存取金鑰的適當服務連結角色的 ARN。在此範例中,該政策區段會授予服務連結角色名為 AWSServiceRoleForAutoScaling 的許可,讓他們能夠使用客戶受管金鑰。
{ "Sid": "Allow service-linked role use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
account-id
:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
" ] }, "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::
account-id
:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
範例 2:允許跨帳戶存取客戶受管金鑰的金鑰政策區段
如果您建立的客戶受管金鑰所在帳戶與 Auto Scaling 群組不同,您必須使用搭配金鑰政策的授權,以便允許存取跨帳戶存取權金鑰。
必須依照下列順序完成兩個步驟:
-
首先,將以下兩個政策陳述式新增至客戶受管金鑰的金鑰政策。將範例 ARN 取代為另一個帳戶的 ARN,請務必將
111122223333
取代為您要建立 Auto Scaling 群組的 AWS 帳戶 的實際帳戶 ID。這允許您為特定帳戶中的 IAM 使用者或角色授予許可,以使用下文的 CLI 命令為金鑰建立授權。但是,這不會將任何使用者存取權提供給金鑰。{ "Sid": "Allow external account
111122223333
use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }{ "Sid": "Allow attachment of persistent resources in external account
111122223333
", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:root" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*" } -
然後,從您要建立 Auto Scaling 群組的所在帳戶建立授權以將相關許可委派給適當的服務連結角色。授權的
Grantee Principal
元素是適當服務連結角色的 ARN。key-id
為金鑰的 ARN。以下是 create-grant
CLI 命令範例,此命令可對帳戶 111122223333
中名為 AWSServiceRoleForAutoScaling 的服務連結角色,提供在444455556666
帳戶中使用客戶受管金鑰的許可。aws kms create-grant \ --region
us-west-2
\ --key-idarn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d
\ --grantee-principal arn:aws:iam::111122223333
:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
\ --operations "Encrypt" "Decrypt" "ReEncryptFrom" "ReEncryptTo" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "DescribeKey" "CreateGrant"若要讓此命令成功,提出請求的使用者必須有執行
CreateGrant
動作的許可。下列 IAM 政策範例允許帳戶
111122223333
中的 IAM 身分 (使用者或角色),為帳戶444455556666
中的客戶受管金鑰建立許可。{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreationOfGrantForTheKMSKeyinExternalAccount
444455556666
", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d
" } ] }如需在其他 AWS 帳戶中為 KMS 金鑰建立授權的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的「AWS KMS中的授權」。
重要
指定為承授者主體的服務連結角色名稱必須是現有角色的名稱。建立授與後,為確保授與允許 Amazon EC2 Auto Scaling 使用指定的 KMS 金鑰,請勿刪除和重新建立服務連結角色。
在 AWS KMS 主控台編輯金鑰政策
前幾節的範例僅顯示如何對金鑰政策新增陳述式,而這只是其中一個用來變更金鑰政策的方法。變更金鑰政策的最簡單方法是使用 AWS KMS 主控台的預設檢視來檢視金鑰政策,並將 IAM 身分 (使用者或角色) 設為適當金鑰政策的其中一個金鑰使用者。如需詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的使用 AWS Management Console 預設檢視。
重要
請務必謹慎進行。主控台的預設檢視政策陳述式包含對客戶受管金鑰執行 AWS KMS Revoke
操作的許可。如果您授予您帳戶中客戶受管金鑰的 AWS 帳戶 存取權,而且您不小心撤銷授予他們此許可的授予,外部使用者就無法再存取其加密資料或用來加密其資料的金鑰。