本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
註冊位置
在 AWS 區域 帳戶中的 中建立 Amazon S3 Access Grants 執行個體之後,您會在該執行個體中註冊 S3 位置。S3 Access Grants 位置會將預設 S3 位置 (s3://
)、儲存貯體或字首映射至 AWS Identity and Access Management (IAM) 角色。S3 存取授權會擔任此 IAM 角色,將臨時憑證提供給存取該特定位置的承授者。您必須先在 S3 存取授權執行個體中至少註冊一個位置,才能建立存取授權。
建議的使用案例
建議您註冊預設位置 (s3://
),並將其映射至 IAM 角色。預設 S3 路徑 (s3://
) 的位置涵蓋對帳戶 中所有 S3 儲存貯體 AWS 區域 的存取。當您建立存取授權時,您可以將授權範圍縮小為預設位置內的儲存貯體、字首或物件。
複雜的存取管理使用案例
更複雜的存取管理使用案例除了預設位置,可能還需要您註冊其他位置。以下是這類使用案例的一些範例:
-
假設
amzn-s3-demo-bucket
是 S3 存取授權執行個體中的註冊位置,已有映射的 IAM 角色,但此 IAM 角色在存取儲存貯體中的特定字首時會遭到拒絕。在此情況下,您可以將 IAM 角色無法存取的字首註冊為個別位置,並將該位置映射至具有必要存取權的不同 IAM 角色。 -
假設您想要建立授權,限制只有虛擬私有雲端 (VPC) 端點內的使用者才能存取。在此情況下,您可以註冊一個儲存貯體位置,僅限 IAM 角色存取 VPC 端點。稍後,當承授者向 S3 存取授權要求憑證時,S3 存取授權會擔任該位置的 IAM 角色來提供臨時憑證。除非呼叫者位於 VPC 端點內,否則此憑證會拒絕存取特定儲存貯體。除了授權中指定的一般讀取、寫入或讀寫許可之外,也會套用此拒絕許可。
註冊位置時,您還必須指定 S3 存取授權擔任的 IAM 角色,以提供臨時憑證並限制特定授權的許可。
如果您的使用案例需要您在 S3 存取授權執行個體中註冊多個位置,您可以註冊下列任何一項:
S3 URI | IAM 角色 | 描述 |
---|---|---|
s3:// |
|
預設位置 |
s3:// |
|
此位置包括所指定儲存貯體中的所有物件。 |
s3:// |
|
此位置包含儲存貯體中物件金鑰名稱開頭為此字首的所有物件。 |
註冊特定儲存貯體或字首之前,請務必執行下列作業:
-
建立一或多個儲存貯體,其中包含您要授予存取權的資料。這些儲存貯體必須與 AWS 區域 S3 Access Grants 執行個體位於相同的 中。如需詳細資訊,請參閱建立儲存貯體。
新增字首是選用步驟。字首是物件金鑰名稱開頭的字串。您可以使用字首來組織儲存貯體中的物件,以及進行存取管理。若要新增字首至儲存貯體,請參閱建立物件索引鍵名稱。
-
建立准許存取 AWS 區域中 S3 資料的 IAM 角色。如需詳細資訊,請參閱《AWS IAM Identity Center 使用者指南》中的建立 IAM 角色。
在 IAM 角色信任政策中,授予 S3 存取授權服務 (
access-grants.s3.amazonaws.com
) 主體對您建立之 IAM 角色的存取權。若要完成此操作,您可以建立包含下列陳述式的 JSON 檔案。若要將信任政策新增至您的帳戶,請參閱使用自訂信任政策建立角色。TestRolePolicy.json
{ "Version": "2012-10-17", "Statement": [ { "Sid": "TestRolePolicy", "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" } } } ] }或者,對於 IAM Identity Center 使用案例,請使用包含第二個陳述式的下列政策:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "TestRolePolicyIdentityCenter", "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" } } }, { "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 存取授權提供時,您才能限制 IAM 角色存取 S3 資料。此範例示範如何為特定 S3 存取授權執行個體新增
Condition
陳述式。若要使用此Condition
,請將Condition
陳述式中的 S3 存取授權執行個體 ARN 取代為您的 S3 存取授權執行個體 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)、Amazon S3 REST API 或 SDK,在 S3 Access Grants 執行個體中註冊位置。 Amazon S3 AWS SDKs
注意
在您的 S3 存取授權執行個體中註冊第一個位置之後,您的執行個體中仍沒有任何個別的存取授權。若要建立存取授權,請參閱建立授權。
您必須至少先註冊一個位置,才能透過 S3 Access Grants 授予 S3 資料的存取權。
在 S3 Access Grants 執行個體中註冊位置
登入 AWS Management Console ,並在 https://console.aws.amazon.com/s3/
:// 開啟 Amazon 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 政策中新增 Condition
陳述式來指定 S3 Access Grants 執行個體 (s3:AccessGrantsInstance:
)。使用下列範例政策時,請將 InstanceArn
取代為您自己的資訊。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 REST API 支援資訊,請參閱《Amazon Simple Storage Service API 參考》中的下列各節:
本節提供如何使用 AWS SDK 註冊位置的範例。
若要使用下列範例,請以您自己的資訊取代
。user input
placeholders