获得 的临时凭证AWS STS - 适用于 Java 的 AWS 软件开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

获得 的临时凭证AWS STS

您可以使用 AWS Security Token Service (AWS STS) 获得具有有限权限的临时凭证,用于访问 AWS 服务。

使用 AWS STS 包括三个步骤:

  1. 激活区域 (可选)。

  2. 从 AWS STS 请求临时安全凭证。

  3. 使用凭证访问 AWS 资源。

注意

激活区域是可选的;默认情况下,临时安全凭证在全局终端节点 sts.amazonaws.com 获取。但为了减少延迟,并在对第一个终端节点的 AWS STS 请求失败的情况下,通过使用其他终端节点来实现请求冗余,可以激活与使用凭证的各服务或应用程序距离更接近的区域。

(可选) 激活并使用 AWS STS 区域

要激活一个区域以用于 AWS STS,请使用 AWS 管理控制台来选择和激活区域。

要激活其他 STS 区域

  1. 对于您要在新区域中为其激活 AWS STS 的账户,作为有权执行 IAM 管理任务的 IAM 用户 "iam:*" 登录。

  2. 打开 IAM 控制台,然后在导航窗格中单击 Account Settings

  3. 展开 STS Regions (STS 区域) 列表,找到要使用的区域,然后单击 Activate (激活)

在此后,可直接调用与该区域关联的 STS 终端节点。

注意

有关激活 STS 区域的更多信息和可用 AWS STS 终端节点的列表,请参阅 中的在 AWS 区域中激活和停用 AWS STSIAM User Guide。

从 AWS STS 请求临时安全凭证

要使用适用于 Java 的 AWS 开发工具包请求临时安全凭证

  1. 创建 AWSSecurityTokenServiceClient 对象:

    AWSSecurityTokenService sts_client = new AWSSecurityTokenServiceClientBuilder().standard().withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("sts-endpoint.amazonaws.com", "signing-region")).build()

    在创建不带参数的客户端 (AWSSecurityTokenService sts_client = new AWSSecurityTokenServiceClientBuilder().standard().build();) 时,会使用默认的凭证提供程序链检索凭证。如果您需要,可以提供特定的凭证提供程序:有关更多信息,请参阅“在适用于 Java 的 AWS 开发工具包中提供 AWS 凭证”。

  2. 创建 GetSessionTokenRequest 对象,还可以设置临时凭证的有效期 (秒):

    GetSessionTokenRequest session_token_request = new GetSessionTokenRequest(); session_token_request.setDurationSeconds(7200); // optional.

    对于 IAM 用户,临时凭证的有效期范围是 900 秒 (15 分钟) 到 129600 秒 (36 小时)。如果不指定有效期,则默认使用 43200 秒(12 小时)。

    对于根 AWS 账户,临时凭证的有效期范围是 900 到 3600 秒 (1 小时),如果不指定有效期,则使用默认值 3600 秒。

    重要

    从安全角度出发,强烈建议使用 IAM 用户 而非根账户来进行 AWS 访问。有关更多信息,请参阅 中的 IAM 最佳实践IAM User Guide。

  3. 在 STS 客户端上调用 getSessionToken 以获取会话令牌 (使用 GetSessionTokenRequest 对象):

    GetSessionTokenResult session_token_result = sts_client.getSessionToken(session_token_request);
  4. 使用调用 getSessionToken 的结果获取会话凭证:

    Credentials session_creds = session_token_result.getCredentials();

使用会话凭证只能在 GetSessionTokenRequest 对象指定的有效期内进行访问。在凭证过期后,需再次调用 getSessionToken 来获取新的会话令牌,才能继续访问 AWS。

使用临时凭证访问 AWS 资源

获得临时安全凭证后,可以按照明确指定凭证中说明的方法,使用它们对 AWS 服务客户端进行初始化。

例如,使用临时服务凭证创建 S3 客户端:

BasicSessionCredentials sessionCredentials = new BasicSessionCredentials( session_creds.getAccessKeyId(), session_creds.getSecretAccessKey(), session_creds.getSessionToken()); AmazonS3 s3 = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(sessionCredentials)) .build();

现在可以使用 AmazonS3 对象发出 Amazon S3 请求。

有关

有关如何使用临时安全凭证访问 AWS 资源的更多信息,请参阅 IAM User Guide 中以下几节的内容: