列出调用方的访问授权 - Amazon Simple Storage Service

列出调用方的访问授权

S3 数据拥有者可以使用 S3 访问权限管控为 AWS Identity and Access Management(IAM)身份或 AWS IAM Identity Center 公司目录身份创建访问授权。IAM 身份和 IAM Identity Center 目录身份反过来可以使用 ListCallerAccessGrants API 列出这些身份可以访问的所有 Amazon S3 存储桶、前缀和对象,如其 S3 访问权限管控所定义的那样。使用此 API 可以发现 IAM 身份或目录身份可以通过 S3 访问权限管控来访问的所有 S3 数据。

可以使用此功能来构建应用程序,以显示特定最终用户可以访问的数据。例如,适用于 S3 的 AWS Storage Browser(客户用来访问 S3 存储桶的开源 UI 组件)使用此功能根据最终用户的 S3 访问权限管控,向最终用户提供他们有权在 Amazon S3 中访问的数据。另一个示例是,当构建用于在 Amazon S3 中浏览、上传或下载数据的应用程序时,可以使用此功能在应用程序中构建最终用户可以浏览的树结构。

无论是 IAM 身份还是公司目录身份,被授权者都可以使用 AWS Command Line Interface(AWS CLI)、Amazon S3 REST API 和 AWS SDK 获取其访问授权的列表。

要安装 AWS CLI,请参阅 AWS Command Line Interface 用户指南中的安装 AWS CLI

要使用以下示例命令,请将 user input placeholders 替换为您自己的信息。

例 列出调用方的访问授权

请求:

aws s3control list-caller-access-grants \ --account-id 111122223333 \ --region us-east-2 --max-results 5

响应:

{ "NextToken": "6J9S...", "CallerAccessGrantsList": [ { "Permission": "READWRITE", "GrantScope": "s3://amzn-s3-demo-bucket/prefix1/sub-prefix1/*", "ApplicationArn": "NA" }, { "Permission": "READWRITE", "GrantScope": "s3://amzn-s3-demo-bucket/prefix1/sub-prefix2/*", "ApplicationArn": "ALL" }, { "Permission": "READWRITE", "GrantScope": "s3://amzn-s3-demo-bucket/prefix1/sub-prefix3/*", "ApplicationArn": "arn:aws:sso::111122223333:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" } ] }
例 列出调用方对存储桶的访问授权

可以使用 grantscope 参数缩小结果的范围。

请求:

aws s3control list-caller-access-grants \ --account-id 111122223333 \ --region us-east-2 --grant-scope "s3://amzn-s3-demo-bucket"" --max-results 1000

响应:

{ "NextToken": "6J9S...", "CallerAccessGrantsList": [ { "Permission": "READ", "GrantScope": "s3://amzn-s3-demo-bucket*", "ApplicationArn": "ALL" }, { "Permission": "READ", "GrantScope": "s3://amzn-s3-demo-bucket/prefix1/*", "ApplicationArn": "arn:aws:sso::111122223333:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" } ] }

有关 Amazon S3 REST API 支持获取 API 调用方的访问授权列表的信息,请参阅《Amazon Simple Storage Service API 参考》中的 ListCallerAccessGrants

此部分中的示例说明被授权者如何使用 AWS SDK 从 S3 Access Grants 请求临时凭证。

Java

以下代码示例返回 API 调用方对特定 AWS 账户的 S3 数据的访问授权。要使用此代码示例,请将 user input placeholders 替换为您自己的信息。

例 列出调用方的访问授权

请求:

Public void ListCallerAccessGrants() { ListCallerAccessGrantsRequest listRequest = ListCallerAccessGrantsRequest.builder() .withMaxResults(1000) .withGrantScope("s3://") .accountId("111122223333"); ListCallerAccessGrantsResponse listResponse = s3control.listCallerAccessGrants(listRequest); LOGGER.info("ListCallerAccessGrantsResponse: " + listResponse); }

响应:

ListCallerAccessGrantsResponse( CallerAccessGrantsList=[ ListCallerAccessGrantsEntry( S3Prefix=s3://amzn-s3-demo-bucket/prefix1/, Permission=READ, ApplicationArn=ALL ) ])