本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
S3 Access Grants 概念
S3 Access Grants 工作流程
S3 Access Grants 工作流程為:
建立 S3 Access Grants 執行個體。請參閱 使用 S3 Access Grants 執行個體。
在 S3 Access Grants 執行個體中,在 Amazon S3 資料中註冊位置,並將這些位置映射至 AWS Identity and Access Management (IAM) 角色。請參閱 註冊位置。
為承授者建立授予,讓承授者存取您的 S3 資源。請參閱 在 S3 Access Grants 中使用 授予。
承授者向 S3 Access Grants 請求臨時憑證。請參閱 透過 S3 Access Grants 請求存取 Amazon S3 資料。
承授者會使用這些臨時憑證存取 S3 資料。請參閱 使用由 S3 Access Grants 附加的憑證存取 S3 資料。
如需詳細資訊,請參閱開始使用 S3 Access Grants。
- S3 Access Grants 執行個體
-
S3 Access Grants 執行個體是個別授予的邏輯容器。建立 S3 Access Grants 執行個體時,您必須指定 AWS 區域。您 AWS 區域 中的每個 AWS 帳戶 都可以有一個 S3 Access Grants 執行個體。如需詳細資訊,請參閱使用 S3 Access Grants 執行個體。
如果您想要使用 S3 Access Grants 從公司目錄授予使用者和群組身分的存取權,您還必須將 S3 Access Grants 執行個體與 AWS IAM Identity Center 執行個體建立關聯。如需詳細資訊,請參閱S3 Access Grants 和公司目錄身分。
新建立的 S3 Access Grants 執行個體為空。您必須在執行個體中註冊位置,該位置可以是 S3 預設路徑 (
s3://
)、儲存貯體或儲存貯體內的字首。註冊至少一個位置後,您可以建立存取授予,以允許存取此已註冊位置中的資料。 - 位置
-
S3 Access Grants 位置會將儲存貯體或字首映射至 AWS Identity and Access Management (IAM) 角色。S3 Access Grants 會擔任此 IAM 角色,將臨時憑證提供給正在存取該特定位置的受讓者。您必須先在 S3 Access Grants 執行個體中註冊至少一個位置,才能建立存取授與。
建議您註冊預設位置 (
s3://
),並將其對應至 IAM 角色。預設 S3 路徑 (s3://
) 的位置涵蓋對 帳戶 中所有 S3 儲存貯體 AWS 區域 的存取。建立存取授予時,您可以將授予範圍縮小為預設位置內的儲存貯體、字首或物件。更複雜的存取管理使用案例可能需要您註冊超過預設位置。這類使用案例的一些範例包括:
-
假設
amzn-s3-demo-bucket
是 S3 Access Grants 執行個體中已註冊的位置,其中 IAM 角色對應至該執行個體,但拒絕此 IAM 角色存取儲存貯體中的特定字首。在此情況下,您可以將 IAM 角色無法存取的字首註冊為個別位置,並將該位置對應至具有必要存取權的不同 IAM 角色。 -
假設您想要建立授予,以限制僅對虛擬私有雲端 (VPC) 端點內使用者的存取。在此情況下,您可以為 IAM 角色限制對 VPC 端點存取的儲存貯體註冊位置。稍後,當承授者要求 S3 Access Grants 提供憑證時,S3 Access Grants 會擔任該位置的 IAM 角色來租用臨時憑證。除非來電者位於 VPC 端點內,否則此憑證將拒絕存取特定儲存貯體。除了授予中指定的一般 READ、WRITE 或 READWRITE 許可之外,也會套用此拒絕許可。
如果您的使用案例需要您在 S3 Access Grants 執行個體中註冊多個位置,您可以註冊以下任何一個位置:
預設 S3 位置 (
s3://
)儲存貯體 (例如,
amzn-s3-demo-bucket
) 或多個儲存貯體儲存貯體和字首 (例如
) 或多個字首amzn-s3-demo-bucket
/prefix*
如需可在 S3 Access Grants 執行個體中註冊的位置數量上限,請參閱 S3 Access Grants 的限制。如需註冊 S3 Access Grants 位置的詳細資訊,請參閱 註冊位置。
在您註冊 S3 Access Grants 執行個體的第一個位置之後,您的執行個體仍然沒有任何個別的存取授權。因此,尚未授予您任何 S3 資料的存取權。您現在可以建立存取權授予以授予存取權。如需建立授予的詳細資訊,請參閱 在 S3 Access Grants 中使用 授予。
-
- 授權
-
S3 Access Grants 執行個體中的個別授予,允許 IAM 主體或公司目錄中的使用者或群組,在您的 S3 Access Grants 執行個體中註冊的位置內取得存取權。
建立授予時,您不需要授予整個已註冊位置的存取權。您可以在 位置內縮小授予的存取範圍。如果註冊位置是預設 S3 路徑 (
s3://
),則需要縮小授予儲存貯體的範圍、儲存貯體內的字首或特定物件。如果授予的註冊位置是儲存貯體或字首,則您可以授予整個儲存貯體或字首的存取權,或者您可以選擇將授予的範圍縮小為字首、子字首或物件。在授予中,您也可以將授予的存取層級設定為 READ、WRITE 或 READWRITE。假設您有授予,讓公司目錄群組
01234567-89ab-cdef-0123-456789abcdef
READ 存取儲存貯體s3://
。此群組中的使用者可以對具有物件索引鍵名稱的每個物件進行 READ 存取,該名稱以名稱儲存貯體amzn-s3-demo-bucket
/projects/items/*projects/items/
中的字首開頭amzn-s3-demo-bucket
.如需您可以在 S3 Access Grants 執行個體中建立的授予數量上限,請參閱 S3 Access Grants 的限制。如需建立授予的詳細資訊,請參閱 建立授權。
- S3 Access Grants 臨時憑證
-
建立授予之後,使用授予中指定身分的授權應用程式可以請求 just-in-time 存取憑證。若要這麼做,應用程式會呼叫 GetDataAccess S3 API 操作。承授者可以使用此 API 操作來請求存取您與他們共用的 S3 資料。
S3 Access Grants 執行個體會根據自有的授權來評估
GetDataAccess
請求。如果請求者有相符的授予,S3 Access Grants 會擔任與相符授予的註冊位置相關聯的 IAM 角色。S3 Access Grants 會限制暫時憑證的許可,以僅存取授予範圍所指定的 S3 儲存貯體、字首或物件。臨時存取憑證的過期時間預設為 1 小時,但您可以將其設定為 15 分鐘到 12 小時的任何值。請參閱 AssumeRole API 參考中的最長持續時間工作階段。
運作方式
在下圖中,使用 IAM 角色 s3://
註冊具有 範圍的預設 Amazon S3 位置s3ag-location-role
。當透過 S3 Access Grants 取得其憑證時,此 IAM 角色具有在帳戶中執行 Amazon S3 動作的許可。 Amazon S3
在此位置中,會為兩個 IAM 使用者建立兩個單獨的存取授予。IAM 使用者 Bob 會同時獲得 READ
和 儲存DOC-BUCKET-EXAMPLE
貯體中bob/
字首的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 嘗試READ
任何以 開頭的 S3 字首或物件s3://DOC-BUCKET-EXAMPLE/bob/*
,GetDataAccess
請求會傳回一組具有 許可的臨時 IAM 工作階段憑證。 s3://DOC-BUCKET-EXAMPLE/bob/*
同樣地,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 儲存貯體政策。