在建立儲存貯體時設定「物件擁有權」
建立儲存貯體時,您可以設定 S3 物件所有權。若要設定現有儲存貯體的「物件擁有權」,請參閱 設定現有儲存貯體的「物件擁有權」。
S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定,可讓您停用存取控制清單 (ACL) 並取得儲存貯體中每個物件的擁有權,簡化存放在 Amazon S3 中資料的存取管理。根據預設,新儲存貯體的 S3 物件擁有權會設定為儲存貯體擁有者強制執行設定,而且會停用 ACL。停用 ACL 後,儲存貯體擁有者會擁有儲存貯體中的每個物件,並使用存取管理政策專門管理對資料的存取。建議您將 ACL 保時停用狀態,除非在異常情況下必須個別控制每個物件的存取。
「物件擁有權」有三項設定,可讓您用來控制對上傳至儲存貯體之物件的擁有權,以及停用或啟用 ACL:
已停用 ACL
-
儲存貯體擁有者強制執行 (預設) - 停用 ACL,儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。
已啟用 ACL
-
儲存貯體擁有者偏好 – 儲存貯體擁有者擁有並完全控制其他帳戶使用
bucket-owner-full-control標準 ACL 寫入儲存貯體的新物件。 -
Object writer (物件寫入者) – 上傳物件的 AWS 帳戶,上傳的物件可擁有物件、完全控制該物件,並且可以透過 ACL 授權其他使用者存取該物件。
許可:若要套用 Bucket owner enforced (儲存貯體擁有者強制執行) 設定或 Bucket owner preferred (儲存貯體擁有者偏好) 設定,您必須擁有以下許可:s3:CreateBucket 和 s3:PutBucketOwnershipControls。在套用 Object writer (物件寫入器) 設定的情況下建立儲存貯體時,不需要其他許可。如需 Amazon S3 許可的詳細資訊,請參閱服務授權參考中的 Amazon S3 的動作、資源和條件索引鍵。
如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可。
重要
Amazon S3 中的大多數現代使用案例不再需要使用 ACL,建議您停用 ACL,除非在需要個別控制每個物件存取權的情況下。使用「物件擁有權」,您可以停用 ACL,並依賴政策來進行存取控制。停用 ACL 時,您可以輕鬆地維護具有由不同 AWS 帳戶上傳之物件的儲存貯體。身為儲存貯體擁有者,您擁有儲存貯體中的所有物件,並且可以使用政策管理對物件的存取。
登入 AWS 管理主控台,並開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
在頁面頂端的導覽列中,選擇目前顯示的 AWS 區域名稱。接下來,選擇您要在其中建立儲存貯體的區域。
注意
-
建立儲存貯體後,您無法變更其區域。
-
請選擇接近您的區域,以充分降低延遲及成本,並因應法規要求。除非您明確地將存放在區域中的物件傳輸到其他區域,否則物件絕對不會離開該區域。如需 Amazon S3 AWS 區域 的清單,請參閱Amazon Web Services 一般參考中的 AWS 服務 端點
-
-
在左側導覽窗格中,選擇一般用途儲存貯體。
-
選擇 Create bucket (建立儲存貯體)。Create bucket (建立儲存貯體) 頁面隨即開啟。
-
針對 Bucket name (儲存貯體名稱),輸入儲存貯體的名稱。
儲存貯體名稱必須;
-
在分割區內不重複。分割區是一組區域。AWS 目前有三個分割區:
aws(商業區域)、aws-cn(中國區域) 和aws-us-gov(AWS GovCloud (US) Regions)。 -
長度必須介於 3 與 63 個字元之間。
-
只能由小寫字母、數字、句號 (
.) 和連字號 (-) 組成。為了獲得最佳相容性,建議您避免在儲存貯體名稱中使用句號 (.),但僅用於靜態網站託管的儲存貯體除外。 -
開頭和結尾為字母或數字。
-
如需儲存貯體命名規則的完整清單,請參閱 一般用途儲存貯體命名規則。
重要
-
建立儲存貯體後,便無法變更其名稱。
-
請勿在儲存貯體名稱中包含敏感資訊。在指向儲存貯體中之物件的 URL 中,會顯示儲存貯體名稱。
-
-
(選用) 在一般組態下,您可以選擇將現有儲存貯體的設定,複製到新的儲存貯體。如果您不想複製現有儲存貯體的設定,請跳至下一個步驟。
注意
這個選項:
在 AWS CLI 中無法使用,只能在 Amazon S3 主控台使用
不會將現有儲存貯體中的儲存貯體政策複製到新儲存貯體
若要複製現有儲存貯體的設定,請在複製現有儲存貯體中的設定下,選取選擇儲存貯體。選擇儲存貯體視窗隨即開啟。尋找您要複製其設定的儲存貯體,然後選取選擇儲存貯體。選擇儲存貯體視窗隨即關閉,並重新開啟建立儲存貯體視窗。
在複製現有儲存貯體中的設定下,現在您會看到所選儲存貯體的名稱。新儲存貯體的設定目前符合您選取的儲存貯體設定。如果您想要移除複製的設定,請選擇還原預設值。在建立儲存貯體頁面上,檢閱其餘儲存貯體設定。如果您不要做任何變更,可以跳到最後一個步驟。
-
在 Object Ownership (物件擁有權) 下,若要停用或啟用 ACL 並控制上傳在儲存貯體中物件的擁有權,請選擇下列其中一個設定:
已停用 ACL
-
儲存貯體擁有者強制執行 (預設) - 停用 ACL,儲存貯體擁有者會自動擁有並完全控制一般用途儲存貯體中的每個物件。ACL 不再影響 S3 一般用途儲存貯體中資料的存取許可。儲存貯體單獨使用政策來定義存取控制。
根據預設,會停用 ACL。Amazon S3 中的大多數新式使用案例不再需要使用 ACL。建議您將 ACL 保時停用狀態,除非在必須個別控制每個物件存取的情況下。如需更多詳細資訊,請參閱 控制物件的擁有權並停用儲存貯體的 ACL。
已啟用 ACL
-
儲存貯體擁有者偏好 – 儲存貯體擁有者擁有並完全控制其他帳戶使用
bucket-owner-full-control標準 ACL 寫入儲存貯體的新物件。如果您套用儲存貯體擁有者偏好設定,以要求所有 Amazon S3 上傳都包含
bucket-owner-full-control固定 ACL 時,您可以新增儲存貯體政策,只允許使用此 ACL 的物件上傳。 -
Object writer (物件寫入者) – 上傳物件的 AWS 帳戶,上傳的物件可擁有物件、完全控制該物件,並且可以透過 ACL 授權其他使用者存取該物件。
注意
預設設定為儲存貯體擁有者強制執行。若要套用預設設定並將 ACL 保持停用狀態,只需要
s3:CreateBucket許可。若要啟用 ACL,您必須具有s3:PutBucketOwnershipControls許可。 -
-
在封鎖此儲存貯體的公開存取設定之下,選擇要套用至儲存貯體的封鎖公開存取設定。
根據預設,會啟用全部四個「封鎖公開存取」設定。建議您將所有設定保持啟用狀態,除非您知道需要針對特定使用案例關閉其中一或多個設定。如需封鎖公開存取的詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權。
注意
若要啟用所有「封鎖公用存取」設定,只需要
s3:CreateBucket許可。若要關閉任何「封鎖公開存取」設定,您必須具有s3:PutBucketPublicAccessBlock許可。 -
(選用) 根據預設,會停用儲存貯體版本控制。版本控制是在相同儲存貯體中保留多個物件版本的方式。您可以使用版本控制功能來保留、擷取和恢復在 儲存貯體中所存放每個物件的各個版本。透過版本控制,您可以更輕鬆地復原失誤的使用者動作和故障的應用程式。如需版本控制的詳細資訊,請參閱「使用 S3 版本控制保留多個版本的物件」。
若要在儲存貯體上啟用版本控制,請選擇啟用。
-
(選用) 在 Tags (標籤) 下,您可以選擇新增標籤至儲存貯體。透過 AWS 成本配置,您可以使用儲存貯體標籤來標註儲存貯體用量的帳單。標籤為一組金鑰/值對,代表指派給儲存貯體的標籤。如需更多詳細資訊,請參閱 使用成本分配 S3 儲存貯體標籤。
若要新增儲存貯體標籤,請輸入 Key (金鑰) 並選擇性地輸入 Value (值),然後選擇 Add tag (新增標籤)。
-
若要設定預設加密,請在加密類型下,選擇下列其中一項:
-
使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密
-
以 AWS Key Management Service 金鑰 (SSE-KMS) 進行伺服器端加密
-
以 AWS Key Management Service (AWS KMS) 金鑰 (DSSE-KMS) 進行雙層伺服器端加密
重要
如果您針對預設加密組態使用 SSE-KMS 或 DSSE-KMS 選項,則受到 AWS KMS 的每秒請求數目 (RPS) 配額限制。如需 AWS KMS 配額以及如何請求提高配額的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的配額。
儲存貯體和新物件會以 Amazon S3 受管金鑰 (SSE-S3) 做為基本加密組態層級,使用伺服器端加密來進行加密。如需預設加密的詳細資訊,請參閱對 Amazon S3 儲存貯體設定預設伺服器端加密行為。如需 SSE-S3 的詳細資訊,請參閱 使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密。
如需有關使用伺服器端加密來加密資料的詳細資訊,請參閱 使用加密來保護資料。
-
-
若您選擇使用 AWS Key Management Service 金鑰 (SSE-KMS) 進行伺服器端加密或使用 AWS Key Management Service (AWS KMS) 金鑰 (DSSE-KMS) 進行雙層伺服器端加密,請執行下列動作:
-
在 AWS KMS 金鑰下,使用下列其中一種方式指定 KMS 金鑰:
-
若要從可用的 KMS 金鑰清單中選擇,請選擇從 AWS KMS keys 中選擇,然後從可用金鑰清單中選擇您的 KMS 金鑰。
AWS 受管金鑰 (
aws/s3) 和您的客戶受管金鑰都會出現在此清單中。如需詳細了解客戶受管金鑰,請參閱《AWS Key Management Service 開發人員指南》中的客戶金鑰和 AWS 金鑰。 -
若要輸入 KMS 金鑰 ARN,請選擇輸入 AWS KMS key ARN,然後在出現的欄位中輸入您的 KMS 金鑰 ARN。
-
若要在 AWS KMS 主控台建立新的客戶受管金鑰,請選擇建立 KMS 金鑰。
如需建立 AWS KMS key 的詳細資訊,請參閱《AWS Key Management Service開發人員指南》中的建立金鑰。
重要
您只能使用在與儲存貯體相同的 AWS 區域 中可用的 KMS 金鑰。Amazon S3 主控台僅會列出與儲存貯體位於相同區域的前 100 個 KMS 金鑰。若要使用未列出的 KMS 金鑰,必須輸入 KMS 金鑰 ARN。若您想要使用其他帳戶的 KMS 金鑰,您必須先具有該金鑰的使用權限,然後輸入 KMS 金鑰 ARN。如需有關 KMS 金鑰跨帳戶權限的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的建立其他帳戶可使用的 KMS 金鑰。如需 SSE-KMS 的詳細資訊,請參閱「使用 AWS KMS (SSE-KMS) 指定伺服器端加密」。如需 DSSE-KMS 的詳細資訊,請參閱 搭配 AWS KMS 金鑰 (DSSE-KMS) 使用雙層伺服器端加密。
當您使用 AWS KMS key 在 Amazon S3 中進行伺服器端加密時,必須選擇對稱加密 KMS 金鑰。Amazon S3 僅支援對稱加密 KMS 金鑰,而不支援非對稱 KMS 金鑰。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的識別對稱和非對稱 KMS 金鑰。
-
-
當您將儲存貯體設定為使用 SSE-KMS 的預設加密時,您還可以使用 S3 儲存貯體金鑰。S3 儲存貯體金鑰可減少從 Amazon S3 到 AWS KMS 的請求流量,從而降低加密成本。如需更多詳細資訊,請參閱 使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本。DSSE-KMS 不支援 S3 儲存貯體金鑰。
根據預設,會在 Amazon S3 主控台啟用 S3 儲存貯體金鑰。建議您將 S3 儲存貯體金鑰維持啟用狀態,以降低成本。若要停用儲存貯體的 S3 儲存貯體金鑰,請在儲存貯體金鑰下選擇停用。
-
-
(選用) S3 物件鎖定有助於保護新物件免遭刪除或覆寫。如需更多詳細資訊,請參閱 使用物件鎖定來鎖定物件。如果您想要啟用 S3 物件鎖定,請執行下列動作:
-
選擇 Advanced settings (進階設定)。
重要
啟用物件鎖定會自動啟用儲存貯體的版本控制。啟用並成功建立儲存貯體之後,您還必須在儲存貯體的屬性索引標籤上設定物件鎖定預設保留,以及法務保存設定。
-
如果想要啟用物件鎖定,請選擇 Enable (啟用)、讀取出現的警告並確認。
注意
若要建立已啟用物件鎖定的儲存貯體,您必須具備下列權限:
s3:CreateBucket、s3:PutBucketVersioning和s3:PutBucketObjectLockConfiguration。 -
-
選擇 Create bucket (建立儲存貯體)。
若要在建立新儲存貯體時設定「物件擁有權」,請使用具有 --object-ownership 參數的 create-bucket AWS CLI 命令。
此範例會使用 AWS CLI 為新的儲存貯體套用「儲存貯體擁有者強制執行」設定:
aws s3api create-bucket --bucketamzn-s3-demo-bucket--regionus-east-1--object-ownership BucketOwnerEnforced
重要
如果您在使用 AWS CLI 建立儲存貯體時未設定物件擁有權,則預設設定將為 ObjectWriter (ACL 已啟用)。
此範例會使用 適用於 Java 的 AWS SDK 為新的儲存貯體設定「儲存貯體擁有者強制執行」設定:
// Build the ObjectOwnership for CreateBucket CreateBucketRequest createBucketRequest = CreateBucketRequest.builder() .bucket(bucketName) .objectOwnership(ObjectOwnership.BucketOwnerEnforced) .build() // Send the request to Amazon S3 s3client.createBucket(createBucketRequest);
若要使用 AWS::S3::Bucket CloudFormation 資源在建立新儲存貯體時設定物件擁有權,請參閱《AWS CloudFormation 使用者指南》中的 AWS::S3::Bucket 內的 OwnershipControls。
若要套用 S3 物件擁有權的「儲存貯體擁有者強制執行」設定,請使用 CreateBucket API 操作 (x-amz-object-ownership 請求標頭設定為 BucketOwnerEnforced)。如需資訊和範例,請參閱《Amazon Simple Storage Service API 參考》中的 CreateBucket。
後續步驟:套用「物件擁有權」的儲存貯體擁有者強制執行設定或儲存貯體擁有者偏好設定之後,您可以進一步採取下列步驟:
-
儲存貯體擁有者強制執行 – 需要使用 IAM 或 Organizations 政策,在停用 ACL 的情況下建立所有新儲存貯體。
-
儲存貯體擁有者偏好 – 新增 S3 儲存貯體政策,以要求所有物件上傳到您儲存貯體的
bucket-owner-full-control標準 ACL。