在建立儲存貯體時設定「物件擁有權」 - Amazon Simple Storage Service

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

在建立儲存貯體時設定「物件擁有權」

建立儲存貯體時,您可以設定 S3 物件所有權。若要設定現有儲存貯體的「物件擁有權」,請參閱 設定現有儲存貯體的「物件擁有權」

S3 物件擁有權是 Amazon S3 儲存貯體層級設定,可用來停用存取控制清單 (ACLs) 和取得儲存貯體中每個物件的所有權,簡化 Amazon S3 中存放資料的存取管理。根據預設,S3 物件擁有權會設定為「儲存貯體擁有者強制執行」設定,並ACLs針對新儲存貯體停用。ACLs停用時,值區擁有者會擁有值區中的每個物件,並使用存取管理原則專門管理資料的存取權。建議您保持ACLs停用狀態,除非在特殊情況下,您必須個別控制每個物件的存取權限。

「物件擁有權」有三種設定,可用來控制上載至值區之物件的擁有權,以及停用或啟用ACLs:

ACLs殘疾
  • 強制執行值區擁ACLs有者 (預設值) — 已停用,值區擁有者會自動擁有並完全控制值區中的每個物件。ACLs不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

ACLs啟用
  • 偏好的值區擁有者 — 值區擁有者擁有並可完全控制其他帳號以bucket-owner-full-control固定方式寫入值區的新物件ACL。

  • 物件寫入器 — 上傳物件 AWS 帳戶 的物件擁有物件、擁有物件的完全控制權,並且可以透過授與其他使用者存取該物件ACLs。

許可:若要套用 Bucket owner enforced (儲存貯體擁有者強制執行) 設定或 Bucket owner preferred (儲存貯體擁有者偏好) 設定,您必須擁有以下許可:s3:CreateBuckets3:PutBucketOwnershipControls。在套用 Object writer (物件寫入器) 設定的情況下建立儲存貯體時,不需要其他許可。如需 Amazon S3 許可的詳細資訊,請參閱服務授權參考適用於 Amazon S3 的動作、資源和條件金鑰

重要

