

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

# S3 Access Grants 概念


**S3 存取授權工作流程**  
S3 存取授權工作流程如下：

1. 建立 S3 存取授權執行個體。請參閱 [使用 S3 存取授權執行個體](access-grants-instance.md)。

1. 在 S3 Access Grants 執行個體中，在 Amazon S3 資料中註冊位置，並將這些位置映射至 AWS Identity and Access Management (IAM) 角色。請參閱 [註冊位置](access-grants-location-register.md)。

1. 為承授者建立授權，讓承授者存取您的 S3 資源。請參閱 [在 S3 存取授權中使用授權](access-grants-grant.md)。

1. 承授者向 S3 存取授權請求臨時憑證。請參閱 [透過 S3 Access Grants 請求存取 Amazon S3 資料](access-grants-credentials.md)。

1. 承授者使用這些臨時憑證存取 S3 資料。請參閱 [使用由 S3 存取授權提供的憑證來存取 S3 資料](access-grants-get-data.md)。

如需詳細資訊，請參閱[開始使用 S3 Access Grants](access-grants-get-started.md)。

 **S3 Access Grants 執行個體**   
「S3 存取授權執行個體」**是個別「授權」**的邏輯容器。建立 S3 存取授權執行個體時，您必須指定 AWS 區域。您 AWS 區域 中的每個 AWS 帳戶 都可以有一個 S3 Access Grants 執行個體。如需詳細資訊，請參閱[使用 S3 存取授權執行個體](access-grants-instance.md)。  
如果您想要使用 S3 Access Grants 從公司目錄授予使用者和群組身分的存取權，您還必須將 S3 Access Grants 執行個體與 AWS IAM Identity Center 執行個體建立關聯。如需詳細資訊，請參閱[S3 Access Grants 和公司目錄身分](access-grants-directory-ids.md)。  
新建立的 S3 存取授權執行個體是空的。您必須在執行個體中註冊位置，該位置可以是 S3 預設路徑 (`s3://`)、儲存貯體或儲存貯體中的字首。至少註冊一個位置之後，您可以建立存取授權來授予此註冊位置中資料的存取權。

 **位置**   
S3 Access Grants *位置*會將儲存貯體或字首映射至 AWS Identity and Access Management (IAM) 角色。S3 存取授權會擔任此 IAM 角色，將臨時憑證提供給存取該特定位置的承授者。您必須先在 S3 存取授權執行個體中至少註冊一個位置，才能建立存取授權。  
建議您註冊預設位置 (`s3://`)，並將其映射至 IAM 角色。預設 S3 路徑 (`s3://`) 的位置涵蓋對您帳戶 中所有 S3 儲存貯體 AWS 區域 的存取。當您建立存取授權時，您可以將授權範圍縮小為預設位置內的儲存貯體、字首或物件。  
更複雜的存取管理使用案例除了預設位置，可能還需要您註冊其他位置。以下是這類使用案例的一些範例：  
+ 假設 *amzn-s3-demo-bucket* 是 S3 存取授權執行個體中的註冊位置，已有映射的 IAM 角色，但此 IAM 角色在存取儲存貯體中的特定字首時會遭到拒絕。在此情況下，您可以將 IAM 角色無法存取的字首註冊為個別位置，並將該位置映射至具有必要存取權的不同 IAM 角色。
+ 假設您想要建立授權，限制只有虛擬私有雲端 (VPC) 端點內的使用者才能存取。在此情況下，您可以註冊一個儲存貯體位置，僅限 IAM 角色存取 VPC 端點。稍後，當承授者向 S3 存取授權要求憑證時，S3 存取授權會擔任該位置的 IAM 角色來提供臨時憑證。除非呼叫者位於 VPC 端點內，否則此憑證會拒絕存取特定儲存貯體。除了授權中指定的一般讀取、寫入或讀寫許可之外，也會套用此拒絕許可。
如果您的使用案例需要您在 S3 存取授權執行個體中註冊多個位置，您可以註冊下列任何一項：  
+ 預設 S3 位置為 (`s3://`)。
+ 一個儲存貯體 (例如 *amzn-s3-demo-bucket*) 或多個儲存貯體
+ 儲存貯體和一個字首 (例如 `amzn-s3-demo-bucket/prefix*`) 或多個字首
如需可在 S3 存取授權執行個體中註冊的位置數目上限，請參閱[S3 Access Grants 的限制](access-grants-limitations.md)。如需註冊 S3 存取授權位置的詳細資訊，請參閱[註冊位置](access-grants-location-register.md)。  
在您的 S3 存取授權執行個體中註冊第一個位置之後，您的執行個體中仍沒有任何個別的存取授權。因此，尚未授予您任何 S3 資料的存取權。您現在可以建立存取授權來授予存取權。如需建立授權的詳細資訊，請參閱[在 S3 存取授權中使用授權](access-grants-grant.md)。

 **授權**   
