擷取含有發現項目之敏感資料範例的組態選項和需求 - Amazon Macie

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

擷取含有發現項目之敏感資料範例的組態選項和需求

您可以選擇性地設定和使用 Amazon Macie 擷取和顯示 Macie 在個別發現項目中報告的敏感資料樣本。如果您擷取並揭露用於發現的敏感資料樣本,Macie 會使用對應敏感資料探索結果中的資料,在受影響的 Amazon Simple Storage Service (Amazon S3) 物件中找出敏感資料的出現次數。然後,Macie 會從受影響的物件中擷取這些出現位置的樣本。Macie 會使用您指定的 AWS Key Management Service (AWS KMS) 金鑰加密擷取的資料,將加密的資料暫時儲存在快取中,然後傳回結果中的資料以供尋找結果使用。在擷取和加密之後不久,Macie 會永久刪除快取中的資料,除非暫時需要額外保留才能解決操作問題。

Macie 不會針對您的帳戶使用 Macie 服務連結角色來尋找、擷取、加密或揭露受影響 S3 物件的敏感資料範例。相反地,Macie 會使用您為帳戶設定的設定和資源。在 Macie 中設定設定時,您可以指定如何存取受影響的 S3 物件。您也可以指定AWS KMS key要使用何種方式來加密範例。除了亞太區域(大阪)和以色列(特拉維夫)區域以外,您可以在目前所有 Macie 可用的地AWS 區域方進行設定。

若要存取受影響的 S3 物件並從中擷取敏感資料樣本,您有兩種選擇。您可以將 Macie 設定為使用 AWS Identity and Access Management (IAM) 使用者登入資料或假設 IAM 角色:

  • 使用 IAM 使用者登入資料 — 使用此選項,您帳戶的每個使用者都會使用其個別 IAM 身分來尋找、擷取、加密和揭示範例。這表示如果使用者能夠存取必要的資源和資料,並執行必要的動作,就可以擷取和揭露敏感資料範例,以供尋找之用。

  • 假設 IAM 角色 — 使用此選項,您可以建立將存取權委派給 Macie 的 IAM 角色。您也可以確定角色的信任和權限原則符合 Macie 擔任該角色的所有需求。然後,當您的帳戶的使用者選擇尋找、擷取、加密和揭露用於尋找的敏感資料範例時,Macie 會擔任該角色。

您可以使用任何類型的 Macie 帳戶 (組織的委派 Macie 管理員帳戶、組織中的 Macie 成員帳戶或獨立的 Macie 帳戶) 來使用任何組態。

下列主題說明可協助您決定如何設定帳戶的設定和資源的選項、需求和考量事項。這包括要附加到 IAM 角色的信任和許可政策。如需可用來擷取和顯示敏感資料樣本的其他建議和政策範例,請參閱AWS安全部落格上的如何使用 Amazon Macie 預覽 S3 儲存貯體中的敏感資料部落格文章。

決定要使用哪種存取方法

判斷哪種組態最適合您的AWS環境時,關鍵的考量是您的環境是否包含多個以組織形式集中管理的 Amazon Macie 帳戶。如果您是組織委派的 Macie 管理員,將 Macie 設定為擔任 IAM 角色,可以簡化從組織中帳戶從受影響 S3 物件擷取敏感資料樣本的程序。使用這種方法,您可以在管理員帳戶中建立 IAM 角色。您也可以在每個適用的成員帳戶中建立 IAM 角色。管理員帳戶中的角色會委派對 Macie 的存取權。成員帳戶中的角色會委派對管理員帳戶中角色的跨帳戶存取權。如果實作,您就可以使用角色鏈結存取成員帳戶的受影響 S3 物件。