Amazon S3 中的大多數現代使用案例不再需要使用ACLs,建議您停用,ACLs除非您需要個別控制每個物件的存取權限的異常情況。使用物件擁有權,您可以停用ACLs並依賴原則來進行存取控制。停用時ACLs,您可以輕鬆維護值區,其中包含由不同 AWS 帳戶上傳的物件。身為儲存貯體擁有者,您擁有儲存貯體中的所有物件,並且可以使用政策管理對物件的存取。

  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/

  2. 在頁面頂端的導覽列中,選擇目前顯示的名稱 AWS 區域。接下來,選擇您要在其中建立值區的「區域」。

    注意

    請選擇接近您的區域,以充分降低延遲及成本,並因應法規要求。除非您明確地將存放在區域中的物件傳輸到其他區域,否則物件絕對不會離開該區域。如需 Amazon S3 的清單 AWS 區域,AWS 服務 請參閱 Amazon Web Services 一般參考.

  3. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  4. 選擇 Create bucket (建立儲存貯體)。

    Create bucket (建立儲存貯體) 頁面隨即開啟。

  5. 在 [一般設定] 下方,檢視 AWS 區域 儲存貯體的建立位置。

  6. 在「鏟斗類型」下選擇「一般用途」。

  7. 針對 Bucket name (儲存貯體名稱),輸入儲存貯體的名稱。

    儲存貯體名稱必須;

    • 在分割區內不重複。分割區是區域的群組。 AWS 目前有三個分割區:aws(標準區域)、aws-cn(中國區域) 和 aws-us-gov (AWS GovCloud (US) Regions)。

    • 長度必須介於 3 與 63 個字元之間。

    • 只能由小寫字母、數字、句點 (.) 和連字號 (-) 組成。為了獲得最佳相容性,建議您避免在儲存貯體名稱中使用句點 (.),但僅用於靜態網站託管的儲存貯體除外。

    • 開頭和結尾為字母或數字。

    建立儲存貯體後,便無法變更其名稱。如需儲存貯體命名的詳細資訊,請參閱 儲存貯體命名規則

    重要

    避免在儲存貯體名稱中包含敏感資訊,例如帳戶號碼。值區名稱會顯URLs示在值區中的物件。

  8. AWS Management Console 可讓您將現有值區的設定複製到新值區。如果您不想複製現有值區的設定,請跳至下一個步驟。

    注意

    此選項:

    • 無法在中使用, AWS CLI 且只能在主控台中使用

    • 不適用於目錄值區

    • 不會將值區政策從現有值區複製到新值區

    若要複製現有值區的設定,請在 [從現有值區複製設定] 底下,選取 [選擇值區]。「選擇時段」視窗即會開啟。找出包含您要複製之設定的值區,然後選取 [選擇值區]。「選擇時段」視窗即會關閉,且「建立時段」視窗會重新開啟。

    在「從現有值區複製設定」 下方,您現在會看到所選值區的名稱。您也會看到 [還原預設值] 選項,可用來移除複製的值區設定。檢閱「建立值區」頁面上的剩餘值區設定。您將看到它們現在與您選擇的存儲桶的設置匹配。您可以跳到最後一步。

  9. 在「物件擁有權」下,若要停用或啟用ACLs及控制值區中上傳物件的擁有權,請選擇下列其中一項設定:

    ACLs殘疾
    • 強制執行值區擁ACLs有者 (預設值) — 已停用,值區擁有者會自動擁有並完全控制值區中的每個物件。ACLs不再影響 S3 儲存貯體中資料的存取權限。儲存貯體單獨使用政策來定義存取控制。

      依預設,ACLs會停用。Amazon S3 中的大多數現代使用案例不再需要使用ACLs。建議您保持ACLs停用狀態,除非在特殊情況下,您必須個別控制每個物件的存取權限。如需詳細資訊,請參閱控制物件的擁有權並停ACLs用值區

    ACLs啟用
    • 偏好的值區擁有者 — 值區擁有者擁有並可完全控制其他帳號以bucket-owner-full-control固定方式寫入值區的新物件ACL。

      如果您套用儲存貯體擁有者偏好設定,若要要求所有 Amazon S3 上傳都包含bucket-owner-full-control罐裝內容ACL,您可以新增儲存貯體政策,該政策只允許使用此功能的物件上傳ACL。

    • 物件寫入器 — 上傳物件 AWS 帳戶 的物件擁有物件、擁有物件的完全控制權,並且可以透過授與其他使用者存取該物件ACLs。

    注意

    預設設定為儲存貯體擁有者強制執行。若要套用預設設定並保持ACLs停用狀態,只需要s3:CreateBucket權限。若要啟用ACLs,您必須擁有s3:PutBucketOwnershipControls權限。

  10. 封鎖此儲存貯體的公開存取設定之下,選擇要套用至儲存貯體的封鎖公開存取設定。

    根據預設,會啟用全部四個「封鎖公開存取」設定。建議您將所有設定保持啟用狀態,除非您知道需要針對特定使用案例關閉其中一或多個設定。如需封鎖公開存取的詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權

    注意

    若要啟用所有「封鎖公用存取」設定,只需要 s3:CreateBucket 許可。若要關閉任何「封鎖公開存取」設定,您必須具有 s3:PutBucketPublicAccessBlock 許可。

  11. (選用) 在 Bucket Versioning (儲存貯體版本控制) 下,您可以選擇是否要在儲存貯體中保留物件的變體。如需版本控制的詳細資訊,請參閱「在 S3 儲存貯體中使用版本控制」。

    若要對儲存貯體停用或啟用版本控制,請選擇 Disable (停用) 或 Enable (啟用)。

  12. (選用) 在 Tags (標籤) 下,您可以選擇新增標籤至儲存貯體。標籤是用來分類儲存的鍵值對。

    若要新增儲存貯體標籤,請輸入 Key (金鑰) 並選擇性地輸入 Value (值),然後選擇 Add tag (新增標籤)。

  13. Default encryption (預設加密) 底下,選擇 Edit (編輯)

  14. 若要設定預設加密,請在加密類型下,選擇下列其中一項:

    • Amazon S3 受管金鑰 (SSE-S3)

    • AWS Key Management Service 鍵 (SSE-KMS)

      重要

      如果您對預設加密組態使用 SSE-KMS 選項,則會受到的每秒要求數 (RPS) 配額限制 AWS KMS。如需有關 AWS KMS 配額以及如何要求提高配額的詳細資訊,請參閱AWS Key Management Service 開發人員指南中的配額

    儲存貯體和新物件會以 Amazon S3 受管金鑰做為基本加密組態層級,使用伺服器端加密。如需預設加密的詳細資訊,請參閱對 Amazon S3 儲存貯體設定預設伺服器端加密行為

    如需有關使用 Amazon S3 伺服器端加密來加密資料的詳細資訊,請參閱「搭配 Amazon S3 受管金鑰使用伺服器端加密 (SSE-S3)」。

  15. 如果您選擇 AWS Key Management Service key (SSE-KMS),請執行下列動作:

    1. AWS KMS key 下,以下列其中一種方式指定您的KMS金鑰:

      • 若要從可用KMS金鑰清單中選擇,請選擇「從您的金鑰中選擇」 AWS KMS keys,然後從可用金KMS鑰清單中選擇金鑰。

        AWS 受管金鑰 (aws/s3) 和您的客戶管理金鑰都會出現在此清單中。如需詳細了解客戶受管金鑰,請參閱《AWS Key Management Service 開發人員指南》中的客戶金鑰和 AWS 金鑰

      • 若要輸入KMS金鑰ARN,請選擇 Enter AWS KMS key ARN,然後在顯示的欄位ARN中輸入KMS金鑰。

      • 若要在 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) 指定伺服器端加密

      當您在 Amazon S3 中使 AWS KMS key 用伺服器端加密時,您必須選擇對稱加密KMS金鑰。Amazon S3 僅支援對稱加密KMS金鑰,而不支援非對稱KMS金鑰。如需詳細資訊,請參閱AWS Key Management Service 開發人員指南中的識別對稱和非對稱KMS金鑰

      如需有關建立金鑰的詳細資訊 AWS KMS key,請參閱AWS Key Management Service 開發人員指南中的建立金鑰。如需 AWS KMS 搭配 Amazon S3 使用的詳細資訊,請參閱搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)

    2. 當您將儲存貯體設定為使用預設加密搭配 SSE-時KMS,您也可以啟用 S3 儲存貯體金鑰。S3 儲存貯體金鑰透過將 Amazon S3 的請求流量減少到,從而降低加密成本 AWS KMS。如需詳細資訊,請參閱KMS使用 Amazon S3 儲存貯體金鑰降低成本 SSE

      若要使用 S3 儲存貯體金鑰,在 Bucket Key (儲存貯體金鑰) 下選擇 Enable (啟用)

  16. (選用) 如果您想要啟用 S3 物件鎖定,請執行下列動作:

    1. 選擇 Advanced settings (進階設定)

      重要

      啟用物件鎖定也會啟用儲存貯體的版本控制。啟用後,您必須設定「物件鎖定」預設保留和合法保留設定,以防止新物件遭到刪除或覆寫。

    2. 如果想要啟用物件鎖定,請選擇 Enable (啟用)、讀取出現的警告並確認。

    如需詳細資訊,請參閱使用 S3 物件鎖定

    注意

    若要建立已啟用物件鎖定的儲存貯體,您必須具備下列許可:s3:CreateBuckets3:PutBucketVersionings3:PutBucketObjectLockConfiguration

  17. 選擇建立儲存貯體

