使用 Data Lifecycle Manager 自動化跨帳戶快照複本 - Amazon EBS

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

使用 Data Lifecycle Manager 自動化跨帳戶快照複本

自動化跨帳戶快照複本可讓您將 Amazon EBS快照複製到隔離帳戶中的特定區域,並使用加密金鑰加密這些快照。這可讓您在帳戶遭到入侵時保護資料免於遺失。

自動化跨帳戶快照複本包含兩個帳戶:

  • 來源帳戶:來源帳戶是建立快照並與目標帳戶共用快照的帳戶。在此帳戶中,您必須建立EBS快照政策,以設定間隔建立快照,然後與其他 AWS 帳戶共用。

  • 目標帳戶:目標帳戶是與目的地帳戶共用快照的帳戶,也是建立共用快照複本的帳戶。在此帳戶中,您必須建立跨帳戶複本事件政策,該政策會自動複製由一或多個指定來源帳戶共用的快照。

建立跨帳戶快照複本政策

若要準備跨帳戶快照複本的來源和目標帳戶,您需要執行下列步驟:

主題

    在來源帳戶中,建立EBS快照政策,以建立快照並與所需的目標帳戶共用。

    建立政策時,請務必啟用跨帳戶共用,並指定要共用快照的目標 AWS 帳戶。這些是共用快照的帳戶。如果您要共用加密的快照,則必須授予選取的目標帳戶使用用來加密來源磁碟區的KMS金鑰的許可。如需詳細資訊,請參閱步驟 2:共享 受客戶管理的金鑰 (來源帳戶)

    注意

    您只能共享未加密或使用 受客戶管理的金鑰 加密的快照。您無法共用使用預設加密KMS金鑰EBS加密的快照。如果您共用加密的快照,則還必須共用用於與目標帳戶加密來源磁碟區的KMS金鑰。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南 中的允許其他帳戶中的使用者使用KMS金鑰

    如需建立EBS快照政策的詳細資訊,請參閱 建立EBS快照的 Amazon Data Lifecycle Manager 自訂政策

    使用下列其中一種方法來建立EBS快照政策。

    如果您要共用加密的快照,您必須授予IAM角色和目標 AWS 帳戶 (您在上一步中選取的) 許可,才能使用用來加密來源磁碟區的客戶受管金鑰。

    注意

    只有在共用加密快照時才執行此步驟。如果您共用的是未加密的快照,請略過此步驟。

    Console
    1. 開啟 AWS KMS 主控台的 https://console.aws.amazon.com/kms

    2. 若要變更 AWS 區域,請使用頁面右上角的區域選擇器。

    3. 在導覽窗格中,選擇客戶受管金鑰,然後選擇您需要與目標帳戶共用的KMS金鑰。

      請記下金鑰 ARN,稍後您將需要此KMS金鑰。

    4. Key policy (金鑰政策) 索引標籤上,向下捲動至 Key users (金鑰使用者) 區段。選擇新增 ,輸入您在上一個步驟中選取IAM的角色名稱,然後選擇新增

    5. Key policy (金鑰政策) 索引標籤上,向下捲動至其他 AWS 帳戶區段。選擇新增其他 AWS 帳戶 ,然後新增您在上一個步驟中選擇與 共用快照的所有目標 AWS 帳戶。

    6. 選擇 Save changes (儲存變更)。

    Command line

    使用 get-key-policy命令來擷取目前連接至金鑰的KMS金鑰政策。

    例如,下列命令會擷取 ID 為 之KMS金鑰的金鑰政策,9d5e2b3d-e410-4a27-a958-19e220d83a1e並將其寫入名為 的檔案snapshotKey.json

    $ aws kms get-key-policy \ --policy-name default \ --key-id 9d5e2b3d-e410-4a27-a958-19e220d83a1e \ --query Policy \ --output text > snapshotKey.json

    使用您偏好的文字編輯器開啟金鑰政策。新增您在建立快照政策時指定的IAM角色ARN的 ,以及要與其共用KMS金鑰ARNs的目標帳戶的 。

    例如,在下列政策中,我們新增了預設IAM角色ARN的 ,以及目標帳戶的ARN根帳戶的 。 222222222222.

    提示

    若要遵循最低權限原則人,請勿允許 kms:CreateGrant 的完整存取。相反地,使用kms:GrantIsForAWSResource條件金鑰,僅允許使用者在 AWS 服務代表使用者建立授予時,才在KMS金鑰上建立授予,如下列範例所示。

    { "Sid" : "Allow use of the key", "Effect" : "Allow", "Principal" : { "AWS" : [ "arn:aws:iam::111111111111:role/service-role/AWSDataLifecycleManagerDefaultRole", "arn:aws:iam::222222222222: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::111111111111:role/service-role/AWSDataLifecycleManagerDefaultRole", "arn:aws:iam::222222222222:root" ] }, "Action" : [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource" : "*", "Condition" : { "Bool" : { "kms:GrantIsForAWSResource" : "true" } } }

    儲存並關閉檔案。然後使用 put-key-policy命令將更新的金鑰政策連接至KMS金鑰。

    $ aws kms put-key-policy \ --policy-name default \ --key-id 9d5e2b3d-e410-4a27-a958-19e220d83a1e \ --policy file://snapshotKey.json

    在目標帳戶中,您必須建立跨帳戶複本事件政策,該政策會自動複製所需來源帳戶共用的快照。

    只有當其中一個指定的來源帳戶與該帳戶共用快照時,此政策才會在目標帳戶中執行。

    使用下列其中一種方法來建立跨帳戶複本事件政策。

    Console
    1. 在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/

    2. 在導覽窗格中,選擇 Elastic Block StoreLifecycle Manager (生命週期管理員),然後選擇 Create lifecycle policy (建立生命週期政策)

    3. Select policy type (選取政策類型) 畫面中,選取 Cross-account copy event policy (跨帳戶複製事件政策),然後選取 Next (下一步)。

    4. 對於 Policy description (政策描述),輸入政策的簡短描述。

    5. 對於 Policy tags (政策標籤),新增標籤以套用至生命週期政策。可以使用這些標籤來識別和分類您的政策。

    6. Event settings (事件設定) 區段中,定義將導致政策執行的快照共用事件。請執行下列操作:

      1. 針對共用帳戶 ,指定您要從中複製共用快照的來源 AWS 帳戶。選擇新增帳戶 ,輸入 12 位數 AWS 帳戶 ID,然後選擇新增

      2. 對於 Filter by description (依描述進行篩選),請使用常規運算式輸入所需的快照描述。此政策只會複製由指定來源帳戶共用且其描述符合指定之篩選條件的快照。如需詳細資訊,請參閱指定快照描述篩選條件

    7. 針對IAM角色 ,選擇具有執行快照複製動作許可IAM的角色。若要使用 Amazon Data Lifecycle Manager 提供的預設角色,請選擇 Default role (預設角色)。或者,若要使用您先前建立的自訂IAM角色,請選擇選擇另一個角色,然後選擇要使用的角色。

      如果您要複製加密的快照,您必須授予選取的IAM角色許可,才能使用用來加密來源磁碟區的加密KMS金鑰。同樣地,如果您使用不同的KMS金鑰來加密目的地區域中的快照,則必須授予IAM角色許可才能使用目的地KMS金鑰。如需詳細資訊,請參閱步驟 4:允許IAM角色使用所需的KMS金鑰 (目標帳戶)

    8. Copy action (複製動作) 區段中,定義在啟動時政策應執行的快照複製動作。政策最多可將快照複製到三個區域。您必須為每個目的地區域指定單獨的複製規則。對於您新增的每個規則,執行下列動作:

      1. 針對 Name (名稱),輸入複製動作的描述性名稱。

      2. 對於 Target Region (目標區域),選取要複製快照的「區域」。

      3. 對於 Expire (過期),指定在建立後可在目標區域中保留快照複本的時間長度。

      4. 若要加密快照複本,對於 Encryption (加密),請選取 Enable encryption (啟用加密)。如果來源快照已加密,或者您的帳戶預設為啟用加密,即使您在此處沒有啟用加密,快照複本一律會加密。如果來源快照未加密,且您的帳戶預設未啟用加密,您可以選擇啟用或停用加密。如果您啟用加密,但未指定KMS金鑰,則快照會使用每個目的地區域中的預設加密KMS金鑰進行加密。如果您為目的地區域指定KMS金鑰,則必須具有該KMS金鑰的存取權。

    9. 若要新增其他快照複製動作,請選擇 Add new Regions (新增區域)。

    10. 對於 Policy status after creation (建立後的政策狀態),選擇 Enable policy (啟用政策) 以在下一個排程時間開始政策執行,或選擇 Disable policy (停用政策) 以防止政策執行。如果您現在不啟用政策,它將不會開始複製快照,直到您在建立後手動啟用它。

    11. 選擇 Create policy (建立政策)。

    Command line

    使用 create-lifecycle-policy命令來建立政策。若要建立跨帳戶複本事件政策,請在 PolicyType 中指定 EVENT_BASED_POLICY

    例如,下列命令會在目標帳戶 (222222222222) 中建立跨帳戶複本事件政策。此政策會複製來源帳戶 (111111111111) 共用的快照。此政策會將快照複製到 sa-east-1eu-west-2。複製到 sa-east-1 的快照是未加密的,且保留時間為 3 天。複製到 的快照會使用KMS金鑰eu-west-2加密,8af79514-350d-4c52-bac8-8985e84171c7並保留 1 個月。政策使用預設IAM角色。

    $ aws dlm create-lifecycle-policy \ --description "Copy policy" \ --state ENABLED \ --execution-role-arn arn:aws:iam::222222222222:role/service-role/AWSDataLifecycleManagerDefaultRole \ --policy-details file://policyDetails.json

    下列顯示 policyDetails.json 檔案的內容。

    { "PolicyType" : "EVENT_BASED_POLICY", "EventSource" : { "Type" : "MANAGED_CWE", "Parameters": { "EventType" : "shareSnapshot", "SnapshotOwner": ["111111111111"] } }, "Actions" : [{ "Name" :"Copy Snapshot to Sao Paulo and London", "CrossRegionCopy" : [{ "Target" : "sa-east-1", "EncryptionConfiguration" : { "Encrypted" : false }, "RetainRule" : { "Interval" : 3, "IntervalUnit" : "DAYS" } }, { "Target" : "eu-west-2", "EncryptionConfiguration" : { "Encrypted" : true, "CmkArn" : "arn:aws:kms:eu-west-2:222222222222:key/8af79514-350d-4c52-bac8-8985e84171c7" }, "RetainRule" : { "Interval" : 1, "IntervalUnit" : "MONTHS" } }] }] }

    如果請求成功,命令會回傳新建立之政策的 ID。下列為範例輸出。

    { "PolicyId": "policy-9876543210abcdef0" }

    如果您要複製加密的快照,您必須授予IAM角色 (您在上一步中選取的) 許可,才能使用用來加密來源磁碟區的客戶受管金鑰。

    注意

    只有在複製加密快照時才執行此步驟。如果您正在複製未加密的快照,請略過此步驟。

    使用下列其中一種方法,將所需的政策新增至IAM角色。

    Console
    1. 在 開啟IAM主控台https://console.aws.amazon.com/iam/

    2. 在導覽窗格中,選取 Roles (角色)。搜尋並選取您在上一個步驟中建立跨帳戶複製事件政策時選取的IAM角色。如果您選擇使用預設角色,則角色會命名為 AWSDataLifecycleManagerDefaultRole

    3. 選擇新增內嵌政策,然後選擇 JSON 索引標籤。

    4. 將現有政策取代為下列項目,並指定用於加密來源磁碟區且由來源帳戶在步驟 2 中與您共用ARN的KMS金鑰的 。

      注意

      如果您要從多個來源帳戶複製,則必須ARN從每個來源帳戶指定對應的KMS金鑰。

      在下列範例中, 政策會授予IAM角色許可,以使用 KMS金鑰1234abcd-12ab-34cd-56ef-1234567890ab,該金鑰由來源帳戶 111111111111和金鑰 共用4567dcba-23ab-34cd-56ef-0987654321yz,該KMS金鑰存在於目標帳戶 中222222222222

      提示

      若要遵循最低權限原則人,請勿允許 kms:CreateGrant 的完整存取。相反地,使用kms:GrantIsForAWSResource條件金鑰,僅允許使用者在由 AWS 服務代使用者建立授予時,在KMS金鑰上建立授予,如下列範例所示。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:RevokeGrant", "kms:CreateGrant", "kms:ListGrants" ], "Resource": [ "arn:aws:kms:us-east-1:111111111111:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-east-1:222222222222:key/4567dcba-23ab-34cd-56ef-0987654321yz" ], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-east-1:111111111111:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-east-1:222222222222:key/4567dcba-23ab-34cd-56ef-0987654321yz" ] } ] }
    5. 選擇 Review policy (檢閱政策)

    6. Name (名稱) 中,輸入政策的描述性名稱,然後選擇 Create policy (建立政策)

    Command line

    使用您偏好的文字編輯器,建立新的名為 JSON的檔案policyDetails.json。新增下列政策,並指定在步驟 2 中用來加密來源磁碟區,以及來源帳戶與您共用ARN的KMS金鑰的 。

    注意

    如果您要從多個來源帳戶複製,則必須ARN從每個來源帳戶指定對應的KMS金鑰。

    在下列範例中, 政策會授予IAM角色許可,以使用 KMS金鑰1234abcd-12ab-34cd-56ef-1234567890ab,該金鑰由來源帳戶 111111111111和金鑰 共用4567dcba-23ab-34cd-56ef-0987654321yz,該KMS金鑰存在於目標帳戶 中222222222222

    提示

    若要遵循最低權限原則人,請勿允許 kms:CreateGrant 的完整存取。相反地,使用kms:GrantIsForAWSResource條件金鑰,僅允許使用者在由 AWS 服務代使用者建立授予時,在KMS金鑰上建立授予,如下列範例所示。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:RevokeGrant", "kms:CreateGrant", "kms:ListGrants" ], "Resource": [ "arn:aws:kms:us-east-1:111111111111:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-east-1:222222222222:key/4567dcba-23ab-34cd-56ef-0987654321yz" ], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-east-1:111111111111:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-east-1:222222222222:key/4567dcba-23ab-34cd-56ef-0987654321yz" ] } ] }

    儲存並關閉檔案。然後使用 put-role-policy命令將政策新增至IAM角色。

    例如

    $ aws iam put-role-policy \ --role-name AWSDataLifecycleManagerDefaultRole \ --policy-name CopyPolicy \ --policy-document file://AdminPolicy.json

    指定快照描述篩選條件

    當您在目標帳戶中建立快照複本政策時,必須指定快照描述篩選條件。快照描述篩選條件可讓您指定額外的篩選層級,讓您控制政策複製哪些快照。這表示只有在快照的共用者為其中一個指定的來源帳戶時,而且快照描述符合指定篩選條件時,才會複製該快照。換句話說,如果快照的共用者為其中一個指定的課程帳戶,但描述不符合指定的篩選條件,則該政策就不會複製該快照。

    快照篩選條件描述的指定方式必須是規則運算式。使用主控台和命令列建立跨帳戶複本事件政策時,這是必要欄位。以下是可以使用的範例規則運算式:

    • .*:此篩選條件符合所有快照描述。如果您使用此運算式,則此政策會複製由其中一個指定來源帳戶共用的所有快照。

    • Created for policy: policy-0123456789abcdef0.*:此篩選條件只會比對由 ID 為 policy-0123456789abcdef0 的政策所建立的快照。如果您使用類似這樣的運算式,則只有由其中一個指定來源帳戶與您帳戶共用的快照,以及由具有指定 ID 之政策建立的快照才會被此政策複製。

    • .*production.*:此篩選條件會比對描述中在任何位置具有 production 單字的快照。如果您使用此運算式,則此政策會複製由其中一個指定來源帳戶共用,且在描述中具備指定文字的所有快照。

    跨帳戶快照複製政策的考量事項

    下列考量適用於跨帳戶複本事件政策:

    • 您只能複製未加密或使用 受客戶管理的金鑰 加密的快照。

    • 您可以建立跨帳戶複製事件政策,此政策會複製在 Amazon Data Lifecycle Manager 外部共用的快照。

    • 如果您想要加密目標帳戶中的快照,則為跨帳戶複製事件政策選取的IAM角色必須具有使用所需KMS金鑰的許可。

    其他資源

    如需詳細資訊,請參閱自動化跨 AWS 帳戶儲存部落格複製加密的 Amazon EBS快照 AWS 。