分析加密的 Amazon S3 物件 - Amazon Macie

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

分析加密的 Amazon S3 物件

當您為 啟用 Amazon Macie 時 AWS 帳戶,Macie 會建立服務連結角色,授予 Macie AWS 服務 代表您呼叫 Amazon Simple Storage Service (Amazon S3) 和其他 所需的許可。服務連結角色可簡化設定 的程序, AWS 服務 因為您不必手動新增服務許可,即可代表您完成動作。若要了解這類角色,請參閱 AWS Identity and Access Management 使用者指南 中的IAM角色

Macie 服務連結角色 (AWSServiceRoleForAmazonMacie) 的許可政策可讓 Macie 執行動作,包括擷取 S3 儲存貯體和物件的相關資訊,以及擷取和分析 S3 儲存貯體中的物件。如果您的 帳戶是組織的 Macie 管理員帳戶,政策也允許 Macie 代表您為組織中的成員帳戶執行這些動作。

如果 S3 物件已加密,Macie 服務連結角色的許可政策通常會授予 Macie 解密物件所需的許可。不過,這取決於使用的加密類型。它也可以取決於 Macie 是否允許使用適當的加密金鑰。

Amazon S3 物件的加密選項

Amazon S3 支援 S3 物件的多個加密選項。對於大多數這些選項,Amazon Macie 可以使用您帳戶的 Macie 服務連結角色來解密物件。不過,這取決於用來加密物件的加密類型。

伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3)

如果物件使用伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3) 加密,Macie 可以解密物件。

若要了解此類型的加密,請參閱Amazon Simple Storage Service 使用者指南中的使用伺服器端加密搭配 Amazon S3 受管金鑰

使用 AWS KMS keys (DSSE-KMS 和 SSE-KMS) 的伺服器端加密

如果物件使用雙層伺服器端加密或使用 AWS 受管 AWS KMS key (DSSE-KMS 或 SSE-KMS) 進行伺服器端加密,Macie 可以解密物件。

如果物件使用雙層伺服器端加密或伺服器端加密搭配客戶受管 AWS KMS key (DSSE-KMS 或 SSE-KMS) 加密,則只有當您允許 Macie 使用金鑰 時,Macie 才能解密物件。這種情況適用於使用完全在外部KMS金鑰存放區 AWS KMS 和 金鑰內管理的KMS金鑰加密的物件。如果 Macie 無法使用適用的KMS金鑰,則 Macie 只能儲存和報告物件的中繼資料。

若要了解這些類型的加密,請參閱 Amazon Simple Storage Service 使用者指南 中的搭配使用雙層伺服器端加密與 AWS KMS keys使用伺服器端加密與 AWS KMS keys

提示

您可以自動產生 Macie 需要存取的所有客戶受管清單 AWS KMS keys ,以分析您帳戶的 S3 儲存貯體中的物件。若要執行此操作,請執行 AWS KMS 許可分析器指令碼,該指令碼可從 上的 Amazon Macie 指令碼儲存庫取得 GitHub。指令碼也可以產生額外的 AWS Command Line Interface (AWS CLI) 命令指令碼。您可以選擇性地執行這些命令,以更新您指定之KMS金鑰的必要組態設定和政策。

使用客戶提供的金鑰進行伺服器端加密 (SSE-C)

如果使用伺服器端加密搭配客戶提供的金鑰 (SSE-C) 來加密物件,Macie 就無法解密物件。Macie 只能儲存和報告物件的中繼資料。

若要了解此類型的加密,請參閱 Amazon Simple Storage Service 使用者指南 中的使用伺服器端加密與客戶提供的金鑰搭配使用。

用戶端加密

如果使用用戶端加密對物件進行加密,Macie 就無法解密物件。Macie 只能儲存和報告物件的中繼資料。例如,Macie 可以報告物件的大小,以及與物件相關聯的標籤。

若要了解 Amazon S3 內容中的此類加密,請參閱 Amazon Simple Storage Service 使用者指南 中的使用用戶端加密來保護資料

您可以在 Macie 中篩選儲存貯體庫存,以判斷哪些 S3 儲存貯體存放使用特定類型加密的物件。您也可以在儲存新物件時,依預設判斷哪些儲存貯體會使用特定類型的伺服器端加密。下表提供您可以套用至儲存貯體庫存以尋找此資訊的篩選條件範例。

若要顯示儲存貯體... 套用此篩選條件...
儲存使用 SSE-C 加密的物件 客戶提供加密的物件計數,而 From = 1
儲存使用 DSSE或KMS SSEKMS加密的物件 依加密管理的物件計數From = 1 AWS KMS
儲存使用 SSE-S3 加密的物件 加密的物件計數Amazon S3 受管的,而 = 1
儲存使用用戶端加密 (或未加密) 的物件 加密的物件計數沒有加密起始 = 1
預設使用 DSSE-KMS 加密來加密新物件 預設加密 = aws:kms:dsse
預設使用 SSE-KMS 加密來加密新物件 預設加密 = aws:kms
根據預設,使用 SSE-S3 加密來加密新物件 預設加密 = AES256