若要在建立新值區時設定物件擁有權,請使用create-bucket AWS CLI 指令搭配--object-ownership參數。

此範例會使用 AWS CLI為新的儲存貯體套用「儲存貯體擁有者強制執行」設定:

aws s3api create-bucket --bucket amzn-s3-demo-bucket --region us-east-1 --object-ownership BucketOwnerEnforced
重要

如果您在使用建立值區時未設定物件擁有權 AWS CLI,則預設設定為 ObjectWriter (ACLs已啟用)。

此範例會使用 AWS SDK for Java為新的儲存貯體設定「儲存貯體擁有者強制執行」設定:

// 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 AWS CloudFormation 資源來設定物件擁有權,請參閱《使AWS CloudFormation 用指南》OwnershipControlsAWS::S3::Bucket的〈〉。

若要針對 S3 物件擁有權套用儲存貯體擁有者強制執行設定,請使用x-amz-object-ownership要求標頭設定為的CreateBucketAPI作業BucketOwnerEnforced。如需相關資訊和範例,請參閱 Amazon 簡單儲存服務API參考CreateBucket中的。

後續步驟:套用「物件擁有權」的儲存貯體擁有者強制執行設定或儲存貯體擁有者偏好設定之後,您可以進一步採取下列步驟:

  • 強制執行值區擁有者 — 要求所有新值區都必須使用IAM或 Organizations 政策建立而ACLs停用。

  • 偏好的儲存貯體擁有者 — 新增 S3 儲存貯體政策,以要求將所有物件上傳至儲存貯體的bucket-owner-full-control固ACL定項目。