搭配加密磁碟區使用的必要 AWS KMS 金鑰政策 - Amazon EC2 Auto Scaling

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

搭配加密磁碟區使用的必要 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

  • AWS 受管金鑰 – Amazon EBS 在您的帳戶中建立、擁有和管理的加密金鑰。這是新帳戶的預設加密金鑰。 AWS 受管金鑰 用於加密,除非您指定客戶受管金鑰。

  • 客戶受管金鑰 – 您建立、擁有和管理的自訂加密金鑰。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的建立金鑰

    注意:金鑰必須為對稱金鑰。Amazon EBS 不支援非對稱客戶受管金鑰。

您可以在建立會指定加密磁碟區的加密快照或啟動範本時,設定客戶受管金鑰,或依預設啟用加密。

設定金鑰政策

您的 KMS 金鑰必須具有金鑰政策,允許 Amazon EC2 Auto Scaling 使用透過客戶受管金鑰加密的 Amazon EBS 磁碟區來啟動執行個體。

請使用此頁面上的範例來設定金鑰政策,為客戶受管金鑰提供 Amazon EC2 Auto Scaling 存取權。您可以在建立金鑰時修改客戶受管金鑰的金鑰政策,或之後再修改。

您必須至少新增兩個政策陳述式到金鑰政策,該政策才能與 Amazon EC2 Auto Scaling 搭配運作。

  • 第一個陳述式允許 Principal 元素中指定的 IAM 身分直接使用客戶受管金鑰。它包含對金鑰執行 AWS KMS EncryptDecryptGenerateDataKey*ReEncrypt*DescribeKey操作的許可。

  • 第二個陳述式允許在 Principal元素中指定的 IAM 身分使用 CreateGrant操作來產生授予,將其自身許可的子集委派給與 AWS KMS 或其他主體整合 AWS 服務 的 。這允許其使用金鑰來代表您建立加密資源。

在您為金鑰政策新增政策陳述式時,請勿變更政策中任何現有的陳述式。

對於下列每個範例,必須取代的引數,例如金鑰 ID 或服務連結角色的名稱,都會顯示為使用者預留位置文字。在大多數情況下,您可以將服務連結角色的名稱取代為 Amazon EC2 Auto Scaling 服務連結角色的名稱。

如需詳細資訊,請參閱下列資源:

範例 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 群組不同,您必須使用搭配金鑰政策的授權,以便允許存取跨帳戶存取權金鑰。

必須依照下列順序完成兩個步驟:

  1. 首先,將以下兩個政策陳述式新增至客戶受管金鑰的金鑰政策。將範例 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": "*" }
  2. 然後,從您要建立 Auto Scaling 群組的所在帳戶建立授權以將相關許可委派給適當的服務連結角色。授權的 Grantee Principal 元素是適當服務連結角色的 ARN。key-id 為金鑰的 ARN。

    以下是 create-grant CLI 命令範例,此命令可對帳戶 111122223333 中名為 AWSServiceRoleForAutoScaling 的服務連結角色,提供在 444455556666 帳戶中使用客戶受管金鑰的許可。

    aws kms create-grant \ --region us-west-2 \ --key-id arn: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": "AllowCreationOfGrantForTheKMSKeyinExternalAccount444455556666", "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 帳戶 存取權,而且您不小心撤銷授予他們此許可的授予,外部使用者就無法再存取其加密資料或用來加密其資料的金鑰。