使用 Amazon SDK 和工具时的身份验证和访问权限 - Amazon SDK 和工具
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon SDK 和工具时的身份验证和访问权限

在开发 Amazon SDK 应用程序或使用 Amazon 工具来使用 Amazon Web Services 服务时,必须确定您的代码或工具在 Amazon 进行身份验证的方式。您可以通过不同的方式配置对 Amazon 资源的编程访问权限,具体取决于运行代码的环境以及您可用的 Amazon 访问权限。

以下选项是凭证提供者链的一部分。这意味着,通过相应地配置共享的 Amazon configcredentials 文件,您的 Amazon SDK 或工具将会自动发现并使用该身份验证方法。

选择应用程序代码身份验证方法

选择应用程序向 Amazon 发出调用时的身份验证方法。

如果代码在 Amazon 上运行,则您的应用程序可能会自动获取凭证。例如,假设您的应用程序在 Amazon Elastic Compute Cloud 上托管,并且有一个该资源关联的 IAM 角色,则您的应用程序将会自动获取凭证。同样,如果您使用 Amazon ECS 或 Amazon EKS 容器,则容器内运行的代码可以该 SDK 的凭证提供者链自动获取为该 IAM 角色设置的凭证。

使用 IAM 角色对部署到 Amazon EC2 的应用程序进行身份验证 – 使用 IAM 角色在 Amazon EC2 实例上安全地运行您的应用程序。

当您创建 Lambda 函数时,Lambda 会创建具有最低权限的执行角色。然后,Amazon SDK 或工具会自动使用在运行时通过 Lambda 执行环境附加到 Lambda 的 IAM 角色。

使用任务的 IAM 角色。您必须创建一个任务角色并在 Amazon ECS 任务定义中指定该角色。然后,Amazon SDK 或工具会自动使用在运行时通过 Amazon ECS 元数据分配给任务的 IAM 角色。

我们建议您使用 Amazon EKS 容器组身份

注意:如果您认为服务账户的 IAM 角色(IRSA)的可能更适合您的独特需求,请参阅《Amazon EKS 用户指南》中的比较 EKS 容器组身份和 IRSA

请参阅 Using identity-based policies for CodeBuild

请参阅相关 Amazon Web Services 服务的专门指南。在 Amazon 上运行代码时,SDK 凭证提供者链可以自动为您获取和刷新凭证。

如果您正在创建需要访问 Amazon 的移动应用程序或基于客户端的 Web 应用程序,请构建您的应用程序,使其能够使用 Web 身份联合验证动态请求临时 Amazon 安全凭证。

利用 Web 联合身份验证,您不需要创建自定义登录代码或管理自己的用户身份。相反,应用程序用户可以使用知名的外部身份提供者(IdP)(例如,Login with Amazon、Facebook、Google 或任何其他 OpenID Connect (OIDC) 兼容的 IdP)登录。他们可以接收身份验证令牌,然后用该令牌交换 Amazon 中的临时安全凭证,这些凭证映射到有权使用您 Amazon Web Services 账户 中的资源的 IAM 角色。

要了解如何为您的 SDK 或工具进行配置,请参阅 使用 Web 身份或 OpenID Connect 代入角色来进行 Amazon SDK 和工具的身份验证

有关移动应用程序,请考虑使用 Amazon Cognito。Amazon Cognito 充当身份凭证代理程序并为您完成许多联合身份验证工作。有关更多信息,请参阅 IAM 用户指南中的将 Amazon Cognito 用于移动应用程序

我们建议使用 IAM Identity Center 进行 Amazon SDK 和工具的身份验证

作为安全性方面的最佳实践,我们建议使用 Amazon Organizations 和 IAM Identity Center 来管理跨所有 Amazon Web Services 账户的访问权限。您可以在 Amazon IAM Identity Center 中创建用户、使用 Microsoft Active Directory、使用 SAML 2.0 身份提供者(IdP)或者将您的 IdP 单独联合到 Amazon Web Services 账户。要查看您的地区是否支持 IAM Identity Center,请参阅 Amazon Web Services 一般参考 中的 Amazon IAM Identity Center 终端点和配额

(推荐)创建一个具有最低权限的 IAM 用户,并向其提供您的目标角色中的 sts:AssumeRole 权限。然后配置您的配置文件,以使用为该用户设置的 source_profile代入一个角色

