本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
S3 Access Grants 跨帳户存取權
使用 S3 存取授權,您可以授與 Amazon S3 資料存取權給下列項目:
AWS Identity and Access Management (IAM) 您帳戶內的身份
IAM其他 AWS 帳戶中的身份
AWS IAM Identity Center 執行個體中的目錄使用者或群組
首先,設定另一個帳戶的跨帳戶存取權限。這包括使用資源政策授予對 S3 存取授與執行個體的存取權。然後,使用授權授予對 S3 資料 (儲存貯體、前置詞或物件) 的存取權。
設定跨帳戶存取後,另一個帳戶可以向 S3 存取授權請求對 Amazon S3 資料的臨時存取登入資料。下圖顯示透過 S3 存取授權跨帳戶 S3 存取的使用者流程:
第二個帳戶 (B) 中的使用者或應用程式從帳戶 (A) 中的 S3 存取授予執行個體 (存放 Amazon S3 資料) 請求登入資料。如需詳細資訊,請參閱透過 S3 Access Grants 請求存取 Amazon S3 資料。
如果有授權可讓第二個帳戶存取您的 Amazon S3 資料,則帳戶中的 S3 存取授權執行個體 (A) 會傳回臨時登入資料。如需詳細資訊,請參閱建立授權。
第二個帳戶 (B) 中的使用者或應用程式會使用由 S3 Access 授予授權的登入資料存取您帳戶 (A) 中的 S3 資料。
設定 S3 存取權授予跨帳戶存取
若要透過 S3 存取授權授與跨帳戶 S3 存取權,請遵循下列步驟:
步驟 1:在您的帳戶中設定 S3 存取授與執行個體,例如存放 S3 資料的帳戶 ID
111122223333
。步驟 2:設定帳戶中 S3 Access Grants 執行個體的資源政策,
111122223333
以授予第二個帳戶的存取權,例如帳戶 ID444455556666
。步驟 3:在第二個帳戶中設定IAM主體的IAM許可,
444455556666
以從您帳戶中的 S3 Access Grants 執行個體要求登入資料111122223333
。步驟 4:在您的帳戶中建立授權
111122223333
,讓第二個帳戶中的IAM主體444455556666
存取您帳戶中的某些 S3 資料111122223333
。
步驟 1:在您的帳戶中設定 S3 存取授與執行個體
首先,您的帳戶中必須有 S3 存取授與執行個體,111122223333
才能管理對 Amazon S3 資料的存取。您必須在每個儲存您要共用的 S3 資料的 AWS 區域 位置建立 S3 存取授與執行個體。如果您要共用多個資料 AWS 區域,請針對每個步驟重複上述每個設定步驟 AWS 區域。如果您的 S3 資料存放 AWS 區域 位置已有 S3 存取授與執行個體,請繼續執行下一個步驟。如果您尚未設定 S3 存取授與執行個體,請參建立 S3 Access Grants 執行個體閱完成此步驟。
步驟 2:設定 S3 Access 授與執行個體的資源政策,以授予跨帳戶存取權
在您的帳戶中建立 S3 Access Grants 執行個體以進行跨帳戶存取之後,111122223333
請為帳戶中的 S3 Access Grants 執行個體設定以資源為基礎的政策,以授111122223333
予跨帳戶存取權。S3 Access Grants 執行個體本身可支援資源型政策。有了正確的以資源為基礎的政策,您可以將 AWS Identity and Access Management (IAM) 使用者或角色的存取權授予來自其他 AWS 帳戶 S3 Access Grants 執行個體的權限。跨帳戶存取僅授予下列權限 (動作):
-
s3:GetAccessGrantsInstanceForPrefix
— 使用者、角色或應用程式可擷取包含特定前置詞的 S3 Access Grants 執行個體。 -
s3:ListAccessGrants
-
s3:ListAccessLocations
-
s3:GetDataAccess
— 使用者、角色或應用程式可以根據您透過 S3 Access Grants 授予的存取權限要求臨時登入資料。使用這些憑證即可存取您已取得存取權的 S3 資料。
您可以選擇要將這些當中的哪些許可包含在資源政策中。S3 Access Grants 執行個體上的這個資源政策是一般的資源型政策,並支援政IAM策語言支援的一切。在相同的政策中,您可以授予帳戶中特定IAM身分的存取權111122223333
,例如,使用aws:PrincipalArn
條件,但不需要使用 S3 Access Grants 這樣做。而是在 S3 Access Grants 執行個體中,您可以從您的帳戶以及其他帳戶為個別IAM身分建立授權。透過 S3 存取授與管理每個存取授與,您可以擴展許可。
如果您已經使用 AWS Resource Access Manager(AWS RAM),則可以使用它與其他帳號或組織內部共用s3:AccessGrants
資源。如需詳細資訊,請參閱使用共用 AWS 資源。如果您不使用 AWS RAM,您也可以使用 S3 存取授權API操作或 AWS Command Line Interface (AWS CLI) 來新增資源政策。
建議您使用 AWS Resource Access Manager (AWS RAM) Console 與其他帳戶或組織內部共用您的s3:AccessGrants
資源。若要跨帳戶共用 S3 存取授與,請執行下列動作:
若要設定 S3 存取授與執行個體資源政策:
登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/
。 從選取 AWS 區域 器 AWS 區域 中選取。
在左側導覽窗格中,選取存取權授與。
在 [存取權授與執行個體] 頁面的 [此帳戶中的執行個體] 區段中,選取共用執行個體。這會將您重定向到 AWS RAM 控制台。
選取 [建立資源共用]。
依照下列 AWS RAM 步驟建立資源共用。如需詳細資訊,請參閱在中建立資源共用 AWS RAM。
若要安裝 AWS CLI,請參閱《AWS Command Line Interface 使用者指南》 AWS CLI中的〈安裝〉。
您可以使用put-access-grants-instance-resource-policy
CLI命令來新增資源策略。
如果您想要將 S3 Access Grants 執行個體的跨帳戶存取權授予第二個帳戶 111122223333
444455556666
,則您帳戶中 S3 Access Grants 執行個體的資源政策111122223333
應授予第二個帳戶執行下列動作的444455556666
權限:
s3:ListAccessGrants
s3:ListAccessGrantsLocations
s3:GetDataAccess
s3:GetAccessGrantsInstanceForPrefix
在 S3 Access 授與執行個體資源政策中,將 S3 存取授與執行個體ARN的執行個體指定為Resource
,第二個帳戶指定444455556666
為Principal
。若要使用下列範例,請取代 user input
placeholders
使用您自己的信息。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "
444455556666
" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2
:111122223333
:access-grants/default" } ] }
若要新增或更新 S3 Access 授與執行個體資源政策,請使用下列命令。當您使用下列範例指令時,請以您自己
的資訊取代。user input
placeholders
範例 新增或更新 S3 存取授與執行個體資源政策
aws s3control put-access-grants-instance-resource-policy \ --account-id
111122223333
\ --policy file://resourcePolicy.json \ --regionus-east-2
{ "Policy": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"444455556666
\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\",\n \"s3:GetAccessGrantsInstanceForPrefix\"\n ],\n \"Resource\": \"arn:aws:s3:us-east-2
:111122223333
:access-grants/default\"\n }\n ]\n }\n", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
範例 取得 S3 Access Grants 資源政策
您也可以使用取CLI得或刪除 S3 存取授與執行個體的資源政策。
若要取得 S3 存取授與資源政策,請使用下列範例命令。若要使用此範例命令,請以您自己的資訊取代
。user input
placeholders
aws s3control get-access-grants-instance-resource-policy \ --account-id
111122223333
\ --regionus-east-2
{ "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333
:root\"},\"Action\":[\"s3:ListAccessGrants\",\"s3:ListAccessGrantsLocations\",\"s3:GetDataAccess\"],\"Resource\":\"arn:aws:s3:us-east-2
:111122223333
:access-grants/default\"}]}", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
範例 刪除 S3 Access Grants 資源政策
若要刪除 S3 存取授與資源政策,請使用下列範例命令。若要使用此範例命令,請以您自己的資訊取代
。user input
placeholders
aws s3control delete-access-grants-instance-resource-policy \ --account-id
111122223333
\ --regionus-east-2
// No response body
您可以使用新增資源策略PutAccessGrantsInstanceResourcePolicy API。
如果您想要將 S3 Access Grants 執行個體的跨帳戶存取權授予第二個帳戶 111122223333
444455556666
,則您帳戶中 S3 Access Grants 執行個體的資源政策111122223333
應授予第二個帳戶執行下列動作的444455556666
權限:
s3:ListAccessGrants
s3:ListAccessGrantsLocations
s3:GetDataAccess
s3:GetAccessGrantsInstanceForPrefix
在 S3 Access 授與執行個體資源政策中,將 S3 存取授與執行個體ARN的執行個體指定為Resource
,第二個帳戶指定444455556666
為Principal
。若要使用下列範例,請取代 user input
placeholders
使用您自己的信息。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "
444455556666
" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2
:111122223333
:access-grants/default" } ] }
然後,您可以使用PutAccessGrantsInstanceResourcePolicy API來設定原則。
如需有關更新、取得或刪除 S3 Access 授予執行個體資源政策的RESTAPI支援資訊,請參閱 Amazon 簡單儲存服務API參考中的以下各節:
本節將提供如何設定 S3 Access Grants 資源政策以授予第二個 AWS 帳戶存取部分 S3 資料的 AWS SDK範例。
步驟 3:授予第二個帳戶中的IAM身分,以呼叫帳戶中的 S3 Access Grants 執行個體的權限
Amazon S3 資料的擁有者針對帳戶中的 S3 Access Grants 執行個體設定跨帳戶政策後111122223333
,第二個帳戶的擁有者444455556666
必須為其IAM使用者或角色建立以身分識別為基礎的政策,且擁有者必須授與他們 S3 存取授與執行個體的存取權。在以身分為基礎的政策中,根據 S3 Access Grants 執行個體資源政策中授予的內容以及您要授予的許可,包括下列一或多個動作:
s3:ListAccessGrants
s3:ListAccessGrantsLocations
s3:GetDataAccess
s3:GetAccessGrantsInstanceForPrefix
遵循AWS
跨帳戶存取模式,第二個帳戶中的IAM使用者或角色444455556666
必須明確具有一或多個這些權限。例如,授與s3:GetDataAccess
權限,以便IAM使用者或角色可以呼叫帳戶中的 S3 Access Grants 執行個體111122223333
來請求登入資料。
若要使用此範例命令,請以您自己的資訊取代
。user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetDataAccess", ], "Resource": "arn:aws:s3:
us-east-2
:111122223333
:access-grants/default" } ] }
如需有關編輯以IAM身分識別為基礎的原則的資訊,請參閱指南中的AWS Identity and Access Management 編輯原IAM則。
步驟 4:在帳戶的 S3 Access Grants 執行個體中建立授權,讓第二個帳戶中的IAM身分可存取部分 S3 資料
對於最後一個組態步驟,您可以在帳戶 111122223333 的 S3 存取授權執行個體中建立授權,以便將第二個帳戶 444455556666 中的IAM身分存取到您帳戶中的某些 S3 資料。您可以使用 Amazon S3 主控台、CLI、API和來執行此操作SDKs。如需詳細資訊,請參閱建立授權。
在授權中,指定 AWS ARN來自第二個帳戶的IAM身分,並指定要授與存取權的 S3 資料 (儲存貯體、前綴或物件) 中的哪個位置。此位置必須已向 S3 存取授予執行個體註冊。如需詳細資訊,請參閱註冊位置。您可以選擇性地指定子首碼。例如,如果您授與存取權的位置是值區,而您想要進一步限制存取該值區中特定物件的存取權,請在S3SubPrefix
欄位中傳遞物件索引鍵名稱。或者,如果您想使用以特定前綴(例如)開頭的密鑰名稱來限制對值區中對象的訪問權限2024-03-research-results/
,則傳遞S3SubPrefix=2024-03-research-results/
。
以下是針對第二個帳戶中的身分建立存取權授與的範例CLI命令。如需更多資訊,請參閱建立授權。若要使用此範例命令,請以您自己的資訊取代
。user input placeholders
aws s3control create-access-grant \ --account-id
111122223333
\ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix=prefixA*
\ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::444455556666
:role/data-consumer-1
設定跨帳戶存取後,第二個帳戶中的使用者或角色可以執行下列動作:
呼叫列
ListAccessGrantsInstances
出透過與其共用的 S3 存取授與執行個體 AWS RAM。如需詳細資訊,請參閱檢視 S3 Access Grants 執行個體的詳細資訊。向 S3 存取授權請求臨時登入資料。如需如何提出這些要求的詳細資訊,請參閱透過 S3 Access Grants 請求存取 Amazon S3 資料。