

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

# Amazon S3 如何授權要求
<a name="how-s3-evaluates-access-control"></a>

當 Amazon S3 收到要求時 (例如儲存貯體或物件操作)，它會先確認要求者具備必要的許可。Amazon S3 會評估所有相關的存取政策、使用者政策以及資源型政策 (儲存貯體政策、儲存貯體存取控制清單 (ACL)、物件 ACL)，來決定是否要授權請求。

**注意**  
如果 Amazon S3 許可檢查找不到有效的許可，就會傳回「存取遭拒 (403 Forbidden)」許可權遭拒錯誤。如需詳細資訊，請參閱[對 Amazon S3 中的存取遭拒 (403 Forbidden) 錯誤進行故障診斷](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshoot-403-errors.html)。

為了判斷請求者是否具備執行特定操作的許可，Amazon S3 會在收到請求時，依序執行下列操作：

1. 在執行時期，將所有相關的存取政策 (使用者政策、儲存貯體政策和 ACL) 轉換成一組用於評估的政策。

1. 執行下列步驟以評估這組產生的政策。在每個步驟中，Amazon S3 會根據內容授權單位，在特定內容中評估政策子集。

   1. **使用者內容** – 在使用者內容中，使用者所屬的父帳戶即為內容授權單位。

      Amazon S3 會評估父帳戶所擁有的政策子集。此子集包含父帳戶連接至使用者的使用者政策。如果父帳戶也擁有請求中的資源 (儲存貯體或物件)，Amazon S3 也會同時評估對應的資源政策 (儲存貯體政策、儲存貯體 ACL 和物件 ACL)。

      使用者必須具備父帳戶的執行操作許可。

      只有在請求是由 AWS 帳戶使用者提出的情況下，才需要執行此步驟。如果使用 的根使用者登入資料提出請求 AWS 帳戶，Amazon S3 會略過此步驟。

   1. **儲存貯體內容** – 在儲存貯體內容中，Amazon S3 會評估擁有儲存貯 AWS 帳戶 體之 擁有的政策。

      如果要求是針對儲存貯體操作，要求者必須具備儲存貯體擁有者的許可。如果要求是針對物件，Amazon S3 會評估儲存貯體擁有者所擁有的全部政策，檢查儲存貯體擁有者是否未明確拒絕對物件的存取。如已設定明確拒絕，Amazon S3 就不會授權要求。

   1. **物件內容** – 如果請求是針對物件，Amazon S3 會評估物件擁有者所擁有的政策子集。

以下是一些範例案例，說明 Amazon S3 如何授權請求。

**Example – 請求者是 IAM 主體**  
如果申請者是 IAM 委託人，Amazon S3 必須判斷委託人所屬 AWS 帳戶 的父系是否已授予委託人執行操作的必要許可。此外，如果要求是針對儲存貯體操作 (例如要求列出儲存貯體內容)，Amazon S3 必須確認儲存貯體擁有者已授予要求者執行操作的許可。若要對資源執行特定操作，IAM 主體需要其 AWS 帳戶 所屬父系和擁有資源 AWS 帳戶 的 的許可。

 

**Example – 請求者是 IAM 主體 – 如果請求是針對儲存貯體擁有者未擁有之物件的操作。**  
如果請求是針對儲存貯體擁有者未擁有之物件的操作，除了確定請求者具備物件擁有者的許可之外，Amazon S3 也必須檢查儲存貯體政策，確定儲存貯體擁有者並未在物件上設定明確拒絕。儲存貯體擁有者 (付費者) 可以明確拒絕對儲存貯體中物件的存取，無論誰是其擁有者皆是如此。儲存貯體擁有者也可刪除儲存貯體中的任何物件。  
根據預設，當另一個 將物件 AWS 帳戶 上傳到您的 S3 一般用途儲存貯體時，該帳戶 （物件寫入器） 擁有該物件、可存取該物件，並可透過存取控制清單 (ACLs。您可以使用「物件擁有權」變更此預設行為，以便停用 ACL，並且您身為儲存貯體擁有者，自動擁有一般用途儲存貯體中的每個物件。因此，資料的存取控制是以政策為基礎，例如 IAM 使用者政策、S3 儲存貯體政策、虛擬私有雲端 (VPC) 端點政策，以及 AWS Organizations 服務控制政策 SCPs)。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。

如需 Amazon S3 如何評估存取原則以授權或拒絕儲存貯體操作和物件操作要求的詳細資訊，請參閱下列主題：

**Topics**
+ [Amazon S3 如何授權儲存貯體操作要求](access-control-auth-workflow-bucket-operation.md)
+ [Amazon S3 如何授權物件操作要求](access-control-auth-workflow-object-operation.md)

# Amazon S3 如何授權儲存貯體操作要求
<a name="access-control-auth-workflow-bucket-operation"></a>

當 Amazon S3 收到儲存貯體操作的要求時，Amazon S3 會將所有相關許可轉換為一組政策，以便在執行階段進行評估。相關許可包含以資源為基礎的許可 (例如儲存貯體政策和儲存貯體存取控制清單) 和使用者政策 (如果要求來自 IAM 委託人)。然後，Amazon S3 會根據特定內容 (使用者內容或儲存貯體內容)，執行一連串的步驟以評估這組產生的政策：

