使用 AWS 适用于 Rust 凭证提供商的 SDK - 适用于 Rust 的 AWS SDK

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

使用 AWS 适用于 Rust 凭证提供商的 SDK

对的所有请求都 AWS 必须使用颁发的凭证进行加密签名。 AWS运行时,SDK 会通过检查多个位置来获取凭证的配置值。

如果检索到的配置包含 AWS IAM Identity Center 单点登录访问设置,则 SDK 将与 IAM Identity Center 配合检索用于向 AWS 服务发出请求的临时凭证。

如果检索到的配置包含临时证书,SDK 将使用它们进行 AWS 服务 调用。临时凭证由访问密钥对和会话令牌组成。

身份验证 AWS 可以在您的代码库之外处理。SDK 可通过凭证提供程序链自动检测、使用并刷新多种身份验证方式。

有关项目 AWS 身份验证入门的指导选项,请参阅工具参考指南中的身份验证AWS SDKs 和访问权限

凭证提供程序链

如果您在构建客户端时没有显式指定凭证提供程序,那么适用于 Rust 的 SDK 会使用凭证提供程序链来检查一系列可以提供凭证的位置。SDK 在其中一个位置找到凭证后,搜索就会停止。有关构建客户端的详细信息,请参阅在代码中为 Rust 服务客户端配置 AWS SDK

以下示例未在代码中指定凭证提供程序。SDK 使用凭证提供程序链来检测在托管环境中设置的身份验证,并将该身份验证用于 AWS 服务调用。

let config = aws_config::defaults(BehaviorVersion::latest()).load().await; let s3 = aws_sdk_s3::Client::new(&config);

凭证检索顺序

凭证提供程序链使用以下预定义序列搜索凭证:

  1. 访问密钥环境变量

    SDK 尝试从 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 以及 AWS_SESSION_TOKEN 环境变量加载凭证。

  2. 共享的 AWS configcredentials文件

    SDK 尝试从共享 AWS configcredentials文件中的[default]配置文件加载凭证。您可以使用 AWS_PROFILE 环境变量来选择您想让 SDK 加载的命名配置文件,而不是使用 [default]configcredentials文件由各种 AWS SDKs 工具共享。有关这些文件的更多信息,请参阅config工具参考指南中的共享AWS SDKs 和credentials文件。有关可在配置文件中指定的标准化提供商的更多信息,请参阅AWS SDKs 和工具标准化凭证提供商

  3. AWS STS 网络身份

    在创建需要访问的移动应用程序或基于客户端的 Web 应用程序时 AWS, AWS Security Token Service (AWS STS) 会为通过公共身份提供商 (IdP) 进行身份验证的联合用户返回一组临时安全证书。

    • 当您在配置文件中指定此项时,SDK 或工具会尝试使用 AWS STS AssumeRoleWithWebIdentity API 方法检索临时证书。有关此方法的详细信息,请参阅 AWS Security Token Service API 参考AssumeRoleWithWebIdentity中的。

    • 有关配置此提供程序的指导,请参阅《和工具参考指南》AWS SDKs 中的使用网络身份进行联合” 或 OpenID Connect。

    • 有关此提供商的 SDK 配置属性的详细信息,请参阅《工具参考指南》AWS SDKs 和《工具参考指南》中的代入角色凭据提供程序

  4. Amazon ECS 和 Amazon EKS 容器凭证

    您的 Amazon Elastic Container Service 任务和 Kubernetes 服务账户可以具有与其关联的 IAM 角色。在 IAM 角色中授予的权限由任务中运行的容器或容器组(Pod)内的容器承担。此角色允许适用于 Rust 的 SDK 应用程序代码(在容器上)使用其他 AWS 服务。

    SDK 尝试从 AWS_CONTAINER_CREDENTIALS_RELATIVE_URIAWS_CONTAINER_CREDENTIALS_FULL_URI 环境变量检索凭证,这些变量可以由 Amazon ECS 和 Amazon EKS 自动设置。

  5. Amazon EC2 实例元数据服务

    创建 IAM 角色并将其附加到您的实例。实例上适用于 Rust 的 SDK 应用程序会尝试从实例元数据中检索由角色提供的凭证。

  6. 如果此时仍未解析凭证,则操作 panics 会出现错误。

有关 AWS 凭据提供程序配置设置的详细信息,请参阅《工具参考指南》的 “设置” 参考中的标准化凭据提供程序。AWS SDKs

显式凭证提供程序

您可以指定 SDK 应使用的特定凭证提供程序,而不是依赖凭证提供程序链来检测您的身份验证方法。使用 aws_config::defaults 加载常规配置时,您可以指定自定义凭证提供程序,如下所示:

let config = aws_config::defaults(BehaviorVersion::latest()) .credentials_provider(MyCredentialsProvider::new()) .load() .await;

您可以通过实现 ProvideCredentials 特性来实施自己的凭证提供程序。

身份缓存

SDK 将缓存凭证和其他身份类型,例如 SSO 令牌。默认情况下,SDK 使用惰性缓存实现:在首次请求时加载凭证并缓存,当凭证即将过期时,会在下次请求时尝试刷新。从同一个 SdkConfig 创建的客户端共享一个 IdentityCache