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

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

與加密磁碟區搭配使用的必要 AWS KMS 金鑰原則

Amazon EC2 Auto Scaling 使用服務連結角色將許可委派給其他 AWS 服務人。Amazon EC2 自動擴展服務連結角色是預先定義的,並包含 Amazon EC2 Auto Scaling 代表您呼叫其他角色所需 AWS 服務 的許可。預先定義的權限還包括對您的 AWS 受管金鑰. 不過,其不包括對客戶受管金鑰的存取權,該存取權允許您保有對這些金鑰的完整控制權。

本主題說明當您為 Amazon EBS 加密指定客戶受管金鑰時,如何設定啟動 Auto Scaling 執行個體所需的金鑰政策。

注意

Amazon EC2 Auto Scaling 不需要額外授權即可使用預設值 AWS 受管金鑰 來保護帳戶中的加密磁碟區。

概要

當 Amazon EC2 自動擴展啟動執行個體時,下列項目 AWS KMS keys 可用於 Amazon EBS 加密:

  • 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 EncryptDecryptReEncrypt*GenerateDataKey*、和DescribeKey作業的權限。

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

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

在下列每個範例中,必須取代的引數 (例如金鑰 ID 或服務連結角色的名稱) 會顯示為 user placeholder text。 在大多數情況下,您可以將服務連結角色的名稱取代為 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 使用您要在其中建立「 AWS 帳戶 Auto Scaling」群組的實際帳戶 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的。

    以下是一個示例創建授予CLI命令,它提供了在帳戶中命名的服務鏈接角色 AWSServiceRoleForAutoScaling 111122223333 在帳戶中使用客戶管理金鑰的權限 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策略允許帳號中的IAM身分識別 (使用者或角色) 111122223333 為帳戶中的客戶管理密鑰創建授權 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" } ] }

    如需有關為其他KMS金鑰建立授權的詳細資訊 AWS 帳戶,請參閱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 帳戶 存取權,且意外撤銷授予他們此權限的授權,則外部使用者將無法再存取其加密資料或用來加密其資料的金鑰。