還要考慮誰可以直接訪問個別發現項目默認。若要擷取和顯示發現項目的敏感資料範例,使用者必須先具備尋找項目的存取權:

  • 敏感資料探索工作 — 只有建立工作的帳戶可以存取工作產生的發現項目。如果您擁有 Macie 管理員帳戶,則可以設定工作來分析 S3 儲存貯體中的物件,以找出組織中任何帳戶的物件。因此,您的工作可以針對您的成員帳戶所擁有的值區中的物件產生發現項目。如果您擁有成員帳戶或獨立的 Macie 帳戶,則可以將工作設定為僅分析您帳戶擁有的值區中的物件。

  • 自動化敏感資料探索 — 只有 Macie 管理員帳戶可以存取自動探索為其組織中帳戶產生的發現項目。會員帳戶無法存取這些發現項目。如果您擁有獨立的 Macie 帳戶,則可以存取自動化探索僅針對您自己的帳戶產生的發現項目。

如果您計劃使用 IAM 角色存取受影響的 S3 物件,也請考慮下列事項:

  • 若要尋找物件中敏感資料的出現次數,尋找項目的對應敏感資料探索結果必須儲存在使用雜湊型訊息驗證碼 (HMAC) 簽署的 S3 物件中。AWS KMS keyMacie 必須能夠驗證敏感數據發現結果的完整性和真實性。否則,Macie 不會假設 IAM 角色來擷取敏感資料樣本。這是限制帳戶 S3 物件中資料存取的額外防護措施。

  • 若要從使用客戶管理的加密物件擷取敏感資料樣本AWS KMS key,必須允許 IAM 角色使用金鑰解密資料。更具體地說,金鑰的原則必須允許角色執行kms:Decrypt動作。對於其他類型的伺服器端加密,不需要其他權限或資源即可解密受影響的物件。如需詳細資訊,請參閱解密受影響的 S3 物件

  • 若要從另一個帳戶的物件擷取敏感資料範例,您目前必須是適用AWS 區域帳戶的委派 Macie 管理員。除此之外:

    • 目前必須為適用地區的會員帳戶啟用 Macie。

    • 成員帳戶必須具有 IAM 角色,可將跨帳戶存取權委派給 Macie 管理員帳戶中的 IAM 角色。您的 Macie 管理員帳戶和成員帳戶中角色的名稱必須相同。

    • 成員帳戶中 IAM 角色的信任政策必須包含指定組態正確外部 ID 的條件。此 ID 是一個唯一的英數字串,Macie 會在您設定 Macie 管理員帳戶的設定後自動產生。如需有關在信任策略中使用外部 ID 的詳細資訊,請參閱《使用指南》中的將AWS資源的存取權授予第三方時如何使AWS Identity and Access Management用部 ID。

    • 如果成員帳戶中的 IAM 角色符合所有 Macie 要求,則該成員帳戶不需要配置和啟用 Macie 設置,即可從其帳戶的對象中檢索敏感數據樣本。Macie 只會在您的 Macie 管理員帳戶中使用設定和 IAM 角色,以及成員帳戶中的 IAM 角色。

      提示

      如果您的帳戶屬於大型組織,請考慮使用AWS CloudFormation範本和堆疊集來佈建和管理組織中成員帳戶的 IAM 角色。若要取得有關建立和使用範本和堆疊集的資訊,請參閱《使AWS CloudFormation用指南》

      若要檢閱並選擇性地下載可做為起點的 CloudFormation 範本,您可以使用 Amazon Macie 主控台。在主控台的導覽窗格的 [設定] 下,選擇 [顯示範例]。選擇 [編輯],然後選擇 [檢視成員角色權限和 CloudFormation 範本]。

本節的後續主題提供每種組態類型的其他詳細資料和考量事項。對於 IAM 角色,這包括要附加到角色的信任和許可政策。如果您不確定哪種類型的組態最適合您的環境,請向您的AWS管理員尋求協助。

使用 IAM 使用者登入資料存取受影響的 S3 物件