S3 存取授權執行個體中的個別「授權」**，可讓特定身分 (IAM 主體或是公司目錄中的使用者或群組) 取得 S3 存取授權執行個體中註冊位置的存取權。  
建立授權時，您不需要授予整個註冊位置的存取權。您可以縮小位置內的存取授權範圍。如果註冊位置是預設 S3 路徑 (`s3://`)，您必須將授權範圍縮小為儲存貯體、儲存貯體內的字首或特定物件。如果授權的註冊位置是儲存貯體或字首，則您可以授予整個儲存貯體或字首的存取權，或者您可以選擇將授權範圍縮小為字首、子字首或物件。  
在授權中，您也可以將授權的存取層級設定為讀取、寫入或讀寫。假設您授權公司目錄群組 `01234567-89ab-cdef-0123-456789abcdef` 對儲存貯體 `s3://amzn-s3-demo-bucket/projects/items/*` 進行讀取存取。此群組中的使用者可對名為 *amzn-s3-demo-bucket* 的儲存貯體中索引鍵名稱字首為 `projects/items/` 的每個物件進行讀取存取。  
如需可在 S3 存取授權執行個體中建立的授權數目上限，請參閱[S3 Access Grants 的限制](access-grants-limitations.md)。如需建立授權的詳細資訊，請參閱[建立授權](access-grants-grant-create.md)。

 **S3 Access Grants 臨時憑證**   
建立授權之後，使用授權中指定身分的已授權應用程式可以請求「即時存取憑證」**。為此，應用程式會呼叫 [GetDataAccess](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html) S3 API 操作。承授者可以使用此 API 操作來請求存取您已與其共用的 S3 資料。  
S3 Access Grants 執行個體會根據自有的授權來評估 `GetDataAccess` 請求。如果請求者有相符的授權，S3 存取授權便會擔任與相符授權之註冊位置相關聯的 IAM 角色。S3 存取授權會將臨時憑證的許可範圍設定為僅限授權範圍所指定的 S3 儲存貯體、字首或物件。  
臨時存取憑證的到期時間預設為 1 小時，但您可以將其設定為 15 分鐘到 12 小時的任何值。請參閱 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API 參考中的工作階段持續時間上限。

## 運作方式


在下圖中，已向 IAM 角色 `s3ag-location-role` 註冊具有範圍 `s3://` 的預設 Amazon S3 位置。當透過 S3 Access Grants 取得憑證時，此 IAM 角色具有在帳戶內執行 Amazon S3 動作的許可。

在此位置中，會為兩個 IAM 使用者建立兩個個別存取授權。IAM 使用者 Bob 會同時獲得 `DOC-BUCKET-EXAMPLE` 儲存貯體中 `bob/` 字首的 `READ` 和 `WRITE` 存取權。另一個 IAM 角色 Alice 只會獲得 `DOC-BUCKET-EXAMPLE` 儲存貯體中 `alice/` 字首的 `READ` 存取權。藍色的授權定義為讓 Bob 存取 `DOC-BUCKET-EXAMPLE` 儲存貯體中的 `bob/` 字首。綠色的授權定義為讓 Alice 存取 `DOC-BUCKET-EXAMPLE` 儲存貯體中的 `alice/` 字首。

當 Bob 存取 `READ` 資料時，與其授權所在位置相關聯的 IAM 角色會呼叫 S3 Access Grants [GetDataAccess](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html) API 操作。如果 Bob 嘗試對開頭為 `s3://DOC-BUCKET-EXAMPLE/bob/*` 的任何 S3 字首或物件執行 `READ` 操作，則 `GetDataAccess` 請求會傳回一組具有 `s3://DOC-BUCKET-EXAMPLE/bob/*` 許可的臨時 IAM 工作階段憑證。同樣地，Bob 可以對開頭為 `s3://DOC-BUCKET-EXAMPLE/bob/*` 的任何 S3 字首或物件執行 `WRITE` 操作，因為授權也允許此操作。

Alice 也可以對開頭為 `s3://DOC-BUCKET-EXAMPLE/alice/` 的任何項目執行 `READ`。然而，如果她嘗試對 `s3://` 中的任何儲存貯體、字首或物件執行 `WRITE` 操作，則會收到存取遭拒 (403 Forbidden) 錯誤，因為她沒有可對任何資料進行 `WRITE` 存取的授權。此外，如果 Alice 針對 `s3://DOC-BUCKET-EXAMPLE/alice/` 以外的資料提出任何層級的存取權 (`READ` 或 `WRITE`) 請求，她將會再次收到「拒絕存取」錯誤。

![\[S3 Access Grants 的運作方式\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/s3ag-how-it-works.png)


此模式可擴展到大量的使用者和儲存貯體，並簡化這些許可的管理工作。您可以新增和移除個別的獨立授權，而不需每次想要新增或移除個別使用者字首存取關係時，都得編輯可能很龐大的 S3 儲存貯體政策。