此外还可以通过环境变量或共享的 Amazon credentials 文件来使用临时 IAM 凭证。请参阅使用短期凭证进行 Amazon SDK 和工具的身份验证

注意:仅在沙盒或学习环境中时,您可以考虑 使用长期凭证进行 Amazon SDK 和工具的身份验证

是:请参阅使用 IAM Roles Anywhere 进行 Amazon SDK 和工具的身份验证。您可以使用 IAM Roles Anywhere 在 IAM 中获取临时安全凭证,以用于在 Amazon 之外运行的服务器、容器和应用程序等工作负载。要使用 IAM Roles Anywhere,您的工作负载必须使用 X.509 证书。

使用进程凭证提供者在运行时自动检索凭证。这些系统可能会使用辅助工具或插件来获取凭证,并且可能使用 sts:AssumeRole 在幕后代入 IAM 角色。

使用通过 Amazon Secrets Manager 注入的临时凭证。有关获取短期访问密钥的选项,请参阅《IAM 用户指南》中的请求临时安全凭证。有关存储此类临时凭证的选项,请参阅 Amazon 访问密钥

您可以使用这些凭证安全地从 Secrets Manager(其中可能存储了您生的产密钥或基于角色的长期凭证)检索更广泛的应用程序权限。

请参阅第三方提供者编写的文档,了解有关获取凭证的最佳指导。

能:使用环境变量和临时 Amazon STS 凭证。

不能:使用存储在加密的密钥管理器中的静态访问密钥(最后手段)。

身份验证方法

在 Amazon 环境中运行的代码的身份验证方式

如果代码在 Amazon 上运行,则您的应用程序可能会自动获取凭证。例如,假设您的应用程序在 Amazon Elastic Compute Cloud 上托管,并且有一个该资源关联的 IAM 角色,则您的应用程序将会自动获取凭证。同样,如果您使用 Amazon ECS 或 Amazon EKS 容器,则容器内运行的代码可以该 SDK 的凭证提供者链自动获取为该 IAM 角色设置的凭证。

通过基于 Web 的身份提供者进行身份验证 - 移动或基于客户端的 Web 应用程序

如果您正在创建需要访问 Amazon 的移动应用程序或基于客户端的 Web 应用程序,请构建您的应用程序,使其能够使用 Web 身份联合验证动态请求临时 Amazon 安全凭证。

利用 Web 联合身份验证,您不需要创建自定义登录代码或管理自己的用户身份。相反,应用程序用户可以使用知名的外部身份提供者(IdP)(例如,Login with Amazon、Facebook、Google 或任何其他 OpenID Connect (OIDC) 兼容的 IdP)登录。他们可以接收身份验证令牌,然后用该令牌交换 Amazon 中的临时安全凭证,这些凭证映射到有权使用您 Amazon Web Services 账户 中的资源的 IAM 角色。

要了解如何为您的 SDK 或工具进行配置,请参阅 使用 Web 身份或 OpenID Connect 代入角色来进行 Amazon SDK 和工具的身份验证

有关移动应用程序,请考虑使用 Amazon Cognito。Amazon Cognito 充当身份凭证代理程序并为您完成许多联合身份验证工作。有关更多信息,请参阅 IAM 用户指南中的将 Amazon Cognito 用于移动应用程序

本地(不在 Amazon 中)运行的代码的身份验证方式

有关访问管理的更多信息

IAM 用户指南包含以下有关安全控制对 Amazon 资源的访问的信息:

Amazon Web Services 一般参考 具有以下基础知识:

使用 IAM Identity Center 可信身份传播(TIP)插件来访问 Amazon Web Services 服务

  • 使用 TIP 插件访问 Amazon Web Services 服务:如果要为 Amazon Q Business 或其他支持可信身份传播的服务创建应用程序,并且您使用的是 适用于 Java 的 Amazon SDK 或 适用于 JavaScript 的 Amazon SDK,则可以使用 TIP 插件来简化授权体验。

Amazon 构建者 ID

您的 Amazon 构建者 ID 是对您已有或想要创建的任何 Amazon Web Services 账户 的补充。虽然 Amazon Web Services 账户 可用作您创建的 Amazon 资源的容器,并能为这些资源提供安全边界,但您的 Amazon 构建者 ID 将代表您是一个个体。您可以使用自己的 Amazon 构建者 ID 登录,来访问 Amazon Q 和 Amazon CodeCatalyst 等开发人员工具和服务。