如果儲存貯體設定為預設使用 DSSE或KMS KMS 加密來SSE加密新物件,您也可以決定 AWS KMS key 使用哪個物件。若要執行此操作,請在 S3 儲存貯體頁面上選擇儲存貯體。在儲存貯體詳細資訊面板的伺服器端加密 下,請參閱 AWS KMS key 欄位。此欄位會顯示金鑰的 Amazon Resource Name (ARN) 或唯一識別碼 (金鑰 ID)。

允許 Macie 使用客戶受管 AWS KMS key

如果 Amazon S3 物件使用雙層伺服器端加密或伺服器端加密搭配客戶受管 AWS KMS key (DSSE-KMS 或 SSE-KMS) 進行加密,Amazon Macie 只有在允許使用金鑰時才能解密物件。如何提供此存取權取決於擁有金鑰的帳戶是否也擁有存放物件的 S3 儲存貯體:

  • 如果相同的帳戶擁有 AWS KMS key 和 儲存貯體,則帳戶的使用者必須更新金鑰的政策。

  • 如果一個帳戶擁有 , AWS KMS key 而另一個帳戶擁有 儲存貯體,則擁有 金鑰的帳戶使用者必須允許跨帳戶存取 金鑰。

本主題說明如何執行這些任務,並提供這兩個案例的範例。若要進一步了解如何允許存取客戶受管 AWS KMS keys,請參閱 AWS Key Management Service 開發人員指南 中的KMS金鑰存取和許可

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

如果同一個帳戶同時擁有 AWS KMS key 和 S3 儲存貯體,則帳戶的使用者必須將陳述式新增至金鑰的政策。其他陳述式必須允許 帳戶的 Macie 服務連結角色使用 金鑰解密資料。如需更新金鑰政策的詳細資訊,請參閱 AWS Key Management Service 開發人員指南 中的變更金鑰政策

在 陳述式中:

  • Principal 元素必須為擁有 AWS KMS key 和 S3 儲存貯體的帳戶指定 Macie 服務連結角色的 Amazon Resource Name (ARN)。

    如果帳戶位於選擇加入 中 AWS 區域, ARN 也必須包含該區域的適當區域碼。例如,如果 帳戶位於中東 (巴林) 區域,而該區域具有區域碼 me-south-1,則Principal元素必須指定 arn:aws:iam::123456789012:role/aws-service-role/macie.me-south-1.amazonaws.com/AWSServiceRoleForAmazonMacie,其中 123456789012 是 帳戶的帳戶 ID。如需目前可使用 Macie 之區域的區域代碼清單,請參閱 中的 Amazon Macie 端點和配額AWS 一般參考

  • Action 陣列必須指定 kms:Decrypt動作。這是 Macie 必須執行的唯一 AWS KMS 動作,以解密使用金鑰加密的 S3 物件。

以下是要新增至 政策的 陳述式範例 AWS KMS key。

{ "Sid": "Allow the Macie service-linked role to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie" }, "Action": [ "kms:Decrypt" ], "Resource": "*" }

在上述範例中:

  • Principal 元素中的 AWS 欄位指定帳戶的 ARN Macie 服務連結角色 (AWSServiceRoleForAmazonMacie)。它允許 Macie 服務連結角色執行政策陳述式指定的動作。123456789012 是帳戶 ID 範例。將此值取代為擁有KMS金鑰和 S3 儲存貯體之帳戶的帳戶 ID。

  • Action 陣列會指定允許 Macie 服務連結角色使用KMS金鑰執行的動作,也就是解密使用金鑰加密的加密文字。

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

允許跨帳戶存取客戶受管金鑰

如果一個帳戶擁有 AWS KMS key (金鑰擁有者 ),而另一個帳戶擁有 S3 儲存貯體 (儲存貯體擁有者 ),則金鑰擁有者必須向儲存貯體擁有者提供KMS金鑰的跨帳戶存取權。若要這麼做,金鑰擁有者會先確保金鑰的政策允許儲存貯體擁有者使用金鑰並建立金鑰的授予。儲存貯體擁有者接著會為金鑰建立授予。授予是一種政策工具,允許 AWS 主體在滿足授予指定的條件時,在密碼編譯操作中使用KMS金鑰。在此情況下, 授予會將相關許可委派給儲存貯體擁有者帳戶的 Macie 服務連結角色。

如需更新金鑰政策的詳細資訊,請參閱 AWS Key Management Service 開發人員指南 中的變更金鑰政策。若要了解授予,請參閱 AWS Key Management Service 開發人員指南 中的授予 AWS KMS

步驟 1:更新金鑰政策

在金鑰政策中,金鑰擁有者應確保政策包含兩個陳述式:

  • 第一個陳述式允許儲存貯體擁有者使用 金鑰解密資料。

  • 第二個陳述式可讓儲存貯體擁有者為其 (儲存貯體擁有者) 帳戶建立 Macie 服務連結角色的授予。

