

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

# 封鎖對 Amazon S3 儲存體的公開存取權
<a name="access-control-block-public-access"></a>

Amazon S3 封鎖公開存取功能提供存取點、儲存貯體、帳戶的設定， AWS Organizations 並可協助您管理對 Amazon S3 資源的公開存取。依預設，新的儲存貯體、存取點和物件不允許公開存取。不過，使用者可以修改儲存貯體政策、存取點政策或物件許可，以允許公開存取。S3 封鎖公開存取設定能覆寫這些政策和許可的設定，讓您可以限制這些資源的公開存取。

透過 S3 封鎖公開存取，組織管理員、帳戶管理員和儲存貯體擁有者可以輕鬆設定集中式控制，以限制對其 Amazon S3 資源的公開存取，無論資源的建立方式為何。

您可以在多個層級管理封鎖公開存取設定：組織層級 （使用 AWS Organizations)、帳戶層級，以及儲存貯體和存取點層級。如需設定公有區塊存取的指示，請參閱 [設定封鎖公開存取](#configuring-block-public-access)。

Amazon S3 在收到請求存取儲存貯體或物件時，將會判斷儲存貯體或儲存貯體擁有者的帳戶是否套用封鎖公開存取設定。如果帳戶是 AWS Organizations 具有封鎖公開存取政策的 的一部分，Amazon S3 也會檢查組織層級設定。如果請求是透過存取點提出，Amazon S3 也會檢查存取點的封鎖公開存取設定。若有禁止所請求存取的現有封鎖公開存取設定，Amazon S3 便會拒絕該請求。

Amazon S3 封鎖公開存取提供四個設定。這些是獨立的設定，且可以任意組合使用。每個設定都可套用至一個存取點、一個儲存貯體或整個 AWS 帳戶。在組織層級，所有四個設定會一起套用為統一政策 - 您無法精細選取個別設定。如果存取點、儲存貯體或帳戶的封鎖公開存取設定不同，則 Amazon S3 會套用存取點、儲存貯體和帳戶設定的最嚴格組合。帳戶層級設定會在存在時自動繼承組織層級政策，而 S3 會在儲存貯體層級和有效的帳戶層級設定之間採用最嚴格的政策。例如，如果您的組織已啟用封鎖公開存取政策，但特定儲存貯體在儲存貯體層級已停用封鎖公開存取，則儲存貯體仍會受到保護，因為 S3 會套用更嚴格的組織/帳戶層級設定。相反地，如果您的組織政策已停用，但儲存貯體已啟用封鎖公開存取，則該儲存貯體仍會受到其儲存貯體層級設定的保護。

當 Amazon S3 評估封鎖公開存取設定是否禁止操作時，會拒絕任何違反組織政策 （強制執行帳戶 BPA 設定） 或存取點、儲存貯體或帳戶設定的請求。

**重要**  
透過存取控制清單 (ACL)、存取點政策、儲存貯體政策或全部來授與對儲存貯體和物件的公開存取許可。為協助確保封鎖所有 Amazon S3 存取點、儲存貯體和物件的公開存取，我們建議為帳戶開啟封鎖公開存取的所有四項設定。對於管理多個帳戶的組織，請考慮使用組織層級的封鎖公開存取政策進行集中控制。此外，我們建議您也開啟每個儲存貯體的所有四個設定，以符合 AWS Security Hub Foundational Security 最佳實務控制 S3.8。這些設定會封鎖所有現有和未來儲存貯體和存取點的公開存取。  
套用這些設定前，請確認應用程式無須公用存取權限也可正常運作。如果儲存貯體或物件需要特定層級的公開存取權限 (例如[使用 Amazon S3 託管靜態網站](WebsiteHosting.md)中所述的託管靜態網站)，則您可根據特定儲存使用案例自訂以下各設定。  
啟用封鎖公開存取以防止透過直接連接至 S3 資源的資源政策或存取控制清單 (ACL) 授予公開存取，從而協助保護您的資源。除了啟用封鎖公開存取之外，請仔細檢查下列政策，以確認這些政策未授予公開存取：  
連接到相關聯 AWS 主體的身分型政策 （例如 IAM 角色）
連接至相關聯 AWS 資源的資源型政策 （例如， AWS Key Management Service (KMS) 金鑰）

**注意**  
您只能為組織、存取點、儲存貯體和 啟用封鎖公開存取設定 AWS 帳戶。Amazon S3 不支援個別物件的封鎖公開存取設定。
當您將封鎖公開存取設定套用至帳戶時，這些設定會套用至 AWS 區域 全域所有 。設定可能不會在區域內立即或同時生效，但它們最後會散佈到所有區域。
當您套用組織層級封鎖公開存取政策時，它們會自動傳播到選取的成員帳戶，並覆寫帳戶層級設定。

**Topics**
+ [

## 封鎖公開存取設定
](#access-control-block-public-access-options)
+ [

## 在組織層級管理封鎖公開存取
](#access-control-block-public-access-organization-level)
+ [

## 在存取點執行封鎖公開存取操作
](#access-control-block-public-access-examples-access-point)
+ [

## 「公有」的意義
](#access-control-block-public-access-policy-status)
+ [

## 使用 IAM Access Analyzer for S3 來檢閱公用儲存貯體
](#access-analyzer-public-info)
+ [

## 許可
](#access-control-block-public-access-permissions)
+ [

## 設定封鎖公開存取
](#configuring-block-public-access)
+ [

# 為您的帳戶設定封鎖公開存取
](configuring-block-public-access-account.md)
+ [

# 為您的 S3 儲存貯體設定封鎖公開存取
](configuring-block-public-access-bucket.md)

## 封鎖公開存取設定
<a name="access-control-block-public-access-options"></a>

S3 封鎖公開存取提供四種設定。您可以任意組合使用這些設定，並套用到個別存取點、儲存貯體或整個 AWS 帳戶。在組織層級，您只能同時使用「全部」或「無」方法啟用或停用所有四個設定 - 無法精細控制個別設定。若您將設定套用到帳戶，它會套用到該帳戶擁有的所有儲存貯體和存取點。帳戶層級設定會在存在時自動繼承組織政策。同樣地，如果您將設定套用至儲存貯體，它會套用至與該儲存貯體相關聯的所有存取點。

政策繼承和強制執行的運作方式如下：
+ 組織層級政策會自動套用至成員帳戶，強制執行任何現有的帳戶層級設定
+ 帳戶層級設定會在存在時繼承組織政策，或在不存在組織政策時使用本機設定的設定
+ 儲存貯體層級設定會獨立運作，但受到強制執行限制。S3 會將最嚴格的組合套用至所有適用層級：組織/帳戶層級和儲存貯體層級設定。這表示儲存貯體會從其帳戶繼承基準保護 （可能由組織管理），但 S3 會在儲存貯體的設定和帳戶的有效設定之間強制執行較嚴格的組態。

下表包含可用的設定。


| 名稱 | 描述 | 
| --- | --- | 
| BlockPublicAcls |  將此選項設為 `TRUE` 會導致以下行為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/access-control-block-public-access.html) 當此設定設為 時`TRUE`，指定的操作會失敗 （無論是透過 REST API AWS CLI還是 AWS SDKs。但是，儲存貯體和物件現有的政策和 ACL 不會修改。此設定可讓您防止公開存取，同時允許您稽核、縮小搜尋範圍，或是改變您儲存貯體和物件的現有政策和 ACL。  存取點沒有與它們相關聯的 ACL。如果您將此設定套用至某個存取點，它會作為通往基礎儲存貯體的通道。如果存取點已啟用此設定，則透過存取點提出的請求，其行為就如同基礎儲存貯體已啟用此設定，無論儲存貯體是否已實際啟用此設定。   | 
| IgnorePublicAcls |  將此選項設為 `TRUE` 會導致 Amazon S3 在儲存貯體及其中任何物件上忽略所有公有 ACL。此設定可讓您安全地封鎖 ACL 授予的公開存取權限，同時仍允許 `PutObject` 呼叫，其中包含公有 ACL (與 `BlockPublicAcls` 相反，其拒絕包含公有 ACL 的 `PutObject` 呼叫)。起用此設定不會影響任何現有 ACL 的持久性，也不會阻止設定新的公有 ACL。  存取點沒有與它們相關聯的 ACL。如果您將此設定套用至某個存取點，它會作為通往基礎儲存貯體的通道。如果存取點已啟用此設定，則透過存取點提出的請求，其行為就如同基礎儲存貯體已啟用此設定，無論儲存貯體是否已實際啟用此設定。   | 
| BlockPublicPolicy |  如果指定的儲存貯體政策允許公開存取，則針對儲存貯體將此選項設定為 `TRUE` 會導致 Amazon S3 拒絕呼叫 `PutBucketPolicy`。如果指定的儲存貯體政策允許公開存取，針對儲存貯體將此選項設為 `TRUE` 時，也會導致 Amazon S3 拒絕針對所有儲存貯體的相同帳戶存取點呼叫 `PutAccessPointPolicy`。 如果指定的政策 (存取點或基礎儲存貯體) 允許公開存取，則針對存取點將此選項設定為 `TRUE` 會導致 Amazon S3 拒絕透過存取點提出的 `PutAccessPointPolicy` 和 `PutBucketPolicy` 呼叫。 您可以使用此設定，允許使用者管理存取點和儲存貯體政策，而無須讓他們公開共享儲存貯體或其包含的物件。啟用此設定不會影響現有的存取點或儲存貯體政策。  若要有效使用此設定，建議您在*帳戶*層級套用它。儲存貯體政策可讓使用者改變儲存貯體的封鎖公開存取設定。因此，具有變更儲存貯體政策許可的使用者可插入政策，允許他們停用儲存貯體的封鎖公開存取設定。若為整個帳戶啟用此設定，而非僅針對特定儲存貯體，則即使使用者改變儲存貯體政策來停用此設定，Amazon S3 仍會封鎖公有政策。   | 
| RestrictPublicBuckets |  將此選項設定為 會將具有公有政策的存取點或儲存貯體的存取權`TRUE`限制為僅限儲存貯體擁有者帳戶和存取點擁有者帳戶中 AWS 的服務主體和授權使用者。此設定會封鎖對存取點或儲存貯體 ( AWS 服務主體除外） 的所有跨帳戶存取，同時仍允許帳戶中的使用者管理存取點或儲存貯體。 啟用此設定不會影響現有的存取點或儲存貯體政策，但 Amazon S3 會封鎖從任何公用存取點或儲存貯體政策衍生的公用及跨帳戶存取，包括對特定帳戶的非公用委派。  | 

**重要**  
呼叫 `GetBucketAcl` 和 `GetObjectAcl` 始終會傳回對指定之儲存貯體或物件有效的權限。例如，假設儲存貯體具有授予公開存取的 ACL，同時也啟用了 `IgnorePublicAcls` 設定。在這種情況下，`GetBucketAcl` 會傳回的 ACL 會反映 Amazon S3 正在強制執行的存取許可，而非傳回與儲存貯體相關聯的實際 ACL。
封鎖公開存取設定不會改變現有政策或 ACL。因此，移除封鎖公開存取設定會導致具備公有政策或 ACL 的儲存貯體或物件再次開放公開存取。

## 在組織層級管理封鎖公開存取
<a name="access-control-block-public-access-organization-level"></a>

組織層級封鎖公開存取會使用 AWS Organizations 政策來集中管理整個組織的 S3 公開存取控制。啟用時，這些政策會自動套用至選取的帳戶，並覆寫個別帳戶層級設定。

如需在組織層級封鎖公開存取的詳細資訊，請參閱*AWS Organizations 《 使用者指南*》中的 [S3 政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_s3.html)。

## 在存取點執行封鎖公開存取操作
<a name="access-control-block-public-access-examples-access-point"></a>

若要在存取點上執行封鎖公有存取操作，請使用 AWS CLI 服務`s3control`。

**重要**  
建立存取點後，您就無法變更存取點的封鎖公開存取設定。只有在建立存取點時，您才能指定存取點的封鎖公開存取設定。

## 「公有」的意義
<a name="access-control-block-public-access-policy-status"></a>

### ACL
<a name="public-acls"></a>

如果儲存貯體或物件 ACL 將任何許可授予預先定義的 `AllUsers` 或 `AuthenticatedUsers` 群組的成員，則 Amazon S3 會將此 ACL 視為公有。如需預先定義群組的詳細資訊，請參閱 [Amazon S3 預先定義的群組](acl-overview.md#specifying-grantee-predefined-groups)。

### 儲存貯體政策
<a name="public-bucket-policies"></a>

評估儲存貯體政策時，Amazon S3 首先假設政策為公用。然後，評估政策來判斷其是否符合非公有的資格。若要被視為是非公有，儲存貯體政策必須僅將存取授予以下一或多個項目的固定值 (不包含萬用字元或 [AWS Identity and Access Management 政策變數](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) 的值)：
+  AWS 委託人、使用者、角色或服務委託人 （例如 `aws:PrincipalOrgID`)
+ 使用 `aws:SourceIp` 的一組無類別域間路由 (CIDR) 區塊。如需 CIDR 的詳細資訊，請參閱 RFC Editor 網站上的 [RFC 4632](http://www.rfc-editor.org/rfc/rfc4632.txt)。
**注意**  
根據具有非常廣泛 IP 範圍 (例如，0.0.0.0/1) 的 `aws:SourceIp` 條件金鑰授予存取權的儲存貯體政策會評估為「公有」。這包括比 `/8` (若為 IPv4) 和 `/32` (若為 IPv6) 更寬泛的值，但 RFC1918 私有範圍排除在外。封鎖公開存取會拒絕這些「公有」政策，並防止跨帳戶存取已使用這些「公有」政策的儲存貯體。
+ `aws:SourceArn`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:SourceOwner`
+ `aws:SourceAccount`
+ `aws:userid`，位於 "`AROLEID:*`" 模式之外
+ `s3:DataAccessPointArn`
**注意**  
在儲存貯體政策中使用時，只要帳戶 ID 為固定，此值就可以包含存取點名稱的萬用字元，而不會將該政策轉譯為公開。例如，允許存取 `arn:aws:s3:us-west-2:123456789012:accesspoint/*` 將允許存取與區域 `123456789012` 中帳戶 `us-west-2` 相關聯的任何存取點，而不會將儲存貯體政策轉譯為公開。存取點政策的此項行為是不同的。如需詳細資訊，請參閱[存取點](#access-control-block-public-access-policy-status-access-points)。
+ `s3:DataAccessPointAccount`

如需儲存貯體政策的詳細資訊，請參閱「[Amazon S3 的儲存貯體政策](bucket-policies.md)」。

**注意**  
使用[多值內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html)時，您必須使用 `ForAllValues` 或 `ForAnyValue` 設定運算子。

**Example ：公有儲存貯體政策**  
在這些規則之下，下列範例政策會被視為公用。  

```
{
		"Principal": "*", 
		"Resource": "*", 
		"Action": "s3:PutObject", 
		"Effect": "Allow" 
	}
```

```
{
		"Principal": "*", 
		"Resource": "*", 
		"Action": "s3:PutObject", 
		"Effect": "Allow", 
		"Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}}
	}
```
您可以透過使用固定值來包含任何先前列出的條件索引鍵，使這些政策成為非公有。例如，您可以透過將 `aws:SourceVpc` 設為固定值來使上述最後一個政策成為非公用，如下所示。  

```
{
		"Principal": "*", 
		"Resource": "*", 
		"Action": "s3:PutObject", 
		"Effect": "Allow", 
		"Condition": {"StringEquals": {"aws:SourceVpc": "vpc-91237329"}}
	}
```

### Amazon S3 如何評估同時包含公開及非公開存取授權的政策。
<a name="access-control-block-public-access-policy-example"></a>

此範例示範 Amazon S3 如何評估同時包含公開及非公開存取授權的政策。

假設儲存貯體具有政策，會將存取授予一組固定的委託人。在先前說明的規則之下，此政策便不是公有。因此，若您啟用 `RestrictPublicBuckets` 設定，政策仍會以已寫入的狀態繼續生效，因為 `RestrictPublicBuckets` 只會套用到具有公有政策的儲存貯體。不過，如果您將公有陳述式新增至政策，則 `RestrictPublicBuckets` 會在儲存貯體上生效。它僅允許儲存貯體擁有者帳戶的 AWS 服務主體和授權使用者存取儲存貯體。

例如，假設 "Account-1" 擁有的儲存貯體具有一個政策，該政策包含以下內容：

1. 授予 AWS CloudTrail （即 AWS 服務委託人） 存取權的陳述式

1. 將存取授予 "Account-2" 帳戶的陳述式

1. 公開授予存取的陳述式 (例如透過使用無限制的 `Condition` 來指定 `"Principal": "*"`)

此政策因為第三個陳述式，所以符合公有的資格。完成此政策並啟用 `RestrictPublicBuckets` 後，Amazon S3 就只允許 CloudTrail 才能存取。即使第 2 個陳述式並非公有，Amazon S3 也會停用 "Account-2" 的存取。這次因為第 3 個陳述式會使整個政策都成為公有狀態，因此會套用 `RestrictPublicBuckets`。因此，即使政策將存取委派給指定的帳戶 "Account-2"，Amazon S3 還是會停用跨帳戶存取。但是，若您將第 3 個陳述式從政策中移除，則政策便不符合公有的資格，不再套用 `RestrictPublicBuckets`。因此，"Account-2" 會重新取得儲存貯體的存取，即使您將 `RestrictPublicBuckets` 維持在啟用狀態。

### 存取點
<a name="access-control-block-public-access-policy-status-access-points"></a>

相較於儲存貯體，Amazon S3 評估存取點的封鎖公開存取設定時，方式略有不同。Amazon S3 套用以判斷存取點政策為公開的規則，在儲存貯體與存取點間通常是相同的，但下列情況除外：
+ 無論其存取點政策的內容為何，具有 VPC 網路來源的存取點一律會被視為非公開。
+ 使用 `s3:DataAccessPointArn` 授予存取給一組存取點的存取點政策會被視為公開。請注意，儲存貯體政策的此行為是不同的。例如，授予存取給符合 `s3:DataAccessPointArn` 的 `arn:aws:s3:us-west-2:123456789012:accesspoint/*` 的儲存貯體政策不會被視為公開。不過，存取點政策中的相同陳述式會將該存取點轉譯成公開。

## 使用 IAM Access Analyzer for S3 來檢閱公用儲存貯體
<a name="access-analyzer-public-info"></a>

您可以使用 IAM Access Analyzer for S3，檢閱以儲存貯體 ACL、儲存貯體政策或存取點政策授予公開存取的儲存貯體。IAM Access Analyzer for S3 會提醒您，儲存貯體設定為允許存取網際網路或其他 上的任何人 AWS 帳戶，包括組織 AWS 帳戶 外部的任何人。針對每個公開或共用儲存貯體，您會收到報告公開或共用存取來源和層級的發現項目。

在 IAM Access Analyzer for S3 中，只要按一下滑鼠，就可以封鎖對儲存貯體的所有公開存取。您還可以深入檢視儲存貯體的層級許可設定，以設定精細的存取層級。對於需要公開或共用存取的特定和經驗證使用案例，您可以將對儲存貯體的發現項目存檔，以確認並記錄您要讓儲存貯體保持公開或共用。

在極少數情況下，適用於 S3 的 IAM Access Analyzer 和 Amazon S3 封鎖公開存取評估，可能會因儲存貯體是否為公有而有所不同。此行為是因為 Amazon S3 封鎖公開存取除了評估公開存取之外，還會驗證動作是否存在。假設儲存貯體政策包含允許對 Amazon S3 不支援之動作公開存取的 `Action` 陳述式 (例如，`s3:NotASupportedAction`)。在此情況下，Amazon S3 封鎖公開存取會將儲存貯體評估為公有，因為如果稍後支援該動作，這類陳述式可能會使儲存貯體變成公有。如果 Amazon S3 封鎖公開存取，而 IAM Access Analyzer for S3 的評估結果不同，建議您檢閱儲存貯體政策，並移除任何不支援的動作。

如需 IAM Access Analyzer for S3 的詳細資訊，請參閱 [使用 IAM Access Analyzer for S3 檢閱儲存貯體存取權](access-analyzer.md)。

## 許可
<a name="access-control-block-public-access-permissions"></a>

若要使用 Amazon S3 封鎖公開存取功能，您必須具備下列許可。


| 操作 | 所需的許可 | 
| --- | --- | 
| GET 儲存貯體政策狀態 | s3:GetBucketPolicyStatus | 
| GET 儲存貯體封鎖公開存取設定 | s3:GetBucketPublicAccessBlock | 
| PUT 儲存貯體封鎖公開存取設定 | s3:PutBucketPublicAccessBlock | 
| DELETE 儲存貯體封鎖公開存取設定 | s3:PutBucketPublicAccessBlock | 
| GET 帳戶封鎖公開存取設定 | s3:GetAccountPublicAccessBlock | 
| PUT 帳戶封鎖公開存取設定 | s3:PutAccountPublicAccessBlock | 
| DELETE 帳戶封鎖公開存取設定 | s3:PutAccountPublicAccessBlock | 
| PUT 存取點封鎖公開存取設定 | s3:CreateAccessPoint | 

**注意**  
`DELETE` 操作需要與 `PUT` 操作相同的權限。`DELETE` 操作沒有單獨的權限。

## 設定封鎖公開存取
<a name="configuring-block-public-access"></a>

如需為 AWS 帳戶、Amazon S3 儲存貯體和存取點設定封鎖公開存取的詳細資訊，請參閱下列主題：
+ [為您的帳戶設定封鎖公開存取](configuring-block-public-access-account.md)
+ [為您的 S3 儲存貯體設定封鎖公開存取](configuring-block-public-access-bucket.md)
+ [在存取點執行封鎖公開存取操作](#access-control-block-public-access-examples-access-point)

# 為您的帳戶設定封鎖公開存取
<a name="configuring-block-public-access-account"></a>

**重要**  
如果您的帳戶是由組織層級的封鎖公開存取政策管理，則您無法修改這些帳戶層級設定。組織層級政策會覆寫帳戶層級組態。如需集中式管理選項的詳細資訊，請參閱 *AWS Organizations 使用者指南*中的 [S3 政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_s3.html)。

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

**注意**  
帳戶層級設定會覆寫個別物件上的設定。將您的帳戶設定為封鎖公開存取，將會覆寫對帳戶內個別物件所做的任何公開存取設定。當組織層級政策處於作用中狀態時，帳戶層級設定會自動繼承自組織政策，且無法直接修改。

您可以使用 S3 主控台、 AWS CLI、 AWS SDKs和 REST API，為您帳戶中的所有儲存貯體設定封鎖公有存取設定，但前提是未受組織政策管理。如需詳細資訊，請參閱「以下各節」。

若要設定儲存貯體的封鎖公開存取設定，請參閱 [為您的 S3 儲存貯體設定封鎖公開存取](configuring-block-public-access-bucket.md)。如需存取點的詳細資訊，請參閱 [在存取點執行封鎖公開存取操作](access-control-block-public-access.md#access-control-block-public-access-examples-access-point)。

## 使用 S3 主控台
<a name="block-public-access-account"></a>

Amazon S3 封鎖公開存取可防止套用任何設定而允許公開存取 S3 儲存貯體內的資料。本節說明如何編輯 AWS 帳戶中所有 S3 儲存貯體的封鎖公開存取設定。如需封鎖公開存取的詳細資訊，請參閱 [封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)。

**編輯 中所有 S3 儲存貯體的封鎖公開存取設定 AWS 帳戶**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 選擇 **Block Public Access settings for this account** (此帳戶的封鎖公開存取設定)。

1. 選擇 **Edit** (編輯) 以變更 AWS 帳戶中所有儲存貯體的封鎖公開存取設定。

1. 選擇您要變更的設定，然後選擇 **Save changes** (儲存變更)。

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

如果您收到錯誤訊息，指出「由於組織 S3 封鎖公開存取政策生效，此帳戶不允許變更其帳戶層級 S3 封鎖公開存取設定」，您的帳戶由組織層級政策管理。請聯絡您的組織管理員以修改這些設定。

## 使用 AWS CLI
<a name="access-control-block-public-access-examples-cli"></a>

您可以透過 AWS CLI使用 Amazon S3 封鎖公開存取。如需設定和使用 的詳細資訊 AWS CLI，請參閱[什麼是 AWS Command Line Interface？](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 

**帳戶**
+ 若要在帳戶上執行封鎖公開存取操作，請使用 AWS CLI 服務 `s3control`。使用此服務的帳戶層級操作如下：
  + `PutPublicAccessBlock` (適用於帳戶)
  + `GetPublicAccessBlock` (適用於帳戶)
  + `DeletePublicAccessBlock` (適用於帳戶)

**注意**  
`PutPublicAccessBlock` 當帳戶由組織層級政策管理時， 和 `DeletePublicAccessBlock`操作將傳回「存取遭拒」錯誤。如果存在，帳戶層級`GetPublicAccessBlock`操作將傳回強制執行的組織層級政策。

如需其他資訊和範例，請參閱《AWS CLI 參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/put-public-access-block.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/put-public-access-block.html)。

## 使用 AWS SDKs
<a name="access-control-block-public-access-examples-sdk"></a>

------
#### [ Java ]

下列範例示範如何使用 Amazon S3 Block Public Access 搭配 適用於 Java 的 AWS SDK ，在 Amazon S3 帳戶上放置公有存取區塊組態。

**注意**  
`PutPublicAccessBlock` 如果帳戶由組織層級政策管理，則 和 `DeletePublicAccessBlock`操作會失敗並出現「存取遭拒」錯誤。

```
AWSS3ControlClientBuilder controlClientBuilder = AWSS3ControlClientBuilder.standard();
controlClientBuilder.setRegion(<region>);
controlClientBuilder.setCredentials(<credentials>);
					
AWSS3Control client = controlClientBuilder.build();
client.putPublicAccessBlock(new PutPublicAccessBlockRequest()
		.withAccountId(<account-id>)
		.withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration()
				.withIgnorePublicAcls(<value>)
				.withBlockPublicAcls(<value>)
				.withBlockPublicPolicy(<value>)
				.withRestrictPublicBuckets(<value>)));
```

**重要**  
此範例僅適用於帳戶層級操作，這類操作會使用 `AWSS3Control` 用戶端類別。針對儲存貯體層級操作，請參閱先前的範例。

------
#### [ Other SDKs ]

如需使用其他 AWS SDKs的資訊，請參閱《[Amazon S3 API 參考》中的使用 AWS SDKs 與 Amazon S3 一起開發](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)。 *Amazon S3 *

------

## 使用 REST API
<a name="access-control-block-public-access-examples-api"></a>

如需有關透過 REST API 使用 Amazon S3 封鎖公開存取的資訊，請參閱《Amazon Simple Storage Service API 參考》**中的下列主題。
+ 帳戶層級操作
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html) - 當帳戶由組織政策管理時失敗
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html) - 傳回有效的組態，包括組織政策。
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html) - 當帳戶由組織政策管理時失敗。

您會看到以下限制操作的錯誤訊息：「由於組織 S3 封鎖公開存取政策生效，此帳戶不允許變更其帳戶層級的 S3 封鎖公開存取設定。」

# 為您的 S3 儲存貯體設定封鎖公開存取
<a name="configuring-block-public-access-bucket"></a>

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

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

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

若要為您帳戶中的每個儲存貯體設定封鎖公開存取，請參閱 [為您的帳戶設定封鎖公開存取](configuring-block-public-access-account.md)。如需整個組織的集中式管理，請參閱*AWS Organizations 《 使用者指南*》中的 [S3 政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_s3.html)。

如需有關為存取點設定封鎖公開存取的資訊，請參閱 [在存取點執行封鎖公開存取操作](access-control-block-public-access.md#access-control-block-public-access-examples-access-point)。

# 使用 S3 主控台
<a name="block-public-access-bucket"></a>

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

在 **IAM Access Analyzer** 欄，您可以查看您的儲存貯體是否可從**儲存貯體**清單中公開存取。如需詳細資訊，請參閱[使用 IAM Access Analyzer for S3 檢閱儲存貯體存取權](access-analyzer.md)。

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

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

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

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

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

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在 **Bucket name** (儲存貯體名稱) 清單中，選擇所需的儲存貯體名稱。

1. 選擇 **Permissions** (許可)。

1. 選擇**封鎖公開存取 (儲存貯體設定)** 旁的**編輯**，以變更儲存貯體的公開存取設定。如需四個 Amazon S3 封鎖公開存取設定的詳細資訊，請參閱「[封鎖公開存取設定](access-control-block-public-access.md#access-control-block-public-access-options)」。

1. 選擇其中一個設定，然後選擇**儲存變更**。

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

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

建立儲存貯體時，您也可以變更 Amazon S3 封鎖公開存取設定。如需詳細資訊，請參閱[建立一般用途儲存貯體](create-bucket-overview.md)。

## 使用 AWS CLI
<a name="configuring-block-public-access-bucket-cli"></a>

若要封鎖儲存貯體上的公有存取，或刪除公有存取區塊，請使用 AWS CLI 服務`s3api`。使用此服務的儲存貯體層級操作如下：
+ `PutPublicAccessBlock` (適用於儲存貯體)
+ `GetPublicAccessBlock` (適用於儲存貯體)
+ `DeletePublicAccessBlock` (適用於儲存貯體)
+ `GetBucketPolicyStatus`

如需詳細資訊，請參閱《AWS CLI 參考》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-public-access-block.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-public-access-block.html)。

**注意**  
這些儲存貯體層級操作不受組織層級政策的限制。不過，有效的公開存取行為仍受儲存貯體、帳戶和組織設定的最嚴格組合所規範。如需階層和政策互動的詳細資訊，請參閱 [使用 S3 主控台](block-public-access-bucket.md)。

## 使用 AWS SDKs
<a name="configuring-block-public-access-bucket-sdk"></a>

------
#### [ 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 一起開發](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)。 *Amazon S3 *

------

## 使用 REST API
<a name="configuring-block-public-access-bucket-api"></a>

如需有關透過 REST API 使用 Amazon S3 封鎖公開存取的資訊，請參閱《Amazon Simple Storage Service API 參考》**中的下列主題。
+ 儲存貯體層級操作
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)