本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Batch Operations 為 SSE-KMS 啟用 S3 儲存貯體金鑰
S3 儲存貯體金鑰透過減少從 Amazon S3 到 的請求流量,降低使用 AWS Key Management Service (AWS KMS) (SSE-KMS) 進行伺服器端加密的成本 AWS KMS。如需詳細資訊,請參閱 使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本 和 設定您的儲存貯體以使用具有 SSE-KMS 的 S3 儲存貯體來獲取新物件。當您使用 REST API、 AWS SDKs 或 執行CopyObject
操作時 AWS CLI,您可以在物件層級啟用或停用 S3 儲存貯體金鑰,方法是新增具有 true
或 false
值的x-amz-server-side-encryption-bucket-key-enabled
請求標頭。
當您使用 CopyObject
操作為物件設定 S3 儲存貯體金鑰時,Amazon S3 只會更新該物件的設定。目的地儲存貯體的 S3 儲存貯體金鑰設定不會變更。如果您將 AWS KMS
加密物件的 CopyObject
請求提交至啟用 S3 儲存貯體金鑰的儲存貯體,除非您停用請求標頭中的金鑰,否則物件層級操作將自動使用 S3 儲存貯體金鑰。如果您沒有為物件指定 S3 儲存貯體金鑰,Amazon S3 會將目的地儲存貯體的 S3 儲存貯體金鑰設定套用至物件。
若要加密現有的 Amazon S3 物件,您可以使用 S3 Batch Operations。您可以使用批次操作複製操作來複製現有的未加密物件,並將其作為加密物件寫入相同的儲存貯體中。如需詳細資訊,請參閱 AWS Storage Blog 上的使用 Amazon S3 批次操作加密物件
在下列範例中,您將使用 Batch Operations 複製操作,在現有物件上啟用 S3 儲存貯體金鑰。如需詳細資訊,請參閱在物件層級設定 S3 儲存貯體金鑰。
主題
使用 S3 Batch Operations 透過啟用 S3 儲存貯體金鑰來加密物件的考量
在您使用 S3 Batch Operations 透過 S3 儲存貯體金鑰來加密物件時,請考慮下列議題:
-
除了與 S3 批次操作代表您執行之作業相關聯的任何費用之外,還需支付 S3 批次操作任務、物件及請求之費用,包括資料傳輸、請求及其他費用。如需詳細資訊,請參閱 Amazon S3 定價
。 -
如果您使用無版本控制的儲存貯體,則執行的每個 S3 批次操作任務都會建立物件的新加密版本。同時也會保留先前沒有配置 S3 儲存貯體金鑰的版本。若要刪除舊版本,請如 生命週期組態元素 之描述,設定非最新版本 S3 生命週期過期政策。
-
複製操作會建立具有新建立日期的新物件,這會影響封存等生命週期動作。若您複製儲存貯體中的所有物件,則所有新副本皆會有相同或類似的建立日期。若要進一步識別這些物件,並為多個資料子集建立不同的生命週期規則,請考慮使用物件標籤。
先決條件
將物件設定為使用 S3 儲存貯體金鑰之前,請先檢閱啟用 S3 儲存貯體金鑰之前,要注意的變更。
若要使用此範例,您必須擁有 AWS 帳戶 和至少一個 S3 儲存貯體,以保留您的工作檔案和加密結果。您也可能會發現許多現有的 S3 批次操作文件極為有用,包括下列主題:
步驟 1:使用 Amazon S3 庫存取得您的物件清單
若要開始使用,請確認包含要加密之物件的 S3 儲存貯體,並取得其內容清單。Amazon S3 清查報告是執行此操作最方便且經濟實惠的方式。報告會提供儲存貯體中的物件清單,以及相關聯的中繼資料。在此步驟中,來源儲存貯體是已進行清查的儲存貯體,而目的地儲存貯體是您用於儲存庫存報告檔案的儲存貯體。如需 Amazon S3 清查來源和目的地儲存貯體的詳細資訊,請參閱「使用 S3 庫存清單編目和分析資料」。
設定庫存最簡單的方式就是使用 AWS Management Console。但您也可以使用 REST API、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs。在執行這些步驟前,請務必先登入主控台,然後開啟位於 https://console.aws.amazon.com/s3/
使用 S3 庫存取得您的物件清單
開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
在左側導覽窗格中,選擇儲存貯體,然後選擇包含要加密之物件的儲存貯體。
-
在 Management (管理) 索引標籤上,導覽至 Inventory configurations (庫存組態) 區段,然後選擇 Create inventory configuration (建立庫存組態)。
-
為您的新清查命名、輸入目的地 S3 儲存貯體的名稱,然後選擇是否要建立 Amazon S3 的目的地字首以指派物件至儲存貯體中。
-
在 Output format (輸出格式) 中,選擇 CSV。
-
(選用) 在其他欄位 - 選用區段中,選擇加密以及其他任何您感興趣的報告欄位。將報告傳送的頻率設定為 Daily (每日),以縮短第一份報告傳送至您儲存貯體的時間。
-
選擇 Create (建立) 以儲存您的組態。
Amazon S3 提供首份報告最多可能需要 48 小時,因此,請在第一份報告送達時再回來查看。收到第一份報告之後,請繼續進行下一個步驟來篩選 S3 庫存報告的內容。如果您不想再收到此儲存貯體的詳細清查報告,請刪除您的 S3 清查組態。否則 Amazon S3 會繼續依每日或每週排程傳送報告。
庫存清單不是所有物件的單一時間點視圖。庫存清單是儲存貯體項目的輪換快照,最終會趨於一致 (例如,清單可能不包含最近新增或刪除的物件)。結合 S3 庫存和 S3 批次操作,會在您使用靜態物件或使用兩天或更多天前建立的物件集時達到最佳效果。若要使用更新的資料,請使用 ListObjectsV2 (GET
儲存貯體) API 操作來手動建立物件清單。如有需要,請在接下來的幾天內重複此程序,或直到您的庫存報告顯示出所有物件的所需狀態為止。
第 2 步:使用 S3 Select 來篩選物件列表
在收到 S3 庫存報告之後,您可以篩選報告內容,僅列出未透過啟用 S3 儲存貯體金鑰來加密的物件。如果您希望透過啟用 S3 儲存貯體金鑰來加密所有儲存貯體的物件,則可以忽略此步驟。不過,在此階段篩選 S3 庫存報告,可為您節省重新加密先前透過啟用 S3 儲存貯體金鑰來加密物件所需的時間和費用。
雖然下列步驟示範如何使用 Amazon S3 Selectmanifest.json
檔案。此檔案會列出與該報告相關聯的資料檔案數量。如果數量龐大,請使用 Amazon Athena,因為其會在多個 S3 物件上運行,而 S3 Select 一次僅可在一個物件上運行。如需同時使用 Amazon S3 和 Athena 的詳細資訊,請參閱 AWS 使用 Amazon Athena 查詢 Amazon S3 庫存儲存部落格文章中的「使用 Athena」使用 Amazon S3 批次操作加密物件
使用 S3 Select 來篩選 S3 庫存報告
-
開啟您清查報告的
manifest.json
檔案,並查看 JSON 的fileSchema
區段。這會通知您在資料上執行的查詢。下面的 JSON 是範例
manifest.json
檔案,示範儲存貯體上已啟用版本控制的 CSV 格式庫存。依據您設定清查報告的方式,資訊清單可能會有所不同。{ "sourceBucket": "batchoperationsdemo", "destinationBucket": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
", "version": "2021-05-22", "creationTimestamp": "1558656000000", "fileFormat": "CSV", "fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker, BucketKeyStatus", "files": [ { "key": "demoinv/batchoperationsdemo/DemoInventory/data/009a40e4-f053-4c16-8c75-6100f8892202.csv.gz", "size": 72691, "MD5checksum": "c24c831717a099f0ebe4a9d1c5d3935c" } ] }如果未在儲存貯體上啟動版本控制,或者如果您選擇執行最新版本的報告,則
fileSchema
是Bucket
、Key
以及BucketKeyStatus
。如果版本控制已啟動,依據您設定清查報告的方式,
fileSchema
可能包含以下項目:Bucket
、Key
、VersionId
、IsLatest
、IsDeleteMarker
、BucketKeyStatus
。因此,在您執行查詢時,請注意第 1、2、3 和 6 欄。除了要搜尋的欄位 (即
BucketKeyStatus
) 之外,S3 批次操作還需要輸入儲存貯體、金鑰及版本 ID,以執行任務。您不需要VersionID
欄位,但在使用版本控制的儲存貯體上操作時,這有助於指定VersionID
欄位。如需詳細資訊,請參閱「使用已啟用版本控制之儲存貯體中的物件」。 -
找出清查報告的資料檔案。
manifest.json
物件會列出 files (檔案) 下的資料檔案。 -
在 S3 主控台中找出並選取資料檔案後,請選擇 Actions (動作),然後選擇 Query with S3 Select (使用 S3 Select 查詢)。
-
保留選取預設 CSV、Comma (逗號) 以及 GZIP 等欄位,然後選擇 Next (下一步)。
-
若要在繼續之前檢閱您的清查報告格式,請選擇 Show file preview (顯示檔案預覽)。
-
在 SQL 表達式欄位中輸入要參照的資料欄,然後選擇 Run SQL (執行 SQL)。下列運算式會傳回未設定 S3 儲存貯體金鑰之所有物件的第 1 至 3 欄。
select s._1, s._2, s._3 from s3object s where s._6 = 'DISABLED'
以下為結果範例。
batchoperationsdemo,0100059%7Ethumb.jpg,lsrtIxksLu0R0ZkYPL.LhgD5caTYn6vu batchoperationsdemo,0100074%7Ethumb.jpg,sd2M60g6Fdazoi6D5kNARIE7KzUibmHR batchoperationsdemo,0100075%7Ethumb.jpg,TLYESLnl1mXD5c4BwiOIinqFrktddkoL batchoperationsdemo,0200147%7Ethumb.jpg,amufzfMi_fEw0Rs99rxR_HrDFlE.l3Y0 batchoperationsdemo,0301420%7Ethumb.jpg,9qGU2SEscL.C.c_sK89trmXYIwooABSh batchoperationsdemo,0401524%7Ethumb.jpg,ORnEWNuB1QhHrrYAGFsZhbyvEYJ3DUor batchoperationsdemo,200907200065HQ%7Ethumb.jpg,d8LgvIVjbDR5mUVwW6pu9ahTfReyn5V4 batchoperationsdemo,200907200076HQ%7Ethumb.jpg,XUT25d7.gK40u_GmnupdaZg3BVx2jN40 batchoperationsdemo,201103190002HQ%7Ethumb.jpg,z.2sVRh0myqVi0BuIrngWlsRPQdb7qOS
-
下載結果,將結果儲存為 CSV 格式,然後將結果上傳到 Amazon S3 作為 S3 批次操作任務的物件清單。
-
如果您有多個清單檔案,也請在其上執行 Query with S3 Select (使用 S3 Select 查詢)。根據結果大小,您可以合併清單並執行單一 S3 批次操作任務,或將每個清單當成個別任務來執行。若要決定執行的作業數目,請考慮執行每個 S3 Batch Operations 作業的價格
。
步驟 3:設定並執行 S3 批次操作任務
現在,您已擁有經過篩選的 S3 物件 CSV 清單,可以開始 S3 Batch Operations 作業,以透過啟用 S3 儲存貯體金鑰來加密物件。
任務指的是所提供物件的列表 (清單)、執行的操作以及指定的參數。透過啟用 S3 儲存貯體金鑰來加密這組物件的最簡單方式就是使用複製操作,並指定與資訊清單中所列物件相同的目的地字首。在無版本控制的儲存貯體中,此操作會覆寫現有的物件。在開啟版本控制的儲存貯體中,此操作會建立更新、已加密的物件版本。
在複製物件時,請指定 Amazon S3 應使用 SSE-KMS 加密來加密物件。此作業會複製物件,因此無論您將物件新增至 Amazon S3 的最初時間為何,所有物件都會在完成時顯示更新的建立日期。也可以為您的物件集指定其他屬性,作為 S3 批次操作任務的一部分,包括物件標籤和儲存類別。
設定 IAM 政策
在 https://console.aws.amazon.com/iam/
中開啟 IAM 主控台。 -
在左側導覽窗格中,選擇政策,然後選擇建立政策。
-
請選擇 JSON 索引標籤。選擇 Edit policy (編輯政策),然後新增出現在下列程式碼區塊中的 IAM 政策範例。
將政策範例複製到您的 IAM 主控台
之後,請取代下列項目: -
將
取代為要從中複製物件的來源儲存貯體名稱。amzn-s3-demo-source-bucket
-
將
取代為要複製物件的目的地儲存貯體名稱。amzn-s3-demo-destination-bucket
-
以您的資訊清單物件名稱取代
。amzn-s3-demo-manifest-bucket
/manifest-key
-
將
取代為您要儲存完成報告的儲存貯體名稱。amzn-s3-demo-completion-report-bucket
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CopyObjectsToEncrypt", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectTagging", "s3:PutObjectAcl", "s3:PutObjectVersionTagging", "s3:PutObjectVersionAcl", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/*", "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ] }, { "Sid": "ReadManifest", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::
" }, { "Sid": "WriteReport", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/manifest-key
amzn-s3-demo-completion-report-bucket
/*" } ] } -
-
選擇 Next: Tags (下一步:標籤)。
-
新增您想要的標籤 (選用),然後選擇 Next: Review (下一步:檢閱)。
-
新增政策名稱並選擇性輸入描述,然後選擇 Create policy (建立政策)。
-
選擇 Review policy (檢閱政策),然後選擇 Save changes (儲存變更)。
-
現在已完成 S3 批次操作政策,主控台會將您導回 IAM Policies (政策) 頁面。篩選政策名稱,選擇政策名稱左側的按鈕,再選擇 Policy actions (政策動作),然後選擇 Attach (連接)。
若要將新建立的政策附加到 IAM 角色,請選取帳戶中適當的使用者、群組或角色,然後選擇 Attach policy (連接政策)。這會引導您返回 IAM 主控台。
設定批次操作 IAM 角色
-
在 IAM 主控台
的導覽窗格中,選擇角色,然後選擇建立角色。 -
選擇 AWS 服務、S3 以及 S3 批次操作。然後選擇 Next: Permissions (下一步:許可)。
-
開始輸入您剛建立的 IAM 政策名稱。選取政策名稱出現時的核取方塊,然後選擇 Next: Tags (下一步:標籤)。
-
(選用) 在本練習中新增標籤,或保持金鑰和值欄位空白。選擇 Next:Review (下一步:檢閱)。
-
輸入角色名稱,然後接受預設描述或新增自己的描述。選擇 Create role (建立角色)。
-
請確定建立任務的使用者具有以下範例中的權限。
以您的 AWS 帳戶 ID 取代
,並以您要套用至 IAM 角色的名稱 (稍後將在 Batch 批次操作建立步驟中建立該名稱) 來取代account-id
。如需詳細資訊,請參閱授予批次操作的許可。IAM-role-name
{ "Sid": "AddIamPermissions", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::
account-id
:role/IAM-role-name
" }
為現有儲存貯體啟用 S3 儲存貯體金鑰
開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
在儲存貯體清單中,選擇您要開啟 S3 儲存貯體金鑰的儲存貯體。
-
選擇 Properties (屬性)。
-
在 Default encryption (預設加密) 底下,選擇 Edit (編輯)。
-
在加密類型下,您可以選擇 Amazon S3 受管金鑰 (SSE-S3) 或 AWS Key Management Service 金鑰 (SSE-KMS)。
-
如果您選擇AWS Key Management Service 金鑰 (SSE-KMS),AWS KMS key您可以在 下透過下列其中一個選項指定 AWS KMS 金鑰。
-
若要從可用 KMS 金鑰清單中選擇,請選擇從您的 AWS KMS 金鑰中選擇。從可用金鑰清單中,然後選擇與您儲存貯體相同區域中的對稱加密 KMS 金鑰。 AWS 受管金鑰 (
aws/s3
) 和您的客戶受管金鑰都會顯示在清單中。 -
若要輸入 KMS 金鑰 ARN,請選擇輸入 AWS KMS 金鑰 ARN,然後在出現的欄位中輸入您的 KMS 金鑰 ARN。
-
若要在 AWS KMS 主控台中建立新的客戶受管金鑰,請選擇建立 KMS 金鑰。
-
-
在 Bucket Key (儲存貯體金鑰) 底下,選擇 Enable (啟用),然後選擇 Save changes (儲存變更)。
現在,S3 儲存貯體金鑰已在儲存貯體層級啟用,上傳、修改或複製到此儲存貯體的物件預設會繼承此加密組態。其中就包含使用 Amazon S3 批次操作複製的物件。
建立批次操作任務
開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
在導覽窗格中,選擇 Batch Operations (批次操作),然後選擇 Create Job (建立任務)。
-
選擇您存放物件的 Region (區域),然後選擇 CSV 作為資訊清單類型。
-
輸入路徑或導覽至您先前從 S3 Select (或 Athena) 結果建立的 CSV 資訊清單檔案。如果您的資訊清單包含版本 ID,請選取該方塊。選擇 Next (下一步)。
-
選擇 Copy (複製) 操作,然後選擇複製目的地儲存貯體。您可以保持停用伺服器端加密。只要儲存貯體目的地已啟用 S3 儲存貯體金鑰,複製操作便會在目的地儲存貯體中套用 S3 儲存貯體金鑰。
-
(選用) 視需要選擇儲存類別和其他參數。您在此步驟中指定的參數會套用至對資訊清單中所列物件執行的所有操作。選擇 Next (下一步)。
-
若要設定伺服器端加密,請執行下列步驟:
-
在伺服器端加密下,選擇下列其中一項:
-
若要在將物件存放到 Amazon S3 時,保留預設伺服器端加密的儲存貯體設定,請選擇不指定加密金鑰。只要儲存貯體目的地已啟用 S3 儲存貯體金鑰,複製操作便會在目的地儲存貯體中套用 S3 儲存貯體金鑰。
注意
若指定目的地的儲存貯體政策要求物件先加密,再存放到 Amazon S3,則您必須指定加密金鑰。否則,便無法將物件複製到目的地。
-
若要先加密物件再存放到 Amazon S3,請選擇指定加密金鑰。
-
-
在加密設定下,若您選擇指定加密金鑰,則必須選擇使用目的地儲存貯體設定做為預設加密或覆寫預設加密的目的地儲存貯體設定。
-
若您選擇覆寫預設加密的目的地儲存貯體設定,則您必須設定下列加密設定。
-
在加密類型下,您必須選擇 Amazon S3 受管金鑰 (SSE-S3) 或 AWS Key Management Service 金鑰 (SSE-KMS)。SSE-S3 使用目前最強大的其中一種區塊加密法,也就是 256 位元進階加密標準 (AES-256),來加密每個物件。SSE-KMS 可以讓您更完善地控制金鑰。如需詳細資訊,請參閱 使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密 和 搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)。
-
若您選擇 AWS Key Management Service 金鑰 (SSE-KMS),在 AWS KMS key 之下,您可以透過下列其中一個選項指定 AWS KMS key 。
-
若要從可用的 KMS 金鑰清單中選擇,請選擇從 中選擇 AWS KMS keys,然後在與儲存貯體相同的區域中選擇對稱加密 KMS 金鑰。 AWS 受管金鑰 (
aws/s3
) 和您的客戶受管金鑰都會顯示在清單中。 -
若要輸入 KMS 金鑰 ARN,請選擇輸入 AWS KMS 金鑰 ARN,然後在出現的欄位中輸入您的 KMS 金鑰 ARN。
-
若要在 AWS KMS 主控台中建立新的客戶受管金鑰,請選擇建立 KMS 金鑰。
-
-
在 Bucket Key (儲存貯體金鑰) 底下,選擇 Enable (啟用)。複製操作會在目的地儲存貯體套用至 S3 儲存貯體金鑰。
-
-
-
為您的任務提供描述 (或保留預設值)、設定其優先順序層級、選擇報告類型,並指定 Path to completion report destination (完成報告目的地的路徑)。
-
在 Permissions (許可) 區段中,請務必選擇您先前定義的批次操作 IAM 角色。選擇 Next (下一步)。
-
請在 Review (檢閱) 中驗證設定。如需變更,請選擇 Previous (上一步)。確認批次操作設定後,請選擇 Create job (建立任務)。
如需詳細資訊,請參閱「建立 S3 批次操作任務」。
執行批次操作任務
設定精靈會自動返回 Amazon S3 主控台的 S3 Batch Operations (S3 批次操作) 區段。在 S3 開始該過程後,您的新任務會從 New (全新) 狀態轉換為 Preparing (正在準備) 狀態。在 Preparing (準備) 狀態期間,S3 會讀取工作的資訊清單、檢查工作是否有錯誤,並計算物件數量。
-
選擇 Amazon S3 主控台中的重新整理按鈕,以檢查進度。依資訊清單大小而定,讀取可能需要幾分鐘或幾小時。
-
在 S3 完成讀取任務的資訊清單後,任務會移 至Awaiting your confirmation (等待確認) 狀態。選擇任務 ID 左側的選項按鈕,然後選擇 Run job (執行任務)。
-
檢查任務的設定,然後選擇右下角的 Run job (執行任務)。
在任務開始執行後,您可以選擇重新整理按鈕,透過主控台儀表板檢視或選取特定任務來檢查進度。
-
在任務完成時,您可以檢視 Successful (成功) 和 Failed (失敗) 的物件計數,以確認所有內容都如預期般執行。如果您已啟用任務報告,請檢查任務報告,以了解任何操作失敗的確切原因。
您也可以使用、 AWS CLI AWS SDKs或 Amazon S3 REST API 來執行這些步驟。如需追蹤任務狀態和完成報告的詳細資訊,請參閱「追蹤任務狀態和完成報告」。