如果您將 Amazon Macie 設定為使用 IAM 使用者登入資料擷取敏感資料樣本,Macie 帳戶的每個使用者都會使用其 IAM 身分來尋找、擷取、加密和揭示個別發現項目的範例。這表示使用者可以擷取和揭露敏感資料樣本,以便找出其 IAM 身分是否允許存取必要的資源和資料,並執行必要的動作。所有必要的動作都會登入AWS CloudTrail

若要擷取和顯示特定發現項目的敏感資料樣本,使用者必須被允許存取下列資料和資源:發現項目、對應的敏感資料探索結果、受影響的 S3 儲存貯體以及受影響的 S3 物件。也必須允許他們使用用來加密受影響物件 (如果適用的話),以及您設定 Macie 用來加密敏感資料樣本的物件。AWS KMS key AWS KMS key如果任何 IAM 政策、資源政策或其他許可設定拒絕必要的存取權,則使用者將無法擷取和揭露發現項目的範例。

若要設定此類型的組態,請完成下列一般工作:

  1. 確認您已為敏感資料探索結果設定存放庫。

  2. 設定AWS KMS key要用於加密敏感資料樣本。

  3. 確認您在 Macie 中設定設定的權限。

  4. 配置並啟用 Macie 中的設置。

如需執行這些工作的詳細資訊,請參閱設定 Amazon Macie 以擷取和揭示含有發現項目的敏感資料樣本

假設 IAM 角色存取受影響的 S3 物件

若要將 Amazon Macie 設定為透過假設 IAM 角色擷取敏感資料樣本,請先建立將存取權委派給 Macie 的 IAM 角色開始。請確定角色的信任和權限原則符合 Macie 擔任該角色的所有需求。當您的 Macie 帳戶的使用者接著選擇擷取並顯示用於尋找的敏感資料樣本時,Macie 會擔任從受影響 S3 物件擷取樣本的角色。只有當使用者選擇擷取並顯示尋找項目的範例時,Macie 才會擔任該角色。為了承擔這個角色,馬西使用AWS Security Token Service(AWS STS)API 的AssumeRole操作。所有必要的動作都會登入AWS CloudTrail

若要擷取和顯示特定發現項目的敏感資料樣本,必須允許使用者存取發現項目、對應的敏感資料探索結果,以及您設定 Macie 用來加密敏感資料樣本的結果。AWS KMS keyIAM 角色必須允許 Macie 存取受影響的 S3 儲存貯體和受影響的 S3 物件。也必須允許角色使用用來加密受影響物件的角色 (如果適用)。AWS KMS key如果任何 IAM 政策、資源政策或其他許可設定拒絕必要的存取權,則使用者將無法擷取和揭露發現項目的範例。

若要設定此類型的組態,請完成下列一般工作。如果您在組織中擁有成員帳戶,請與您的 Macie 管理員合作,以決定是否以及如何為您的帳戶配置設定和資源。

  1. 定義下列項目:

    • 您希望 Macie 假設的 IAM 角色名稱。如果您的帳戶是組織的一部分,委派的 Macie 管理員帳戶和組織中每個適用的成員帳戶的名稱必須相同。否則,Macie 管理員將無法存取適用成員帳戶的受影響 S3 物件。

    • 要附加至 IAM 角色的 IAM 許可政策名稱。如果您的帳戶屬於組織,建議您為組織中的每個適用成員帳戶使用相同的策略名稱。這樣可以簡化成員帳戶中的角色佈建和管理作業。

  2. 確認您已為敏感資料探索結果設定存放庫。

  3. 設定AWS KMS key要用於加密敏感資料樣本。

  4. 驗證您建立 IAM 角色的許可,並在 Macie 中設定設定。

  5. 如果您是組織的委派 Macie 管理員,或者您擁有獨立的 Macie 帳戶:

    1. 為您的帳戶建立和設定 IAM 角色。請確定角色的信任和權限原則符合 Macie 擔任該角色的所有需求。如需有關這些需求的詳細資訊,請參閱下一個主題

    2. 配置並啟用 Macie 中的設置。然後 Macie 會產生組態的外部識別碼。如果您是組織的 Macie 管理員,請記下此 ID。每個適用成員帳戶中 IAM 角色的信任政策都必須指定此 ID。

  6. 如果您在組織中擁有成員帳戶:

    1. 請向您的 Macie 管理員詢問外部 ID,以便在帳戶中為 IAM 角色的信任政策中指定。同時驗證要建立的 IAM 角色和許可政策的名稱。

    2. 為您的帳戶建立和設定 IAM 角色。請確定角色的信任和權限原則符合 Macie 管理員擔任該角色的所有需求。如需有關這些需求的詳細資訊,請參閱下一個主題

    3. (選擇性) 如果您想要從自己的帳戶的受影響 S3 物件擷取和顯示敏感資料樣本,請在 Macie 中設定並啟用設定。如果您希望 Macie 假設 IAM 角色擷取範例,請先在帳戶中建立並設定其他 IAM 角色。請確定此額外角色的信任和權限原則符合 Macie 擔任該角色的所有需求。然後在 Macie 中配置設置並指定此附加角色的名稱。如需有關角色原則需求的詳細資訊,請參閱下一個主題

