本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
S3 Access Grants 跨帳户存取權
使用 S3 Access Grants,您可以授予 Amazon S3 資料對下列項目的存取權:
AWS Identity and Access Management 您帳戶中的 (IAM) 身分
其他 AWS 帳戶中的IAM身分
在您的 AWS IAM Identity Center 執行個體中目錄使用者或群組
首先,為其他帳戶設定跨帳戶存取。這包括使用資源政策授予對 S3 Access Grants 執行個體的存取權。然後,透過使用 授予來授予對 S3 資料的存取權 (儲存貯體、字首或物件)。
設定跨帳戶存取後,另一個帳戶可以從 Amazon S3 S3 資料。下圖顯示透過 S3 Access Grants 跨帳戶 S3 存取的使用者流程:
第二個帳戶 (B) 中的使用者或應用程式會向儲存 Amazon S3 資料的帳戶 (A) 中的 S3 Access Grants 執行個體請求憑證。 Amazon S3 如需詳細資訊,請參閱透過 S3 Access Grants 請求存取 Amazon S3 資料。
如果授予第二個帳戶存取您的 Amazon S3 資料的權限,則您帳戶中的 S3 Access Grants 執行個體 (A) 會傳回暫時憑證。 Amazon S3 如需存取授與的詳細資訊,請參閱 在 S3 Access Grants 中使用 授予。
第二個 帳戶 (B) 中的使用者或應用程式使用 S3 Access Grants-vended 憑證來存取您 帳戶 (A) 中的 S3 資料。
設定 S3 Access Grants 跨帳戶存取
若要透過 S3 Access Grants 授予跨帳戶 S3 存取權,請遵循下列步驟:
步驟 1:在您的帳戶中設定 S3 Access Grants 執行個體,例如儲存
111122223333
S3 資料的帳戶 ID 。步驟 2:設定您帳戶中 S3 Access Grants 執行個體的資源政策
111122223333
,以授予第二個帳戶的存取權,例如帳戶 ID444455556666
。步驟 3:設定第二個帳戶中 IAM 主體的 IAM 許可
444455556666
,以從您帳戶中的 S3 Access Grants 執行個體請求憑證111122223333
。步驟 4:在您的帳戶中建立授予
111122223333
,讓第二個帳戶中的 IAM 主體444455556666
存取您帳戶中的某些 S3 資料111122223333
。
步驟 1:在帳戶中設定 S3 Access Grants 執行個體
首先,您的帳戶中必須有 S3 Access Grants 執行個體111122223333
,才能管理對 Amazon S3 資料的存取。您必須在要共用的 S3 資料存放 AWS 區域 所在的每個 中建立 S3 Access Grants 執行個體。如果您要在多個 中共用資料 AWS 區域,請為每個 重複這些組態步驟 AWS 區域。如果您在存放 S3 資料的 中已有 AWS 區域 S3 Access Grants 執行個體,請繼續下一個步驟。如果您尚未設定 S3 Access Grants 執行個體,請參閱 使用 S3 Access Grants 執行個體 以完成此步驟。
步驟 2:設定 S3 Access Grants 執行個體的資源政策,以授予跨帳戶存取權
在帳戶中建立 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:ListCallerAccessGrants
-
s3:GetDataAccess
— 使用者、角色或應用程式可以根據您透過 S3 Access Grants 授予的存取權來請求臨時憑證。使用這些憑證即可存取您已取得存取權的 S3 資料。
您可以選擇要將這些當中的哪些許可包含在資源政策中。S3 Access Grants 執行個體上的此資源政策是一般資源型政策,並支援 IAM 政策語言支援的所有內容。在相同的政策中,您可以授予帳戶 中特定 IAM 身分的存取權111122223333
,例如,使用 aws:PrincipalArn
條件,但您不必使用 S3 Access Grants 來執行此操作。相反地,在您的 S3 Access Grants 執行個體中,您可以從您的帳戶和其他 帳戶為個別 IAM 身分建立授予。透過 S3 Access Grants 管理每個存取授予,您可以擴展您的許可。
如果您已使用 AWS Resource Access Manager(AWS RAM),您可以使用它與其他帳戶或組織中s3:AccessGrants
的資源共用資源。如需詳細資訊,請參閱使用共用 AWS 資源。如果您不使用 AWS RAM,也可以使用 S3 Access Grants API 操作或 AWS Command Line Interface () 新增資源政策AWS CLI。
我們建議您使用 AWS Resource Access Manager (AWS RAM) 主控台與其他帳戶或組織內的 共用s3:AccessGrants
資源。若要共用 S3 Access Grants 跨帳戶,請執行下列動作:
若要設定 S3 Access Grants 執行個體資源政策:
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
AWS 區域 從 AWS 區域 選取器中選取 。
從左側導覽窗格中,選取存取授權。
在存取授與執行個體頁面上,在此帳戶區段的執行個體中,選取共用執行個體。這會將您重新導向至 AWS RAM 主控台。
選取建立資源共用。
依照 AWS RAM 步驟建立資源共用。如需詳細資訊,請參閱在 中建立資源共用 AWS RAM。
若要安裝 AWS CLI,請參閱 AWS Command Line Interface 使用者指南中的安裝 AWS CLI。
您可以使用 CLI put-access-grants-instance-resource-policy
命令新增資源政策。
如果您想要將 S3 Access Grants 執行個體的跨帳戶存取權授予111122223333
第二個帳戶 444455556666
,則帳戶中 S3 Access Grants 執行個體的資源政策111122223333
應授予第二個帳戶執行下列動作的444455556666
許可:
s3:ListAccessGrants
s3:ListAccessGrantsLocations
s3:GetDataAccess
s3:GetAccessGrantsInstanceForPrefix
在 S3 Access Grants 執行個體資源政策中,將 S3 Access Grants 執行個體的 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 Grants 執行個體資源政策,請使用下列命令。當您使用下列範例命令時,請將 取代
為您自己的資訊。user input placeholders
範例 新增或更新 S3 Access Grants 執行個體資源政策
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 \"s3:ListCallerAccessGrants"\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 Access Grants 執行個體的資源政策。
若要取得 S3 Access Grants 資源政策,請使用下列範例命令。若要使用此範例命令,請以您自己的資訊取代
。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\",\"s3:GetAccessGrantsInstanceForPrefix\",\"s3:ListCallerAccessGrants\"],\"Resource\":\"arn:aws: s3:us-east-2
:111122223333
:access-grants/default\"}]}", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
範例 刪除 S3 Access Grants 資源政策
若要刪除 S3 Access Grants 資源政策,請使用下列範例命令。若要使用此範例命令,請以您自己的資訊取代
。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 Grants 執行個體資源政策中,將 S3 Access Grants 執行個體的 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 APIWord 來設定政策。
如需更新、取得或刪除 S3 Access Grants 執行個體資源政策的 APIREST 支援相關資訊,請參閱 Amazon Simple Storage Service API 參考中的下列章節:
本節提供如何設定 S3 Access Grants 資源政策以授予第二個 AWS 帳戶存取某些 S3 資料的 AWS SDK 範例。
步驟 3:在第二個帳戶中授予 IAM 身分,以呼叫您帳戶中的 S3 Access Grants 執行個體
Amazon S3 資料的擁有者在帳戶 中為 S3 Access Grants 執行個體設定跨帳戶政策後111122223333
,第二個帳戶的擁有者444455556666
必須為其 IAM 使用者或角色建立身分型政策,且擁有者必須授予他們 S3 Access Grants 執行個體的存取權。在身分型政策中,根據 S3 Access Grants 執行個體資源政策中授予的內容和您要授予的許可,包含下列一或多個動作:
s3:ListAccessGrants
s3:ListAccessGrantsLocations
s3:GetDataAccess
s3:GetAccessGrantsInstanceForPrefix
s3:ListCallerAccessGrants
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 Access Grants 執行個體中建立授予,讓第二個 帳戶 444455556666 中的 IAM 身分能夠存取您帳戶中的某些 S3 資料。您可以使用 Amazon S3 主控台、CLI、API 和 SDKs 來執行此操作。如需詳細資訊,請參閱建立授權。
在授予中,從第二個帳戶指定 AWS ARN 的 IAM 身分,並指定您要授予存取權的 S3 資料 (儲存貯體、字首或物件) 中的位置。此位置必須已向 S3 Access Grants 執行個體註冊。如需詳細資訊,請參閱註冊位置。您可以選擇性地指定子字首。例如,如果您授予存取權的位置是儲存貯體,而且您想要將存取權進一步限制為該儲存貯體中的特定物件,請在 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 Access Grants 執行個體 AWS RAM。如需詳細資訊,請參閱取得 S3 Access Grants 執行個體的詳細資訊。從 S3 Access Grants 請求臨時憑證。如需如何提出這些請求的詳細資訊,請參閱 透過 S3 Access Grants 請求存取 Amazon S3 資料。