本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
註冊位置
在 AWS 區域 帳戶中的 中建立 Amazon S3 Access Grants 執行個體後,您可以在該執行個體中註冊 S3 位置。S3 Access Grants 位置會將預設 S3 位置 (s3://
)、儲存貯體或字首映射至 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 擔任的 IAM 角色,以授予臨時憑證並限制特定授予的許可。
如果您的使用案例需要您在 S3 Access Grants 執行個體中註冊多個位置,您可以註冊下列任何項目:
S3 URI | IAM 角色 | 描述 |
---|---|---|
s3:// |
|
預設位置 |
s3:// |
|
此位置包括所指定儲存貯體中的所有物件。 |
s3:// |
|
此位置包含儲存貯體中以此字首開頭的物件金鑰名稱的所有物件。 |
在註冊特定儲存貯體或字首之前,請務必執行下列動作:
-
建立一或多個儲存貯體,其中包含您要授予存取權的資料。這些儲存貯體必須位於與您的 S3 Access Grants 執行個體 AWS 區域 相同的 中。如需詳細資訊,請參閱建立儲存貯體。
新增字首是選用步驟。字首是物件金鑰名稱開頭的字串。您可以使用它們來組織儲存貯體中的物件,以及進行存取管理。若要新增字首至儲存貯體,請參閱建立物件索引鍵名稱。
-
建立 IAM 角色,該角色具有存取 中 S3 資料的許可 AWS 區域。如需詳細資訊,請參閱 AWS IAM Identity Center 使用者指南中的建立 IAM 角色。
在 IAM 角色信任政策中,授予 S3 Access Grants 服務 (
access-grants.s3.amazonaws.com
) 主體對您建立的 IAM 角色的存取權。若要這麼做,您可以建立包含下列陳述式的 JSON 檔案。若要將信任政策新增至您的帳戶,請參閱使用自訂信任政策建立角色。TestRolePolicy.json
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Effect": "Allow", "Principal": { "Service":"access-grants.s3.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": { "aws:SourceAccount":"
accountId
", "aws:SourceArn":"arn:aws:s3:region
:accountId
:access-grants/default" } } }, //Optionally, for an IAM Identity Center use case, add: { "Sid": "Stmt1234567891012", "Effect": "Allow", "Principal": { "Service": "access-grants.s3.amazonaws.com" }, "Action": "sts:SetContext", "Condition":{ "StringEquals":{ "aws:SourceAccount":"accountId
", "aws:SourceArn":"arn:aws:s3:region
:accountId
:access-grants/default" }, "ForAllValues:ArnEquals": { "sts:RequestContextProviders":"arn:aws:iam::aws:contextProvider/IdentityCenter" } } } ] }-
建立 IAM 政策,將 Amazon S3 許可連接至您建立的 IAM 角色。請參閱下列範例
iam-policy.json
檔案,並將
取代為您自己的資訊。user input placeholders
注意
-
如果您使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰來加密資料,則下列範例會在政策中包含 IAM 角色的必要 AWS KMS 許可。如果您不使用此功能,您可以從 IAM 政策中移除這些許可。
-
只有在憑證被 S3 Access Grants 取代時,您才能限制 IAM 角色存取 S3 資料。此範例示範如何新增特定 S3 Access Grants 執行個體的
Condition
陳述式。若要使用此Condition
,請將Condition
陳述式中的 S3 Access Grants 執行個體 ARN 取代為您的 S3 Access Grants 執行個體 ARN,其格式如下:arn:aws:s3:
region
:accountId
:access-grants/default
iam-policy.json
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "
accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region
:accountId
:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS 區域
:accountId
:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS 區域
:accountId
:access-grants/default"] } } }, //Optionally add the following section if you use SSE-KMS encryption { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] } -
您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)API、Amazon S3 REST 或 AWS SDKs,在 Amazon S3 Access Grants 執行個體中註冊位置。 Amazon S3
注意
在您註冊 S3 Access Grants 執行個體的第一個位置之後,您的執行個體仍然沒有任何個別的存取授權。若要建立存取授予,請參閱 建立授權。
您必須至少先註冊一個位置,才能透過 S3 Access Grants 授予 S3 資料的存取權。
在 S3 Access Grants 執行個體中註冊位置
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側導覽窗格中,選擇 Access Grants。
-
在 S3 Access Grants 頁面上,選擇包含您要使用之 S3 Access Grants 執行個體的區域。
如果您是第一次使用 S3 Access Grants 執行個體,請確定您已完成步驟 1 - 建立 S3 Access Grants 執行個體,並瀏覽至設定 Access Grants 執行個體精靈的步驟 2。如果您已有 S3 Access Grants 執行個體,請選擇檢視詳細資訊,然後從位置索引標籤選擇註冊位置。
-
針對位置範圍,選擇瀏覽 S3 或輸入您要註冊的位置的 S3 URI 路徑。如需 S3 URI 格式,請參閱位置格式資料表。輸入 URI 之後,您可以選擇檢視來瀏覽位置。
-
針對 IAM 角色,選擇下列其中一項:
-
從現有的 IAM 角色中選擇
從下拉式清單中選擇 IAM 角色。選擇角色後,請選擇檢視以確定此角色具有管理您要註冊之位置的必要許可。具體而言,請確認此角色將
sts:AssumeRole
和sts:SetSourceIdentity
許可授予 S3 Access Grants。 -
輸入 IAM 角色 ARN
導覽至 IAM 主控台
。複製 IAM 角色的 Amazon Resource Name (ARN),並將其貼在此方塊中。
-
-
選擇下一步或註冊位置完成此操作。
-
-
故障診斷:
無法註冊位置
-
位置可能已註冊。
您可能沒有註冊位置的
s3:CreateAccessGrantsLocation
許可。請聯絡您的帳戶管理員。
-
若要安裝 AWS CLI,請參閱 AWS Command Line Interface 使用者指南中的安裝 AWS CLI。
您可以在 S3 Access Grants 執行個體中註冊預設位置 s3://
或自訂位置。請確定您先建立具有位置主體存取權的 IAM 角色,然後確定您授予 S3 Access Grants 擔任此角色的許可。
若要使用下列範例命令,請將
取代為您自己的資訊。user input
placeholders
範例 建立資源政策
建立允許 S3 Access Grants 擔任 IAM 角色的政策。若要這麼做,您可以建立包含下列陳述式的 JSON 檔案。若要將資源政策新增至您的帳戶,請參閱建立並連接您的第一個客戶管理政策。
TestRolePolicy.json
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"} } ] }
範例 建立角色
執行下列 IAM 命令來建立角色。
aws iam create-role --role-name
accessGrantsTestRole
\ --regionus-east-2
\ --assume-role-policy-document file://TestRolePolicy.json
執行 create-role
命令會傳回政策:
{ "Role": { "Path": "/", "RoleName": "accessGrantsTestRole", "RoleId": "AROASRDGX4WM4GH55GIDA", "Arn": "arn:aws:iam::
111122223333
:role/accessGrantsTestRole", "CreateDate": "2023-05-31T18:11:06+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1685556427189", "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Effect": "Allow", "Principal": { "Service":"access-grants.s3.amazonaws.com" } } ] } } }
建立 IAM 政策,將 Amazon S3 許可連接至 IAM 角色。請參閱下列範例 iam-policy.json
檔案,並將
取代為您自己的資訊。user input placeholders
注意
如果您使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰來加密資料,下列範例會在政策中新增 IAM 角色的必要 AWS KMS 許可。如果您不使用此功能,您可以從 IAM 政策中移除這些許可。
為了確保 IAM 角色只有在 S3 Access Grants 取代憑證時,才能用來存取 S3 中的資料,此範例示範如何在 IAM 政策中新增指定 S3 Access Grants 執行個體 (s3:AccessGrantsInstance:
) 的InstanceArn
Condition
陳述式。使用下列範例政策時,請將
取代為您自己的資訊。user input placeholders
iam-policy.json
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "
accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region
:accountId
:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS 區域
:accountId
:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId
" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS 區域
:accountId
:access-grants/default"] } } }, { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }
執行以下命令:
aws iam put-role-policy \ --role-name accessGrantsTestRole \ --policy-name accessGrantsTestRole \ --policy-document file://iam-policy.json
範例 註冊預設位置
aws s3control create-access-grants-location \ --account-id
111122223333
\ --location-scopes3://
\ --iam-role-arn arn:aws:iam::111122223333
:role/accessGrantsTestRole
回應:
{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "default", "AccessGrantsLocationArn": "arn:aws:s3:
us-east-2
:111122223333
:access-grants/default/location/default", "LocationScope": "s3://” "IAMRoleArn": "arn:aws:iam::111122223333
:role/accessGrantsTestRole" }
範例 註冊自訂位置
aws s3control create-access-grants-location \ --account-id
111122223333
\ --location-scopes3://DOC-BUCKET-EXAMPLE/
\ --iam-role-arn arn:aws:iam::123456789012
:role/accessGrantsTestRole
回應:
{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb456", "AccessGrantsLocationArn": "arn:aws:s3:
us-east-2
:111122223333
:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888", "LocationScope": "s3://DOC-BUCKET-EXAMPLE/", "IAMRoleArn": "arn:aws:iam::111122223333
:role/accessGrantsTestRole" }
如需管理 Amazon S3 Access Grants 執行個體的 Amazon S3 REST API支援相關資訊,請參閱 Amazon Simple Storage Service API 參考中的下列章節:
本節提供如何使用 AWS SDKs 註冊位置的範例。
若要使用下列範例,請以您自己的資訊取代
。user input
placeholders