

# 使用 AWS 安全凭证以编程方式进行访问
<a name="security-creds-programmatic-access"></a>

我们建议尽可能使用短期访问密钥来编程调用 AWS 或使用 AWS Command Line Interface 或 AWS Tools for PowerShell。但是，您也可以将长期 AWS 访问密钥用于这些目的。

创建长期访问密钥时，您将访问密钥 ID（例如 `AKIAIOSFODNN7EXAMPLE`）和秘密访问密钥（例如 `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`）创建为一组。秘密访问密钥仅在您创建它时可供下载。如果您没有下载秘密访问密钥或丢失了它，则必须创建新的秘密访问密钥。

在许多情况下，您并不需要永不过期的长期访问密钥（例如为 IAM 用户创建的访问密钥）。相反，您可以创建 IAM 角色并生成临时安全凭证。临时安全凭证包括访问密钥 ID 和秘密访问密钥，以及一个指示凭证何时到期的安全令牌。在过期后，这些凭证将不再有效。有关更多信息，请参阅 [长期访问密钥的替代方案](#security-creds-alternatives-to-long-term-access-keys)。

以 `AKIA` 开头的访问密钥 ID 是 IAM 用户或 AWS 账户 根用户的长期访问密钥。以 `ASIA` 开头的访问密钥 ID 是使用 AWS STS 操作创建的临时凭证访问密钥。

如果用户需要在 AWS 管理控制台之外与 AWS 交互，则需要编程式访问权限。授予编程式访问权限的方法取决于访问 AWS 的用户类型。

要向用户授予编程式访问权限，请选择以下选项之一。


****  

| 哪个用户需要编程式访问权限？ | 目的 | 方式 | 
| --- | --- | --- | 
| IAM | （推荐）使用控制台凭证作为临时凭证来签署向 AWS CLI、AWS SDK 或 AWS API 发出的编程请求。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/security-creds-programmatic-access.html)  | 
|  人力身份 （在 IAM Identity Center 中管理的用户）  | 使用临时凭证签署向 AWS CLI、AWS SDK 或 AWS API 发出的编程请求。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/security-creds-programmatic-access.html)  | 
| IAM | 使用临时凭证签署向 AWS CLI、AWS SDK 或 AWS API 发出的编程请求。 | 按照《IAM 用户指南》中[将临时凭证用于 AWS 资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)中的说明进行操作。 | 
| IAM | （不推荐使用）使用长期凭证签署向 AWS CLI、AWS SDK 或 AWS API 发出的编程请求。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/security-creds-programmatic-access.html)  | 

## 长期访问密钥的替代方案
<a name="security-creds-alternatives-to-long-term-access-keys"></a>

对于许多常见使用案例，应有长期访问密钥的替代方法。为了提高您的账户安全性，请考虑以下几点。
+ **不要在应用程序代码或代码存储库中嵌入长期访问密钥和秘密访问密钥 –**改用 AWS Secrets Manager 或其他秘密管理解决方案，因此您不必以纯文本硬编码密钥。然后，应用程序或客户端可以在需要时检索秘密。有关更多信息，请参阅《AWS Secrets Manager 用户指南》**中的[什么是 AWS Secrets Manager？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)。
+ **尽可能使用 IAM 角色来生成临时安全凭证 –**尽可能使用机制颁发临时安全凭证，而不是使用长期访问密钥。临时安全凭证更加安全，因为它们不随用户一起存储，而是动态生成并在用户提出请求时提供给用户。临时安全凭证的生命周期较短，因此无需管理或更新。提供临时访问密钥的机制包括 IAM 角色或 IAM Identity Center 用户的身份验证。对于在 AWS 外部运行的计算机，您可以使用 [AWS Identity and Access Management Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html)。
+ **对 AWS Command Line Interface(AWS CLI) 或 `aws-shell` 使用长期访问密钥的替代方法 – **替代方法包括如下。
  + **使用控制台凭证登录以进行 AWS 本地开发**。您可以使用 AWS CLI 版本 2 和 `aws login` 命令生成短期凭证，以使用您的控制台凭证运行 AWS CLI 命令。要了解更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[登录以进行 AWS 本地开发](https://docs.aws.amazon.com//cli/latest/userguide/cli-authentication-user.html)。
  + **AWS CloudShell** 是一个基于浏览器的预先验证 shell，您可以直接从 AWS 管理控制台 中启动。您可以通过自己喜爱的 Shell（Bash、Powershell 或 Z shell）来对 AWS 服务 运行 AWS CLI 命令。在执行此操作时，您无需下载或安装命令行工具。有关更多信息，请参阅《AWS CloudShell 用户指南》**中的[什么是 AWS CloudShell？](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)。
+ **不要为需要访问应用程序或 AWS 服务 的人类用户创建长期访问密钥 – **IAM Identity Center 可以生成临时访问凭证，供您的外部 IdP 用户访问 AWS 服务。这样就无需在 IAM 中创建和管理长期凭证。在 IAM Identity Center 中，创建一个 IAM Identity Center 权限集，该权限集向外部 IdP 用户授予访问权限。然后，将来自 IAM Identity Center 的组分配给选定 AWS 账户 中的权限集。有关更多信息，请参阅[什么是 AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)、[连接到外部身份提供者](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html)以及 *AWS IAM Identity Center 用户指南*中的[权限集](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)。
+ **不要 AWS 计算服务中存储长期访问密钥 – **相反，应为计算资源分配 IAM 角色。这会自动提供临时凭证以授予访问权限。例如，在创建附加到 Amazon EC2 实例的实例配置文件，可以将 AWS 角色分配给该实例并使其对该实例的所有应用程序可用。实例配置文件包含角色，并使 Amazon EC2 实例上运行的程序能够获得临时凭证。要了解更多信息，请参阅[使用 IAM 角色为 Amazon EC2 实例上运行的应用程序授予权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。