如需執行這些工作的詳細資訊,請參閱設定 Amazon Macie 以擷取和揭示含有發現項目的敏感資料樣本

設定 IAM 角色以存取受影響的 S3 物件

若要使用 IAM 角色存取受影響的 S3 物件,請先建立和設定將存取權委派給 Amazon Macie 的角色開始。請確定角色的信任和權限原則符合 Macie 擔任該角色的所有需求。您如何執行此操作取決於您擁有的 Macie 帳戶類型。

以下各節提供有關每種類型 Macie 帳戶附加到 IAM 角色的信任和許可政策的詳細資訊。選擇您擁有的帳戶類型的部分。

注意

如果您在組織中擁有成員帳戶,則可能需要為您的帳戶建立和設定兩個 IAM 角色:

  • 若要允許 Macie 管理員從您帳戶的受影響 S3 物件擷取和揭露敏感資料樣本,請建立並設定管理員帳戶可以擔任的角色。有關這些詳細信息,請選擇 Macie 會員帳戶部分。

  • 若要從您自己的帳戶的受影響 S3 物件擷取和揭露敏感資料樣本,請建立並設定 Macie 可以承擔的角色。有關這些詳細信息,請選擇獨立 Macie 帳戶部分。

在您建立和設定 IAM 角色之前,請與您的 Macie 管理員合作,確定帳戶的適當組態。

如需使用 IAM 建立角色的詳細資訊,請參閱使用AWS Identity and Access Management者指南中的使用自訂信任政策建立角色

如果您是組織的委派 Macie 管理員,請先使用 IAM 政策編輯器建立 IAM 角色的許可政策。該政策應如下。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RetrieveS3Objects", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "*" ] }, { "Sid": "AssumeMacieRevealRoleForCrossAccountAccess", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::*:role/IAMRoleName" } ] }

其中 IAM RoleName 是 Macie 從組織帳戶的受影響 S3 物件擷取敏感資料樣本時所承擔的 IAM 角色名稱。將此值取代為您為帳戶建立的角色名稱,並計劃為組織中的適用成員帳戶建立。此名稱必須與您的 Macie 管理員帳戶和每個適用的會員帳戶相同。

注意

在上述權限原則中,第一個陳述式中的Resource元素會使用萬用字元 (*)。這可讓附加的 IAM 實體從組織擁有的所有 S3 儲存貯體擷取物件。若要僅允許特定值區存取此存取權,請將萬用字元取代為每個儲存貯體的 Amazon 資源名稱 (ARN)。例如,若只要允許存取名為值區中的物件 DOC-EXAMPLE-BUCKET,請將元素變更為:

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"

