為您的 S3 儲存貯體設定封鎖公開存取 - Amazon Simple Storage Service

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

為您的 S3 儲存貯體設定封鎖公開存取

Amazon S3 Block Public Access 提供存取點、儲存貯體、組織和帳戶的設定,協助您管理對 Amazon S3 資源的公開存取。依預設,新的儲存貯體、存取點和物件不允許公開存取。如需詳細資訊,請參閱封鎖對 Amazon S3 儲存體的公開存取權

注意

儲存貯體層級封鎖公開存取設定可與組織和帳戶層級政策搭配使用。S3 會在儲存貯體層級和有效的帳戶層級組態之間套用最嚴格的設定 (如果有的話,可由組織政策強制執行)。

您可以使用 S3 主控台、 AWS CLI、 AWS SDKs 和 REST API 來授予一或多個儲存貯體的公開存取權。您也可以封鎖對已公開之儲存貯體的公開存取。如需詳細資訊,請參閱以下各區段。

若要為您帳戶中的每個儲存貯體設定封鎖公開存取,請參閱 為您的帳戶設定封鎖公開存取。如需整個組織的集中式管理,請參閱AWS Organizations 《 使用者指南》中的 S3 政策

如需有關為存取點設定封鎖公開存取的資訊,請參閱 在存取點執行封鎖公開存取操作

Amazon S3 封鎖公開存取可防止套用任何設定而允許公開存取 S3 儲存貯體內的資料。本節說明如何編輯一或多個 S3 儲存貯體的封鎖公開存取設定。如需使用 AWS CLI、 AWS SDKs和 Amazon S3 REST APIs 封鎖公開存取的資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權

IAM Access Analyzer 欄,您可以查看您的儲存貯體是否可從儲存貯體清單中公開存取。如需詳細資訊,請參閱使用 IAM Access Analyzer for S3 檢閱儲存貯體存取權

如果您在列出儲存貯體及其公用存取設定時看到 Error,則您可能沒有所需的許可。檢查以確保您已將下列許可新增至您的使用者或角色政策中:

s3:GetAccountPublicAccessBlock s3:GetBucketPublicAccessBlock s3:GetBucketPolicyStatus s3:GetBucketLocation s3:GetBucketAcl s3:ListAccessPoints s3:ListAllMyBuckets

在極少數狀況下,請求也可能因 AWS 區域 中斷而失敗。

編輯單個 S3 儲存貯體的 Amazon S3 封鎖公開存取設定

如果您需要變更單一 S3 儲存貯體的公開存取設定,請遵循下列步驟。

  1. 登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/s3/:// 開啟 Amazon S3 主控台。

  2. Bucket name (儲存貯體名稱) 清單中,選擇所需的儲存貯體名稱。

  3. 選擇 Permissions (許可)。

  4. 選擇封鎖公開存取 (儲存貯體設定) 旁的編輯,以變更儲存貯體的公開存取設定。如需四個 Amazon S3 封鎖公開存取設定的詳細資訊,請參閱「封鎖公開存取設定」。

  5. 選擇其中一個設定,然後選擇儲存變更

  6. 出現確認提示時,輸入 confirm。然後選擇 Confirm (確認) 以儲存變更。

重要

即使您停用儲存貯體層級封鎖公開存取設定,您的儲存貯體仍可能受到帳戶層級或組織層級政策的保護。S3 一律在所有層級套用最嚴格的設定組合。

建立儲存貯體時,您也可以變更 Amazon S3 封鎖公開存取設定。如需詳細資訊,請參閱建立一般用途儲存貯體

若要封鎖儲存貯體上的公有存取或刪除公有存取區塊,請使用 AWS CLI 服務s3api。使用此服務的儲存貯體層級操作如下:

  • PutPublicAccessBlock (適用於儲存貯體)

  • GetPublicAccessBlock (適用於儲存貯體)

  • DeletePublicAccessBlock (適用於儲存貯體)

  • GetBucketPolicyStatus

如需詳細資訊,請參閱《AWS CLI 參考》中的 put-public-access-block

注意

這些儲存貯體層級操作不受組織層級政策的限制。不過,有效的公開存取行為仍受儲存貯體、帳戶和組織設定的最嚴格組合所規範。如需階層和政策互動的詳細資訊,請參閱 使用 S3 主控台

Java
AmazonS3 client = AmazonS3ClientBuilder.standard() .withCredentials(<credentials>) .build(); client.setPublicAccessBlock(new SetPublicAccessBlockRequest() .withBucketName(<bucket-name>) .withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration() .withBlockPublicAcls(<value>) .withIgnorePublicAcls(<value>) .withBlockPublicPolicy(<value>) .withRestrictPublicBuckets(<value>)));
重要

此範例僅適用於儲存貯體層級操作,這類操作會使用 AmazonS3 用戶端類別。針對帳戶層級操作,請參閱以下範例。

Other SDKs

如需使用其他 AWS SDKs的資訊,請參閱《Amazon S3 API 參考》中的使用 AWS SDKs 與 Amazon S3 一起開發Amazon S3

如需有關透過 REST API 使用 Amazon S3 封鎖公開存取的資訊,請參閱《Amazon Simple Storage Service API 參考》中的下列主題。