通过 S3 Access Grants 请求访问 Amazon S3 数据
在使用 Amazon S3 Access Grants 创建访问授权来向 Amazon Identity and Access Management(IAM)主体、公司目录身份或授权应用程序授予对您的 S3 数据的访问权限之后,您的被授权者可以请求用于访问这些数据的凭证。
当应用程序或 Amazon Web Services 服务 使用 GetDataAccess
API 操作代表被授权者向 S3 Access Grants 请求对 S3 数据的访问权限时,S3 Access Grants 首先验证您是否已向该身份授予对此数据的访问权限。然后,S3 Access Grants 使用 AssumeRole API 操作来获取临时凭证令牌并将其出售给请求方。此临时凭证令牌是 Amazon Security Token Service(Amazon 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/
前缀。
授权范围 | 请求的范围 | 特权 | 返回的范围 | 效果 |
---|---|---|---|---|
S3:// |
|
Default
|
|
请求者有权访问 |
S3:// |
|
Minimal
|
|
如果前缀名称 |
S3:// |
|
Minimal
|
|
请求者有权访问 |
S3:// |
|
Default
|
|
请求者有权访问 |
S3:// |
|
Minimal
|
|
请求者只能访问 |
durationSeconds
参数设置临时凭证的持续时间(以秒为单位)。默认值为 3600
秒(1 小时),但请求者(被授权者)可以指定介于 900
秒(15 分钟)和 43200
秒(12 小时)之间的范围。如果被授权者请求的值高于此最大值,请求将失败。
注意
在对临时令牌的请求中,如果位置是对象,请将请求中的 targetType
参数值设置为 Object
。仅当位置为对象且权限级别为 Minimal
时需要此参数。如果位置是存储桶或前缀,则无需指定此参数。
有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 GetDataAccess。
可以使用 Amazon Command Line Interface(Amazon CLI)、Amazon S3 REST API 和 Amazon SDK 请求临时凭证。
要安装 Amazon CLI,请参阅 Amazon Command Line Interface 用户指南中的安装 Amazon 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://
*" }amzn-s3-demo-bucket
/prefixA*
有关用于请求 S3 Access Grants 中的临时凭证的 Amazon S3 REST API 支持的信息,请参阅《Amazon Simple Storage Service API 参考》中的 GetDataAccess。
此部分中的示例说明被授权者如何使用 Amazon SDK 从 S3 Access Grants 请求临时凭证。