1. **使用者內容** – 如果申請者是 IAM 主體，則主體必須擁有 AWS 帳戶 其所屬父系的許可。在此步驟中，Amazon S3 會評估父帳戶 (亦稱為內容授權單位) 所擁有的政策子集。此政策子集包含父帳戶連接至委託人的使用者政策。如果父帳戶也擁有要求中的資源 (在本例中為儲存貯體)，Amazon S3 也會同時評估對應的資源政策 (儲存貯體政策與儲存貯體 ACL)。每當提出儲存貯體操作要求時，伺服器存取日誌都會記錄要求者的正式 ID。如需詳細資訊，請參閱[使用伺服器存取記錄記錄要求](ServerLogs.md)。

1. **儲存貯體內容** – 請求者必須取得儲存貯體擁有者的許可，才能執行特定的儲存貯體操作。在此步驟中，Amazon S3 會評估擁有 AWS 帳戶 儲存貯體之 擁有的政策子集。

   儲存貯體擁有者可以使用儲存貯體政策或儲存貯體 ACL 來授予許可。如果擁有儲存貯體的 AWS 帳戶 同時也是 IAM 主體的父帳戶，則可以在使用者政策中設定儲存貯體許可。

 下圖說明儲存貯體操作的內容評估。

![\[圖例顯示根據儲存貯體操作的內容進行評估。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/AccessControlAuthorizationFlowBucketResource.png)


下列範例說明評估邏輯。

## 範例 1：由儲存貯體擁有者所要求的儲存貯體操作
<a name="example1-policy-eval-logic"></a>

 在此範例中，儲存貯體擁有者使用 AWS 帳戶的根憑證，傳送儲存貯體操作請求。

![\[圖例顯示根據儲存貯體擁有者請求的儲存貯體操作。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/example10-policy-eval-logic.png)


 Amazon S3 會執行下列內容評估：

1.  由於請求是透過 AWS 帳戶的根使用者憑證提出，因此不會評估使用者內容。

1.  在儲存貯體內容中，Amazon S3 會檢閱儲存貯體政策，判斷要求者是否具備執行操作的許可。然後 Amazon S3 會授權要求。

## 範例 2： AWS 帳戶 非儲存貯體擁有者之 請求的儲存貯體操作
<a name="example2-policy-eval-logic"></a>

在此範例中，使用 AWS 帳戶 1111-1111-1111 的根使用者憑證提出了一個儲存貯體操作請求，但儲存貯體擁有者為 AWS 帳戶 2222-2222-2222。此要求未涉及任何 IAM 使用者。

![\[圖例顯示非儲存貯體擁有者之 AWS 帳戶 請求的儲存貯體操作。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/example20-policy-eval-logic.png)


在此範例中，Amazon S3 評估內容的方式如下：

1. 由於請求是透過使用 的根使用者登入資料提出 AWS 帳戶，因此不會評估使用者內容。

1. 在儲存貯體內容中，Amazon S3 會檢查儲存貯體政策。如果儲存貯體擁有者 (AWS 帳戶 2222-2222-2222) 尚未授權 AWS 帳戶 1111-1111-1111 執行請求的操作，Amazon S3 會拒絕請求。否則，Amazon S3 會授權要求並執行操作。

## 範例 3：由父系 AWS 帳戶 也是儲存貯體擁有者的 IAM 主體請求的儲存貯體操作
<a name="example3-policy-eval-logic"></a>

 在此範例中，請求的傳送者 Jill 是 AWS 帳戶 1111-1111-1111 的 IAM 使用者，該帳戶同時也是儲存貯體擁有者。

![\[圖例顯示 IAM 主體和儲存貯體擁有者請求的儲存貯體操作。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/example30-policy-eval-logic.png)


 Amazon S3 會執行下列內容評估：

1.  由於請求來自 IAM 主體，在使用者內容中，Amazon S3 會評估屬於父系的所有政策 AWS 帳戶 ，以判斷 Jill 是否具有執行操作的許可。

    在此範例中，委託人所屬的 parent AWS 帳戶 1111-1111-1111 也是儲存貯體擁有者。因此，除了使用者政策之外，Amazon S3 也會在相同內容中評估儲存貯體政策與儲存貯體 ACL，因為這兩者屬於相同的帳戶。

1. 由於 Amazon S3 在評估使用者內容的過程中已評估儲存貯體政策與儲存貯體 ACL，因此不會評估儲存貯體內容。

## 範例 4：由父系 AWS 帳戶 不是儲存貯體擁有者的 IAM 主體請求的儲存貯體操作
<a name="example4-policy-eval-logic"></a>

在此範例中，請求是由父系 AWS 帳戶 為 1111-1111-1111 但儲存貯體為另一個 2222-2222-2222 的 IAM 使用者 Jill AWS 帳戶傳送。

![\[圖例顯示非儲存貯體擁有者之 IAM 主體請求的儲存貯體操作。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/example40-policy-eval-logic.png)


Jill 需要父擁有者 AWS 帳戶 和儲存貯體擁有者的許可。Amazon S3 評估內容的方式如下：

1. 由於要求是來自 IAM 委託人，因此 Amazon S3 會檢閱帳戶所撰寫的政策以確認 Jill 具備必要的許可，藉此評估使用者內容。如果 Jill 具備許可，則 Amazon S3 會繼續評估儲存貯體內容。如果 Jill 沒有許可，則會拒絕請求。

1.  在儲存貯體內容中，Amazon S3 會驗證儲存貯體擁有者 2222-2222-2222 是否已授予 Jill （或其父系 AWS 帳戶) 執行請求操作的許可。如果她具備該許可，Amazon S3 會授權請求並執行操作。否則，Amazon S3 會拒絕要求。

# Amazon S3 如何授權物件操作要求
<a name="access-control-auth-workflow-object-operation"></a>

Amazon S3 收到對物件操作的請求時，就會將所有相關許可，包括以資源為基礎的許可 (物件存取控制清單 (ACL)、儲存貯體政策、儲存貯體 ACL) 及 IAM 使用者政策，轉換成一組要在執行時間評估的政策。然後，它會執行一連串的步驟以評估這組產生的政策。在每個步驟中，它會在三個特定內容 (使用者內容、儲存貯體內容與物件內容) 中評估政策子集：

1. **使用者內容** – 如果申請者是 IAM 主體，則主體必須擁有 AWS 帳戶 其所屬父系的許可。在此步驟中，Amazon S3 會評估父帳戶 (亦稱為內容授權單位) 所擁有的政策子集。此政策子集包含父帳戶連接至委託人的使用者政策。如果父帳戶也擁有請求中的資源 (儲存貯體或物件)，Amazon S3 會同時評估對應的資源政策 (儲存貯體政策、儲存貯體 ACL 和物件 ACL)。
**注意**  
如果父系 AWS 帳戶 擁有資源 （儲存貯體或物件），則可以使用使用者政策或資源政策，將資源許可授予其 IAM 主體。

1. **儲存貯體內容** – 在此內容中，Amazon S3 會評估 AWS 帳戶 (儲存貯體擁有者) 所擁有的政策。

   如果 AWS 帳戶 擁有請求中物件的 與儲存貯體擁有者不同，Amazon S3 會檢查儲存貯體擁有者是否已明確拒絕存取物件的政策。如已在物件上設定明確拒絕，Amazon S3 就不會授權要求。

1. **物件內容** – 請求者必須取得物件擁有者的許可，才能執行特定的物件操作。在此步驟中，Amazon S3 會評估物件 ACL。
**注意**  
如果儲存貯體擁有者與物件擁有者相同，則可以在儲存貯體政策中授予對物件的存取，並在儲存貯體內容中進行評估。如果擁有者不同，物件擁有者必須使用物件 ACL 來授予許可。如果 AWS 帳戶 擁有物件的 也是 IAM 主體所屬的父帳戶，則可以在使用者政策中設定物件許可，該政策會在使用者內容中進行評估。如需使用這些存取政策替代方案的詳細資訊，請參閱「[使用政策來管理 Amazon S3 資源存取的逐步解說](example-walkthroughs-managing-access.md)」。  
如果您作為儲存貯體擁有者想要擁有儲存貯體中的所有物件，並使用儲存貯體政策或以 IAM 為基礎的政策來管理對這些物件的存取權，則可以套用儲存貯體擁有者強制執行的物件所有權設定。使用此設定，您身為儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。無法編輯儲存貯體和物件 ACL，也不再考慮存取。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。

 下圖說明物件操作的內容評估。

![\[圖例顯示根據物件操作的內容進行評估。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/AccessControlAuthorizationFlowObjectResource.png)


## 物件操作請求範例
<a name="access-control-auth-workflow-object-operation-example1"></a>

在此範例中，其父系 AWS 帳戶 為 1111-1111-1111 的 IAM 使用者 Jill 會在 擁有的儲存貯體中，為 AWS 帳戶 3333-3333-3333 擁有的物件傳送物件操作請求 （例如 `GetObject`) AWS 帳戶 2222-2222-2222。

![\[圖例顯示物件操作請求。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/example50-policy-eval-logic.png)


Jill 需要父系 AWS 帳戶、儲存貯體擁有者和物件擁有者的許可。Amazon S3 評估內容的方式如下：

1. 由於請求來自 IAM 主體，Amazon S3 會評估使用者內容，以確認父系 AWS 帳戶 1111-1111-1111 已授予 Jill 執行請求操作的許可。如果她具備該許可，Amazon S3 會評估儲存貯體內容。否則，Amazon S3 會拒絕要求。

1. 在儲存貯體內容中，儲存貯體擁有者 AWS 帳戶 2222-2222-2222 是內容授權單位。Amazon S3 會評估儲存貯體政策，判斷儲存貯體擁有者是否已明確拒絕 Jill 存取物件。

1. 在物件內容中，內容授權單位是 AWS 帳戶 3333-3333-3333，也就是物件擁有者。Amazon S3 會評估物件 ACL，判斷 Jill 是否具備存取物件的許可。如果具備，Amazon S3 會授權要求。