您也可以針對個別帳戶限制對特定 S3 儲存貯體中物件的存取。若要這麼做,請在每個適用帳戶的 IAM 角色權限政策Resource元素中指定儲存貯體 ARN。如需詳細資訊和範例,請參閱AWS Identity and Access Management使用者指南中的 IAM JSON 政策元素:資源

建立 IAM 角色的許可政策後,請建立並設定角色。如果您使用 IAM 主控台執行此操作,請選擇「自訂信任政策」做為角色的「受信任」實體類型。對於為角色定義受信任實體的信任原則,請指定下列項目。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMacieReveal", "Effect": "Allow", "Principal": { "Service": "reveal-samples.macie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountID" } } } ] }

其中 account ID 是您AWS 帳戶的帳號 ID。將此值取代為您的 12 位數帳戶 ID。

在先前的信任策略中:

  • Principal元素會指定 Macie 從受影響的 S3 物件擷取敏感資料樣本時使用的服務主體。reveal-samples.macie.amazonaws.com

  • Action元素會指定允許服務主體執行的動AssumeRole作,即 AWS Security Token Service (AWS STS) API 的作業。

  • Condition元素定義了使用 aws: SourceAccount 全局條件上下文鍵的條件。此條件決定哪個帳戶可以執行指定的動作。在這種情況下,它允許 Macie 只為指定的帳戶 (accountID) 承擔角色。該條件有助於防止 Macie 在與AWS STS交易過程中被用作混淆的副手。

定義 IAM 角色的信任政策後,請將許可政策附加到該角色。這應該是您在開始建立角色之前建立的權限原則。然後完成 IAM 中的其餘步驟,以完成角色的建立和設定。完成後,配置並啟用 Macie 中的設置

如果您擁有 Macie 成員帳戶,並且想要允許 Macie 管理員從您帳戶的受影響 S3 物件擷取和顯示敏感資料樣本,請先向您的 Macie 管理員詢問下列資訊:

  • 要建立的 IAM 角色名稱。您的帳戶和組織的 Macie 管理員帳戶名稱必須相同。

  • 要附加至角色的 IAM 許可政策名稱。

  • 要在角色信任原則中指定的外部識別碼。此識別碼必須是 Macie 為您的 Macie 管理員設定所產生的外部識別碼。

收到此資訊後,請使用 IAM 政策編輯器建立角色的許可政策。該政策應如下。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RetrieveS3Objects", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "*" ] } ] }

上述許可政策允許附加的 IAM 實體從您帳戶的所有 S3 儲存貯體擷取物件。這是因為策略中的Resource元素使用萬用字元 (*)。若要僅允許特定值區存取此存取權,請將萬用字元取代為每個儲存貯體的 Amazon 資源名稱 (ARN)。例如,若只要允許存取名為值區中的物件 DOC-EXAMPLE-BUCKET2,請將元素變更為:

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*"

如需詳細資訊和範例,請參閱AWS Identity and Access Management使用者指南中的 IAM JSON 政策元素:資源

建立 IAM 角色的許可政策後,請建立角色。如果您使用 IAM 主控台建立角色,請選擇「自訂信任政策」做為該角色的受信任實體類型。對於為角色定義受信任實體的信任原則,請指定下列項目。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMacieAdminRevealRoleForCrossAccountAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::administratorAccountID:role/IAMRoleName" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "externalID", "aws:PrincipalOrgID": "${aws:ResourceOrgID}" } } } ] }

在上述政策中,將預留位置值取代為您AWS環境的正確值,其中:

  • 管理員帳戶 ID 是您 Macie 管理員帳戶的 12 位數帳戶識別碼。

  • IAM RoleName 是您 Macie 管理員帳戶中的 IAM 角色名稱。它應該是您從 Macie 管理員那裡收到的名稱。

  • 外部 ID 是您從 Macie 管理員那裡收到的外部識別碼。

