列出调用方的访问授权 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

列出调用方的访问授权

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

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

注意

对于公司目录身份,在列出调用方的访问权限管控时,S3 访问权限管控将返回用于身份感知会话的 IAM 身份的授权。有关身份感知会话的更多信息,请参阅《Amazon Identity and Access Management 用户指南》中的授予使用身份感知控制台会话的权限

无论是 IAM 身份还是公司目录身份,被授权者都可以使用 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 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

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

Java

以下代码示例返回 API 调用方对特定 Amazon Web Services 账户的 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 ) ])