在第一個陳述式中,Principal元素必須指定ARN儲存貯體擁有者帳戶的 。Action 陣列必須指定 kms:Decrypt動作。這是 Macie 必須執行的唯一 AWS KMS 動作,以解密使用金鑰加密的物件。以下是 政策中此陳述式的範例 AWS KMS key。

{ "Sid": "Allow account 111122223333 to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Decrypt" ], "Resource": "*" }

在上述範例中:

  • Principal 元素中的 AWS 欄位指定ARN儲存貯體擁有者帳戶的 (111122223333)。 它允許儲存貯體擁有者執行政策陳述式指定的動作。111122223333 是帳戶 ID 範例。將此值取代為儲存貯體擁有者帳戶的帳戶 ID。

  • Action 陣列指定允許儲存貯體擁有者使用KMS金鑰執行的動作,也就是解密使用金鑰加密的加密文字。

金鑰政策中的第二個陳述式允許儲存貯體擁有者為其帳戶建立 Macie 服務連結角色的授予。在此陳述式中,Principal元素必須指定ARN儲存貯體擁有者帳戶的 。Action 陣列必須指定 kms:CreateGrant動作。Condition 元素可以篩選對 陳述式中指定kms:CreateGrant動作的存取。以下是 政策中此陳述式的範例 AWS KMS key。

{ "Sid": "Allow account 111122223333 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/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie" } } }

在上述範例中:

  • Principal 元素中的 AWS 欄位指定ARN儲存貯體擁有者帳戶的 (111122223333)。 它允許儲存貯體擁有者執行政策陳述式指定的動作。111122223333 是帳戶 ID 範例。將此值取代為儲存貯體擁有者帳戶的帳戶 ID。

  • Action 陣列指定允許儲存貯體擁有者在KMS金鑰上執行的動作 — 為金鑰建立授予。

  • Condition 元素使用StringEquals條件運算子kms:GranteePrincipal條件索引鍵來篩選對政策陳述式所指定動作的存取。在此情況下,儲存貯體擁有者只能為指定的 建立授予GranteePrincipal,這是其帳戶的 Macie 服務連結角色ARN的 。在該 中ARN,111122223333 是帳戶 ID 範例。將此值取代為儲存貯體擁有者帳戶的帳戶 ID。

    如果儲存貯體擁有者的帳戶位於選擇加入 中 AWS 區域,也請在 Macie 服務連結角色ARN的 中包含適當的區域代碼。例如,如果 帳戶位於中東 (巴林) 區域,且其具有區域碼 me-south-1,請在 macie.me-south-1.amazonaws.com中將 取代macie.amazonaws.com為 ARN。如需目前可使用 Macie 之區域的區域代碼清單,請參閱 中的 Amazon Macie 端點和配額AWS 一般參考

金鑰擁有者將這些陳述式新增至金鑰政策的位置取決於政策目前包含的結構和元素。當金鑰擁有者新增陳述式時,應確保語法有效。金鑰政策使用 JSON 格式。這表示金鑰擁有者也必須在每個陳述式之前或之後新增逗號,取決於將陳述式新增至政策的位置。

步驟 2:建立授予

金鑰擁有者視需要更新金鑰政策後,儲存貯體擁有者必須為金鑰建立授予。授予會將相關許可委派給其 (儲存貯體擁有者) 帳戶的 Macie 服務連結角色。在儲存貯體擁有者建立授予之前,他們應該確認他們是否有權為其帳戶執行kms:CreateGrant動作。此動作允許他們將授予新增至現有的客戶受管 AWS KMS key。

若要建立授予,儲存貯體擁有者可以使用 CreateGrant的操作 AWS Key Management Service API。當儲存貯體擁有者建立授予時,他們應該為必要的參數指定下列值:

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

  • GranteePrincipal – 其帳戶的 ARN Macie 服務連結角色 (AWSServiceRoleForAmazonMacie)。此值應為 arn:aws:iam::111122223333:role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie,其中 111122223333 是儲存貯體擁有者帳戶的帳戶 ID。

    如果其帳戶位於選擇加入區域, ARN必須包含適當的區域代碼。例如,如果其帳戶位於中東 (巴林) 區域,而該區域具有區域碼 me-south-1,則 ARN應為 arn:aws:iam::111122223333:role/aws-service-role/macie.me-south-1.amazonaws.com/AWSServiceRoleForAmazonMacie,其中 111122223333 是儲存貯體擁有者帳戶的帳戶 ID。

  • Operations – AWS KMS 解密動作 (Decrypt)。這是 Macie 必須執行的唯一 AWS KMS 動作,以解密使用KMS金鑰加密的物件。

若要使用 AWS Command Line Interface (AWS CLI) 為客戶受管KMS金鑰建立授予,請執行 create-grant 命令。下列範例會顯示作法。此範例已針對 Microsoft Windows 格式化,並使用 caret (^) 換行字元來改善可讀性。

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/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie ^ --operations "Decrypt"

其中:

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

  • grantee-principal 指定允許執行授予所指定動作ARN之帳戶的 Macie 服務連結角色的 。此值應符合金鑰政策中第二個陳述式kms:GranteePrincipal的條件所ARN指定的 。

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

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

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

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