本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
S3 Access Grants 概念
S3 存取授權工作流程
S3 存取授權工作流程如下:
建立 S3 存取授權執行個體。請參閱 使用 S3 存取授權執行個體。
在 S3 Access Grants 執行個體中,在 Amazon S3 資料中註冊位置,並將這些位置映射至 AWS Identity and Access Management (IAM) 角色。請參閱 註冊位置。
為承授者建立授權,讓承授者存取您的 S3 資源。請參閱 在 S3 存取授權中使用授權。
承授者向 S3 存取授權請求臨時憑證。請參閱 透過 S3 Access Grants 請求存取 Amazon S3 資料。
承授者使用這些臨時憑證存取 S3 資料。請參閱 使用由 S3 存取授權提供的憑證來存取 S3 資料。
如需詳細資訊,請參閱開始使用 S3 Access Grants。
- S3 Access Grants 執行個體
-
「S3 存取授權執行個體」是個別「授權」的邏輯容器。建立 S3 存取授權執行個體時,您必須指定 AWS 區域。您 AWS 區域 中的每個 AWS 帳戶 都可以有一個 S3 Access Grants 執行個體。如需詳細資訊,請參閱使用 S3 存取授權執行個體。
如果您想要使用 S3 Access Grants 從公司目錄授予使用者和群組身分的存取權,您還必須將 S3 Access Grants 執行個體與 AWS IAM Identity Center 執行個體建立關聯。如需詳細資訊,請參閱S3 Access Grants 和公司目錄身分。
新建立的 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 的限制。如需註冊 S3 存取授權位置的詳細資訊,請參閱註冊位置。
在您的 S3 存取授權執行個體中註冊第一個位置之後,您的執行個體中仍沒有任何個別的存取授權。因此,尚未授予您任何 S3 資料的存取權。您現在可以建立存取授權來授予存取權。如需建立授權的詳細資訊,請參閱在 S3 存取授權中使用授權。
-
- 授權
-
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 的限制。如需建立授權的詳細資訊,請參閱建立授權。
- S3 Access Grants 臨時憑證
-
建立授權之後,使用授權中指定身分的已授權應用程式可以請求「即時存取憑證」。為此,應用程式會呼叫 GetDataAccess S3 API 操作。承授者可以使用此 API 操作來請求存取您已與其共用的 S3 資料。
S3 Access Grants 執行個體會根據自有的授權來評估
GetDataAccess
請求。如果請求者有相符的授權,S3 存取授權便會擔任與相符授權之註冊位置相關聯的 IAM 角色。S3 存取授權會將臨時憑證的許可範圍設定為僅限授權範圍所指定的 S3 儲存貯體、字首或物件。臨時存取憑證的到期時間預設為 1 小時,但您可以將其設定為 15 分鐘到 12 小時的任何值。請參閱 AssumeRoleAPI 參考中的工作階段持續時間上限。
運作方式
在下圖中,已向 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 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 禁止) 錯誤,因為她沒有可對任何資料進行 WRITE
存取的授權。此外,如果 Alice 針對 s3://DOC-BUCKET-EXAMPLE/alice/
以外的資料提出任何層級的存取權 (READ
或 WRITE
) 請求,她將會再次收到「拒絕存取」錯誤。

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