

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

# 使用和工具进行身份验证 AWS SDKs 和访问
<a name="access"></a>

在开发 S AWS DK 应用程序或使用要使用的 AWS 工具时 AWS 服务，必须确定您的代码或工具的身份验证 AWS方式。您可以通过不同的方式配置对 AWS 资源的编程访问权限，具体取决于代码运行的环境和可用的 AWS 访问权限。

以下选项是[凭证提供者链](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain)的一部分。这意味着，通过相应地配置您的共享`credentials`文件 AWS `config`和文件，您的 AWS SDK 或工具将自动发现并使用该身份验证方法。

## 选择应用程序代码身份验证方法
<a name="authDecisionTree"></a>

选择一种方法来验证您的应用程序发 AWS 出的呼叫。

### 你是否在 AWS 服务 （例如亚马逊 EC2、Lambda、Amazon ECS、Amazon EKS 等 CodeBuild）中运行代码？
<a name="a"></a>

如果您的代码在上运行 AWS，则凭据可以自动提供给您的应用程序。例如，假设您的应用程序在 Amazon Elastic Compute Cloud 上托管，并且有一个该资源关联的 IAM 角色，则您的应用程序将会自动获取凭证。同样，如果您使用 Amazon ECS 或 Amazon EKS 容器，则容器内运行的代码可以该 SDK 的[凭证提供者链](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain)自动获取为该 IAM 角色设置的凭证。

#### 要在 Amazon Elastic Compute Cloud 实例中运行代码？
<a name="a1"></a>

[使用 IAM 角色对部署到 Amazon 的应用程序进行身份验证 EC2](access-iam-roles-for-ec2.md) – 使用 IAM 角色在 Amazon EC2 实例上安全地运行您的应用程序。

#### 你的代码在 AWS Lambda 函数里吗？
<a name="a2"></a>

当您[创建 Lambda 函数](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)时，Lambda 会创建具有最低权限的执行角色。然后， AWS 软件开发工具包或工具在运行时通过 Lambda 执行环境自动使用附加到 Lambda 的 IAM 角色。

#### 您的代码是否在亚马逊弹性容器服务（亚马逊 EC2 上或 AWS Fargate 亚马逊 ECS 上）？
<a name="a3"></a>

使用任务的 IAM 角色。您必须[创建一个任务角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)并在 [Amazon ECS 任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)中指定该角色。然后， AWS SDK 或工具会自动使用在运行时通过 Amazon ECS 元数据分配给任务的 IAM 角色。

#### 要在 Amazon Elastic Kubernetes Service 中运行代码？
<a name="a4"></a>

我们建议您使用 [Amazon EKS 容器组身份](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)。