一般而言,信任政策可讓您的 Macie 管理員擔任角色,從您帳戶的受影響 S3 物件擷取和揭露敏感資料樣本。Principal元素會指定您 Macie 管理員帳戶中某個 IAM 角色的 ARN。這是您的 Macie 管理員用來擷取和顯示組織帳戶之機密資料範例的角色。該Condition塊定義了兩個條件,這些條件進一步確定誰可以擔任該角色:

定義 IAM 角色的信任政策後,請將許可政策附加到該角色。這應該是您在開始建立角色之前建立的權限原則。然後完成 IAM 中的其餘步驟,以完成角色的建立和設定。請勿在 Macie 中配置和輸入角色的設置。

如果您擁有獨立的 Macie 帳戶或 Macie 成員帳戶,並且想要從自己的帳戶的受影響 S3 物件擷取和揭露敏感資料樣本,請先使用 IAM 政策編輯器為 IAM 角色建立許可政策。該政策應如下。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RetrieveS3Objects", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "*" ] } ] }

在上述權限原則中,Resource元素會使用萬用字元 (*)。這可讓附加的 IAM 實體從您帳戶的所有 S3 儲存貯體擷取物件。若要僅允許特定值區存取此存取權,請將萬用字元取代為每個儲存貯體的 Amazon 資源名稱 (ARN)。例如,若只要允許存取名為值區中的物件 DOC-EXAMPLE-BUCKET3,請將元素變更為:

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET3/*"

如需詳細資訊和範例,請參閱AWS Identity and Access Management使用者指南中的 IAM JSON 政策元素:資源

建立 IAM 角色的許可政策後,請建立角色。如果您使用 IAM 主控台建立角色,請選擇「自訂信任政策」做為該角色的受信任實體類型。對於為角色定義受信任實體的信任原則,請指定下列項目。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMacieReveal", "Effect": "Allow", "Principal": { "Service": "reveal-samples.macie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountID" } } } ] }

其中 account ID 是您AWS 帳戶的帳號 ID。將此值取代為您的 12 位數帳戶 ID。

在先前的信任策略中:

  • Principal元素會指定 Macie 從受影響 S3 物件擷取和顯示敏感資料樣本時使用的服務主體。reveal-samples.macie.amazonaws.com

  • Action元素會指定允許服務主體執行的動AssumeRole作,即 AWS Security Token Service (AWS STS) API 的作業。

  • Condition元素定義了使用 aws: SourceAccount 全局條件上下文鍵的條件。此條件決定哪個帳戶可以執行指定的動作。它允許 Macie 只為指定的帳戶 (accountID) 承擔角色。該條件有助於防止 Macie 在與AWS STS交易過程中被用作混淆的副手。

定義 IAM 角色的信任政策後,請將許可政策附加到該角色。這應該是您在開始建立角色之前建立的權限原則。然後完成 IAM 中的其餘步驟,以完成角色的建立和設定。完成後,配置並啟用 Macie 中的設置

解密受影響的 S3 物件

Amazon S3 支援 S3 物件的多個加密選項。對於大多數這些選項,IAM 使用者或角色不需要其他資源或許可,即可從受影響物件解密和擷取敏感資料樣本。對於使用伺服器端加密搭配 Amazon S3 受管金鑰或受管金鑰加密的物件,就是這種情況AWS KMS key。AWS

但是,如果 S3 物件使用客戶管理加密AWS KMS key,則需要額外的許可才能從物件解密和擷取敏感資料樣本。更具體地說,KMS 金鑰的金鑰政策必須允許 IAM 使用者或角色執行kms:Decrypt動作。否則,會發生錯誤,Macie 不會從物件擷取任何樣本。若要了解如何為 IAM 使用者提供此存取權,請參閱AWS Key Management Service開發人員指南AWS KMS的身份驗證和存取控制

如何為 IAM 角色提供此存取權取決於擁有該角色的帳戶是否AWS KMS key也擁有該角色:

  • 如果相同的帳戶擁有 KMS 金鑰和角色,則帳戶的使用者必須更新金鑰的原則。

  • 如果一個帳戶擁有 KMS 金鑰,而另一個帳戶擁有該角色,則擁有該金鑰的帳戶的使用者必須允許跨帳戶存取金鑰。

本主題說明如何針對您為從 S3 物件擷取敏感資料樣本而建立的 IAM 角色執行這些工作。它也提供這兩種情況的範例。如需有關允許存取其他案例所管理AWS KMS keys之客戶的資訊,請參閱AWS Key Management Service開發人員指南AWS KMS的驗證與存取控制

允許相同帳戶存取客戶管理的金鑰

如果同一帳戶同時擁有AWS KMS key和 IAM 角色,則該帳戶的使用者必須在金鑰的政策中新增陳述式。其他陳述式必須允許 IAM 角色使用金鑰來解密資料。如需更新金鑰原則的詳細資訊,請參閱AWS Key Management Service開發人員指南中的變更金鑰政策

在聲明中:

  • Principal素必須指定 IAM 角色的 Amazon 資源名稱 (ARN)。

  • Action陣列必須指定kms:Decrypt動作。這是唯一必須允許 IAM 角色執行的AWS KMS動作,才能解密使用金鑰加密的物件。

以下是要新增至 KMS 金鑰原則的陳述式範例。

{ "Sid": "Allow the Macie reveal role to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/IAMRoleName" }, "Action": [ "kms:Decrypt" ], "Resource": "*" }

在上述範例中:

  • Principal元素中的AWS欄位會指定帳戶中 IAM 角色的 ARN。它可讓角色執行原則陳述式所指定的動作。 123456789012 是一個帳戶識別碼範例。將此值取代為擁有角色和 KMS 金鑰之帳戶的帳戶識別碼。IAM RoleName 是一個示例名稱。將此值取代為帳戶中 IAM 角色的名稱。

  • Action陣列指定允許 IAM 角色使用 KMS 金鑰執行的動作 — 解密使用金鑰加密的加密文字。

將此陳述式新增至金鑰原則的位置取決於原則目前包含的結構和元素。當您新增陳述式時,請確定語法有效。金鑰政策使用 JSON 格式。這表示您也必須在陳述式之前或之後加上逗號,視您將陳述式新增至原則的位置而定。

允許跨帳戶存取客戶管理的金鑰

如果一個帳戶擁有AWS KMS key(金鑰擁有者),而另一個帳戶擁有 IAM 角色(角色擁有者),則金鑰擁有者必須向角色擁有者提供對金鑰的跨帳戶存取權限。要做到這一點的一種方法是通過使用授予. 授權是一種原則工具,可讓AWS主體在符合授權指定的條件時,在密碼編譯作業中使用 KMS 金鑰。若要進一步了解撥款,請參閱AWS Key Management Service開發人員指南AWS KMS中的贈款。

使用這種方法,金鑰擁有者會先確保金鑰的原則允許角色擁有者建立金鑰的授與。然後,角色擁有者會建立金鑰的授權。授權會將相關許可委派給其帳戶中的 IAM 角色。它可讓角色解密使用金鑰加密的 S3 物件。

步驟 1:更新金鑰原則

在金鑰政策中,金鑰擁有者應確保該政策包含允許角色擁有者在其 (角色擁有者) 帳戶中為 IAM 角色建立授與的陳述式。在此陳述式中,Principal元素必須指定角色擁有者帳戶的 ARN。Action陣列必須指定kms:CreateGrant動作。圖Condition塊可以篩選對指定動作的存取。以下是 KMS 金鑰原則中此陳述式的範例。

{ "Sid": "Allow a role in an account to create a grant", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/IAMRoleName" }, "ForAllValues:StringEquals": { "kms:GrantOperations": "Decrypt" } } }

在上述範例中:

  • Principal元素中的AWS欄位會指定角色擁有者帳戶的 ARN。它允許帳戶執行策略聲明所指定的操作。 111122223333 是一個帳戶識別碼範例。將此值取代為角色擁有者帳戶的帳號 ID。

  • Action陣列指定允許角色擁有者對 KMS 金鑰執行的動作 — 建立金鑰授權。

  • Condition區塊會使用條件運算子和下列條件金鑰來篩選允許角色擁有者對 KMS 金鑰執行之動作的存取:

    • kms: GranteePrincipal — 此條件允許角色擁有者僅為指定的受權者主體 (即其帳戶中 IAM 角色的 ARN) 建立授權。在該 ARN 中,111122223333 是一個示例帳戶識別碼。將此值取代為角色擁有者帳戶的帳號 ID。IAM RoleName 是一個示例名稱。將此值取代為角色擁有者帳戶中 IAM 角色的名稱。

    • kms: GrantOperations — 此條件允許角色擁有者建立僅授與委派執行AWS KMSDecrypt動作的權限 (解密使用金鑰加密的加密文字)。它可防止角色擁有者建立授與委派權限,以便對 KMS 金鑰執行其他動作。此Decrypt動作是唯一必須允許 IAM 角色執行的AWS KMS動作,才能解密使用金鑰加密的物件。

金鑰擁有者將此陳述式新增至金鑰原則的位置取決於原則目前包含的結構和元素。當密鑰所有者添加語句時,他們應該確保語法有效。金鑰政策使用 JSON 格式。這表示金鑰擁有者也必須在陳述式之前或之後加上逗號,視使用者將陳述式新增至原則的位置而定。如需更新金鑰原則的詳細資訊,請參閱AWS Key Management Service開發人員指南中的變更金鑰政策

步驟 2:建立授權

在金鑰擁有者視需要更新金鑰原則之後,角色擁有者會建立金鑰的授與。授權會將相關許可委派給其 (角色擁有者) 帳戶中的 IAM 角色。在角色擁有者建立授權之前,他們應該確認自己已被允許執行kms:CreateGrant動作。此動作可讓他們將授權新增至現有、受管理的客戶AWS KMS key。

若要建立授權,角色擁有者可以使用 AWS Key Management Service API 的CreateGrant作業。當角色擁有者建立授權時,他們應該為必要的參數指定下列值:

  • KeyId— KMS 金鑰的 ARN。若要跨帳戶存取 KMS 金鑰,此值必須是 ARN。它不能是金鑰識別碼。

  • GranteePrincipal— 其帳戶中 IAM 角色的 ARN。此值應為arn:aws:iam::111122223333:role/IAMRoleName,其中 111122223333 是角色擁有者帳戶的帳戶識別碼,而 IAM RoleName 是角色的名稱。

  • Operations— 解AWS KMS密動作 (Decrypt)。這是唯一必須允許 IAM 角色執行的AWS KMS動作,才能解密使用 KMS 金鑰加密的物件。

如果角色擁有者正在使用 AWS Command Line Interface (AWS CLI),他們可以執行 create-grant 命令來建立授權。下列範例會顯示作法。此範例已針對 Microsoft Windows 進行格式化,並使用脫字元 (^) 行接續字元來提高可讀性。

C:\> aws kms create-grant ^ --key-id arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab ^ --grantee-principal arn:aws:iam::111122223333:role/IAMRoleName ^ --operations "Decrypt"

其中:

  • key-id指定要套用授權之 KMS 金鑰的 ARN。

  • grantee-principal指定允許執行授權指定動作的 IAM 角色的 ARN。此值應符合金鑰原則中kms:GranteePrincipal條件所指定的 ARN。

  • operations指定授與允許指定主體執行的動作 — 解密使用金鑰加密的加密文字。

如果此命令成功執行,您會收到類似如下的輸出。

{ "GrantToken": "<grant token>", "GrantId": "1a2b3c4d2f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2" }

其中GrantToken是唯一、非秘密、可變長度、base64 編碼的字串,代表已建立的授權,並且GrantId是授權的唯一識別碼。