本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 S3 Access Grants 請求存取 Amazon S3 資料
使用 S3 Access Grants 建立存取授權之後,承授者可以請求登入資料,以存取他們被授予存取權的 S3 資料。承授者可以是 AWS Identity and Access Management (IAM) 主體、您的公司目錄身分或授權的應用程式。
應用程式或 AWS 服務 可以使用 S3 Access Grants GetDataAccess
API 操作,請求 S3 Access Grants 代表承授者存取您的 S3 資料。 GetDataAccess
首先, 會驗證您已授予此身分對資料的存取權。然後,S3 存取授權會使用 AssumeRole API 操作來取得臨時憑證權杖,並將其提供給請求者。這個臨時憑證權杖是 AWS Security Token Service (AWS STS) 權杖。
GetDataAccess
請求必須包含 target
參數,用來指定臨時憑證套用的 S3 資料範圍。此target
範圍可與授予的範圍或該範圍的子集相同,但target
範圍必須在授予承授者之授予的範圍內。請求也必須指定 permission
參數,以指出臨時憑證的許可層級,也就是 READ
、WRITE
或 READWRITE
。
權限
請求者可以在其憑證請求中指定臨時權杖的許可層級。請求者可以使用 privilege
參數,在授權範圍內縮小或加大臨時憑證的存取範圍。privilege
參數的預設值為 Default
,這表示所傳回憑證的目標範圍是原始授權範圍。privilege
的另一個可能的值為 Minimal
。如果 target
範圍比原始授權範圍小,則臨時憑證的範圍也會縮小,以符合 target
範圍,前提是 target
範圍在授權範圍內。
下表詳細說明 privilege
參數對兩個授權的影響。一個授權的範圍是 S3://
,包括 amzn-s3-demo-bucket1
/bob/*
儲存貯體中的整個 amzn-s3-demo-bucket1
bob/
字首。另一個授權的範圍是 S3://
,只包括 amzn-s3-demo-bucket1
/bob/reports/*
儲存貯體中的 amzn-s3-demo-bucket1
bob/reports/
字首。
授權範圍 | 請求範圍 | 權限 | 傳回範圍 | Effect |
---|---|---|---|---|
S3:// |
|
Default
|
|
請求者可以存取 |
S3:// |
|
Minimal
|
|
若字首名稱 |
S3:// |
|
Minimal
|
|
請求者可以存取 |
S3:// |
|
Default
|
|
請求者可以存取 |
S3:// |
|
Minimal
|
|
請求者只能存取 |
目錄身分
GetDataAccess
比對適當的授予時, 會考慮請求中涉及的所有身分。對於公司目錄身分, GetDataAccess
也會傳回用於身分感知工作階段的 IAM 身分授予。如需身分感知工作階段的詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的授予使用身分感知主控台工作階段的許可。 GetDataAccess
會產生憑證,將範圍限制為最嚴格的授予,如下表所示:
IAM 身分的授予範圍 | 目錄身分的授予範圍 | 請求範圍 | 傳回範圍 | 權限 | Effect |
---|---|---|---|---|---|
S3:// |
|
S3://
|
S3://
|
Default |
請求者可以存取金鑰名稱開頭為字首 bob/ 的所有物件,做為 IAM 角色授予的一部分,但僅限於字首 bob/images/ 做為目錄身分授予的一部分。IAM 角色和目錄身分都可以存取請求的範圍,也就是 |
S3:// |
|
S3://
|
S3://
|
Minimal |
由於權限設定為 |
S3:// |
|
S3://
|
S3://
|
Default |
請求者可以存取金鑰名稱開頭為字首 bob/ 的所有物件,做為目錄身分授予的一部分,但僅限於字首 bob/images/ 做為 IAM 角色授予的一部分。IAM 角色和目錄身分都可以存取請求的範圍,也就是 |
S3:// |
|
S3://
|
S3://
|
Minimal |
由於權限設定為 |
持續時間
durationSeconds
參數會設定臨時憑證的持續時間 (以秒為單位)。預設值為 3600
秒 (1 小時),但請求者 (承授者) 可以指定從 900
秒 (15 分鐘) 到最長 43200
秒 (12 小時) 的範圍。若承授者請求的值高於此上限,則請求會失敗。
注意
在您的臨時權杖請求中,如果位置是物件,請將您請求中的 targetType
參數值設定為 Object
。只有在位置是物件且權限層級為 Minimal
時,才需要此參數。若位置是儲存貯體或字首,則不需要指定此參數。
範例
您可以使用 AWS Command Line Interface (AWS CLI)、Amazon S3 REST API 和 AWS SDKs 來請求臨時憑證。請參閱這些範例。
如需詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 GetDataAccess。
若要安裝 AWS CLI,請參閱AWS Command Line Interface 《 使用者指南》中的安裝 AWS CLI 。
若要使用下列範例命令,請以您自己的資訊取代
。user input
placeholders
範例 請求臨時憑證
要求:
aws s3control get-data-access \ --account-id
111122223333
\ --targets3://
\amzn-s3-demo-bucket
/prefixA*--permission
READ
\ --privilege Default \ --regionus-east-2
回應:
{ "Credentials": { "AccessKeyId": "
Example-key-id
", "SecretAccessKey": "Example-access-key
", "SessionToken": "Example-session-token
", "Expiration": "2023-06-14T18:56:45+00:00
"}, "MatchedGrantTarget": "s3://
*", "Grantee": { "GranteeType": "IAM", "GranteeIdentifier": "arn:aws:iam::amzn-s3-demo-bucket
/prefixA*111122223333
:role/role-name
" } }
如需有關向 S3 Access Grants 請求臨時憑證的 Amazon S3 REST API 支援資訊,請參閱《Amazon Simple Storage Service API 參考》中的 GetDataAccess。
本節提供承授者如何使用 AWS SDKs 從 S3 Access Grants 請求臨時憑證的範例。