注意：如果您认为[服务账户的 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)（IRSA）可能更适合您的独特需求，请参阅《Amazon EKS 用户指南》中的[比较 EKS 容器组身份和 IRSA](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html#service-accounts-iam)****。

#### 你的代码在运行吗 AWS CodeBuild
<a name="a5"></a>

有关信息，请参阅[使用基于身份的策略](https://docs.aws.amazon.com/codebuild/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html)。 CodeBuild

#### 要在其他 AWS 服务中运行代码？
<a name="a6"></a>

请参阅相关 AWS 服务的专门指南。当你在上运行代码时 AWS，SDK [凭证提供程序链](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain)可以自动为你获取和刷新凭证。

### 要创建移动应用程序或基于客户端的 Web 应用程序？
<a name="b"></a>

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

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

要了解如何为您的 SDK 或工具进行配置，请参阅 [假设角色使用网络身份或 OpenID Connect 进行身份验证和工具 AWS SDKs](access-assume-role-web.md)。

有关移动应用程序，请考虑使用 Amazon Cognito。Amazon Cognito 充当身份凭证代理程序并为您完成许多联合身份验证工作。有关更多信息，请参阅 *IAM 用户指南*中的[将 Amazon Cognito 用于移动应用程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_cognito.html)。

### 要在本地开发和运行代码？
<a name="c"></a>

我们建议[使用控制台凭据进行身份验证 AWS SDKs 和使用工具](access-login.md)。

在基于浏览器的快速身份验证流程之后，会 AWS 自动生成适用于本地开发工具（如 CL AWS I 和）的临时证书。 AWS Tools for PowerShell AWS SDKs

#### 如果您使用身份中心进行 AWS 账户访问
<a name="idc"></a>

如果您已经有权访问 and/or 需要管理员工访问权限的 AWS 账户，请使用 IAM Identity Center 对 AWS SDK 和工具进行身份验证。作为安全最佳实践，我们建议 AWS Organizations 与 IAM Identity Center 配合使用来管理所有 AWS 账户的访问权限。您可以在 IAM 身份中心创建用户，使用 Microsoft Active Directory，使用 SAML 2.0 身份提供商 (IdP)，或者将您的 Id AWS P 单独联合到账户。要查看您所在的地区是否支持 IAM 身份中心，请参阅 [使用 IAM 身份中心对 AWS SDK 和工具进行身份验证](access-sso.md) Amazon Web Services 一般参考中的 IAM 身份中心终端节点和配额。

#### 如果您正在寻找其他身份验证方式
<a name="owa"></a>

创建一个权限最低的 IAM 用户，该用户有权`sts:AssumeRole`进入您的目标角色。然后，使用为该用户`source_profile`设置的设置，将您的个人资料配置为扮演角色。

您也可以通过环境变量或共享凭证文件使用临时 IAM AWS 证书。请参阅使用短期凭证进行身份验证 AWS SDKs 和工具。

注意：仅在沙盒或学习环境中，您可以考虑使用长期凭据进行身份验证 AWS SDKs 和使用工具。

### 要在本地或者混合/按需 VM（例如从 Amazon S3 读取或写入 Amazon S3 的服务器，或者部署到云端的 Jenkins）中运行代码？
<a name="d"></a>

#### 要使用 X.509 客户端证书？
<a name="d1"></a>

是：请参阅[使用 IAM Anywhere 角色进行身份验证 AWS SDKs 和工具](access-rolesanywhere.md)。您可以使用 IAM Roles Anywhere 在 IAM 中为在外部运行的服务器、容器和应用程序等工作负载获取临时安全证书 AWS。要使用 IAM Roles Anywhere，您的工作负载必须使用 X.509 证书。

#### 环境能否安全地连接到联合身份提供商（例如 Microsoft Entra 或 Okta）以请求临时证书？ AWS
<a name="d2"></a>

##### 能：使用[进程凭证提供者](feature-process-credentials.md)
<a name="d2a"></a>

使用[进程凭证提供者](feature-process-credentials.md)在运行时自动检索凭证。这些系统可能会使用辅助工具或插件来获取凭证，并且可能使用 `sts:AssumeRole` 在幕后代入 IAM 角色。

##### 否：使用通过注入的临时证书 AWS Secrets Manager
<a name="d2b"></a>

使用通过注入的临时证书 AWS Secrets Manager。有关获取短期访问密钥的选项，请参阅《IAM 用户指南》中的[请求临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)**。有关存储此类临时凭证的选项，请参阅 [AWS 访问密钥](feature-static-credentials.md)。

您可以使用这些凭证安全地从 [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html)（其中可能存储了您生的产密钥或基于角色的长期凭证）检索更广泛的应用程序权限。

### 你使用的第三方工具不在里面 AWS吗？
<a name="e"></a>

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

#### 如果第三方提供者没有提供文档，您能否安全地注入临时凭证？
<a name="e1"></a>

是：使用环境变量和临时 AWS STS 证书。

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

## 身份验证方法
<a name="authOptions"></a>

**在 AWS 环境中运行的代码的身份验证方法**

如果您的代码在上运行 AWS，则凭据可以自动提供给您的应用程序。例如，假设您的应用程序在 Amazon Elastic Compute Cloud 上托管，并且有一个该资源关联的 IAM 角色，则您的应用程序将会自动获取凭证。同样，如果您使用 Amazon ECS 或 Amazon EKS 容器，则容器内运行的代码可以该 SDK 的凭证提供者链自动获取为该 IAM 角色设置的凭证。
+ [使用 IAM 角色对部署到 Amazon 的应用程序进行身份验证 EC2](access-iam-roles-for-ec2.md) – 使用 IAM 角色在 Amazon EC2 实例上安全地运行您的应用程序。
+  您可以通过以下方式 AWS 使用 IAM 身份中心进行编程交互：
  + [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/)用于从控制台运行 AWS CLI 命令。
  + 要尝试为软件开发团队提供基于云的协作空间，可以考虑使用 [Amazon CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/latest/userguide/welcome.html)。

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

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

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

要了解如何为您的 SDK 或工具进行配置，请参阅 [假设角色使用网络身份或 OpenID Connect 进行身份验证和工具 AWS SDKs](access-assume-role-web.md)。

有关移动应用程序，请考虑使用 Amazon Cognito。Amazon Cognito 充当身份凭证代理程序并为您完成许多联合身份验证工作。有关更多信息，请参阅 *IAM 用户指南*中的[将 Amazon Cognito 用于移动应用程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_cognito.html)。

**本地（不在 AWS中）运行的代码的身份验证方式**
+ [使用控制台凭据进行身份验证 AWS SDKs 和使用工具](access-login.md)— 此功能可与 AWS 命令行界面和工具配合使用， PowerShell 并为您提供可刷新的凭据，这些凭据适用于本地开发工具（例如 AWS CLI、 PowerShell 和 AWS的工具）。
+ [使用 IAM 身份中心对 AWS SDK 和工具进行身份验证](access-sso.md)— 作为安全最佳实践，我们建议 AWS Organizations 与 IAM Identity Center 配合使用来管理所有人的访问权限 AWS 账户。你可以在中创建用户 AWS IAM Identity Center，使用 Microsoft Active Directory，使用 SAML 2.0 身份提供商 (IdP)，或者将你的 IdP 单独联合到其中。 AWS 账户要查看您的地区是否支持 IAM Identity Center，请参阅 *Amazon Web Services 一般参考* 中的 [AWS IAM Identity Center 终端点和配额](https://docs.aws.amazon.com/general/latest/gr/sso.html)。
+ [使用 IAM Anywhere 角色进行身份验证 AWS SDKs 和工具](access-rolesanywhere.md)— 您可以使用 IAM Roles Anywhere 在 IAM 中为在外部运行的服务器、容器和应用程序等工作负载获取临时安全证书 AWS。要使用 IAM Roles Anywhere，您的工作负载必须使用 X.509 证书。
+  [假设一个拥有身份验证 AWS 凭证 AWS SDKs 和工具的角色](access-assume-role.md)— 您可以扮演 IAM 角色来临时访问原本可能无法访问的 AWS 资源。
+  [使用 AWS 访问密钥进行身份验证 AWS SDKs 和工具](access-users.md)— 其他可能不太方便或可能增加 AWS 资源安全风险的选项。

**有关访问管理的更多信息**

I *AM 用户指南*包含以下有关安全控制 AWS 资源访问的信息：
+ [IAM 身份（用户、用户组和角色）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)— 了解中身份的基础知识 AWS。
+ [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) – 根据[责任共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)开发 AWS 应用程序时应遵循的安全建议。

*Amazon Web Services 一般参考* 具有以下基础知识：
+ [了解并获取您的 AWS 凭证](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html) – 控制台和以编程方式访问的访问密钥选项和管理实践。

**使用 IAM Identity Center 可信身份传播（TIP）插件来访问 AWS 服务**
+ [使用 TIP 插件进行访问 AWS 服务](access-tip.md)— 如果您正在为 Amazon Q Business 或其他支持可信身份传播的服务创建应用程序，并且正在使用 适用于 Java 的 AWS SDK 或 适用于 JavaScript 的 AWS SDK，则可以使用 TIP 插件来获得简化的授权体验。

## AWS 构建者 ID
<a name="bid"></a>

任何 AWS 账户 你可能已经拥有或想要创作的 AWS 构建者 ID 补充。虽然 AWS 账户 充当你创建的 AWS 资源的容器并为这些资源提供安全边界，但你的 AWS 构建者 ID 代表你是一个个体。您可以使用登录 AWS 构建者 ID 以访问开发者工具和服务，例如 Amazon Q 和 Amazon CodeCatalyst。
+ [使用 AWS 构建者 ID*AWS 登录 用户指南*登录](https://docs.aws.amazon.com/signin/latest/userguide/sign-in-aws_builder_id.html) — 了解如何创建和使用， AWS 构建者 ID 并了解生成器 ID 提供的内容。
+ [CodeCatalyst概念- AWS 构建者 ID](https://docs.aws.amazon.com/codecatalyst/latest/userguide/concepts.html#sign-in-concept) 在 *Amazon CodeCatalyst 用户指南*中-了解如何 CodeCatalyst 使用 AWS 构建者 ID.