本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
註冊位置
在 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端點內,否則此憑證將拒絕存取特定儲存貯體。除了授予中指定的一般 WRITE、 或 許可之外READ,還會套用此拒絕READWRITE許可。
註冊位置時,您還必須指定 S3 Access Grants 擔任IAM的角色,以授予臨時憑證並限制特定授予的許可。
如果您的使用案例需要您在 S3 Access Grants 執行個體中註冊多個位置,您可以註冊下列任何項目:
S3 URI | IAM 角色 | 描述 |
---|---|---|
s3:// |
|
預設位置 |
s3:// |
|
此位置包括所指定儲存貯體中的所有物件。 |
s3:// |
|
此位置包含儲存貯體中以此字首開頭的物件金鑰名稱的所有物件。 |
在註冊特定儲存貯體或字首之前,請務必執行下列動作:
-
建立一或多個儲存貯體,其中包含您要授予存取權的資料。這些儲存貯體必須與 AWS 區域 S3 Access Grants 執行個體位於相同的 中。如需詳細資訊,請參閱建立儲存貯體。
新增字首是選用步驟。字首是物件金鑰名稱開頭的字串。您可以使用它們來組織儲存貯體中的物件,以及進行存取管理。若要新增字首至儲存貯體,請參閱建立物件索引鍵名稱。
-
建立具有存取 中 S3 資料許可IAM的角色 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", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity", "sts:SetContext"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"}, "Condition":{ "StringEquals":{ "aws:SourceAccount":"
accountId
", "aws:SourceArn":"arn:aws:s3:region
:accountId
:access-grants/default" } //Optionally, for an IAM Identity Center use case, add: "ForAnyValue:StringEquals": { "aws:RequestContextProvider":"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
陳述ARN式中的 S3 Access Grants 執行個體取代為您的 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 或 ,在 S3 Access Grants 執行個體中註冊位置 AWS SDKs。 Amazon S3
注意
註冊 S3 Access Grants 執行個體的第一個位置後,您的執行個體仍然沒有任何個別的存取授與。若要建立存取授予,請參閱 建立授權。
您必須至少先註冊一個位置,才能透過 S3 Access Grants 授予 S3 資料的存取權。
在 S3 Access Grants 執行個體中註冊位置
登入 AWS Management Console 並在 開啟 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 CLI 。 AWS Command Line Interface
您可以在 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" } } ] } } }
建立將 Amazon S3 許可連接至IAM角色IAM的政策。請參閱下列範例 iam-policy.json
檔案,並將
取代為您自己的資訊。user input placeholders
注意
如果您使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰來加密資料,下列範例會為政策中IAM的角色新增必要的 AWS KMS 許可。如果您不使用此功能,您可以從IAM政策中移除這些許可。
為了確保只有在 S3 Access Grants 取代憑證時,該IAM角色才能用來存取 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" }
如需管理 S3 Access Grants 執行個體的 Amazon S3 RESTAPI支援相關資訊,請參閱 Amazon Simple Storage Service API參考 中的下列章節:
本節提供如何使用 註冊位置 AWS 的範例SDKs。
若要使用下列範例,請以您自己的資訊取代
。user input
placeholders