管理 AWS 访问密钥的最佳实践 - AWS 一般参考

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

管理 AWS 访问密钥的最佳实践

使用时 AWS 您可以通过以下方式提供您的AWS访问密钥,以便AWS能够验证您在ProgrammaticCalls中的身份。您的访问密钥包含一个访问密钥ID(例如, AKIAIOSFODNN7EXAMPLE)和秘密访问密钥(例如, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)。

拥有您访问密钥的任何人都有相同的访问权限 AWS 您所做的资源。因此, AWS 保护您的访问密钥的长度,以及与我们的 共同责任模式,您也应该。

遵循的步骤可帮助您保护您的访问密钥。有关背景信息,请参阅AWS 安全凭证.

注意

贵组织的安全要求和策略可能与本主题中介绍的有所不同。此处提供的建议是一般指南。

删除(或不生成)账户访问密钥

您必须使用您的访问密钥来签署您使用 AWS 命令行工具AWS SDK,或直接API呼叫。拥有您的 AWS 账户根用户 无限制访问帐户中的所有资源,包括帐单信息。您无法限制您的 的权限。AWS 账户根用户.

保护您帐户的最佳方式之一就是没有访问密钥 AWS 账户根用户. 除非您必须 根用户 访问密钥(很少见),最好不要生成。相反, 建议最佳实践 是创建一个或多个 AWS Identity and Access Management (IAM)用户。授予这些 IAM 用户可以使用必要的权限,并使用它们 AWS.

如果您已经拥有帐户的访问密钥,我们建议您以下内容: 找到您当前使用访问密钥(如有)的应用程序中的位置,请更换 根用户 访问密钥 IAM 用户访问密钥。然后禁用并删除 根用户 访问密钥。有关如何替换另一个访问密钥的更多信息,请参阅发布 如何旋转访问密钥 IAM 用户 在 AWS 安全博客。

默认情况下, AWS 不生成新帐户的访问密钥。

有关如何创建 IAM 具有管理权限的用户,请参阅 创建您的第一个 IAM 管理员用户和组IAM 用户指南.

使用临时安全凭证(IAM 角色)代替长期访问密钥

在许多情况下,您不需要长期访问密钥,这些密钥永远不会过期(如您所有 IAM 用户)。相反,您可以创建 IAM 角色并生成临时安全证书。临时安全证书包括访问密钥 ID 和秘密访问密钥,以及一个指示证书何时到期的安全令牌。

长期访问密钥,例如 IAM 用户和 AWS 账户根用户s在您手动撤销它们之前保持有效。但是,通过 IAM 角色和其他功能 AWS Security Token Service 短期后过期。凭证意外泄漏时,使用临时安全凭证可帮助降低您的风险。

在以下这些情况下使用 IAM 角色和临时安全证书:

  • 您有一个应用程序或 AWS CLI 脚本上运行的脚本 Amazon EC2 实例。 请勿直接在应用程序中使用访问密钥。不要通过应用程序的访问密钥,将其嵌入应用程序中,或让应用程序读取访问密钥来自任何源。相反,定义 IAM 对您的应用程序具有适当权限的角色,并启动 Amazon EC2 实例 EC2的角色. 这个员工是一个 IAM 与 Amazon EC2 实例。此实践还允许应用程序获得临时安全凭据,以便将计划的调用用于进行计划调用 AWS. TheThethe AWS SDK和 AWS CLI 可以自动从角色获取临时凭据。

  • 您需要授予跨账户访问权限。 使用 IAM 角色建立账户之间的信任,然后向用户授予有限的账户权限来访问可信账户。有关详细信息,请参阅 教程: 授权访问权限 AWS 账户使用 IAM 角色IAM 用户指南.

  • 您拥有一个移动应用程序。 不要使用应用程序嵌入访问密钥,即使在加密的存储中。相反,使用 Amazon Cognito 要管理应用程序中的用户身份。通过此服务,您可以使用与Amazon、Facebook、Google或任何OpenIDConnect(OIDC)的登录来验证用户–兼容身份提供商。然后您可以使用 Amazon Cognito 凭证提供程序以管理应用程序使用的凭据,以便对请求进行请求 AWS. 有关详细信息,请参阅 使用 Amazon Cognito 凭据提供商 在 AWS 移动博客。

  • 您希望向 AWS 进行联合身份验证且贵组织支持 SAML 2.0。 如果您所在的组织具有支持 SAML 2.0 的身份提供程序,请将提供程序配置为使用 SAML。您可以使用 SAML 与 AWS 交换身份验证信息,并获得一组临时安全证书。有关详细信息,请参阅 关于基于SAML2.0的联合IAM 用户指南.

  • 您希望向 AWS 进行联合身份验证且贵组织拥有本地身份存储。 如果用户可以在组织内部进行身份验证,您可以编写一个可向他们颁发用于访问 AWS 资源的临时安全凭证的应用程序。有关详细信息,请参阅 创建允许联合用户访问AWS管理控制台的URL(定制联合经纪人)IAM 用户指南.

正确管理 IAM 用户访问密钥

如果您必须创建访问密钥,才能访问 AWS,创建他们 IAM 用户,仅授予用户所需的权限。有关详细信息,请参阅 管理访问密钥 IAM 用户IAM 用户指南.

注意

您是否使用 Amazon EC2 需要编程访问 AWS 资源? 如果是,请使用 IAM EC2的角色.

使用访问密钥时,请遵守这些预防措施:

  • 请勿直接将访问密钥嵌入到代码。 TheThethe AWS SDKAWS 命令行工具 允许您在已知位置放置访问密钥,以便您不必将其保存在代码中。

    在以下任一位置中放置访问密钥:

    • TheThethe AWS 凭据文件。 TheThethe AWS SDK和 AWS CLI 自动使用您存储在 AWS 凭据文件。

      有关使用 AWS 证书文件的信息,请参阅软件开发工具包文档。示例包括 设置 AWS 发展的凭证和地区AWS SDK for Java Developer Guide配置和凭据文件AWS Command Line Interface 用户指南.

      要存储凭证 AWS.NET和 适用于 Windows PowerShell 的 AWS 工具,建议您使用SDKStore。有关详细信息,请参阅 使用SDK存储适用于 .NET 的 AWS 开发工具包 开发人员指南.

    • 环境变量. 在多租户系统上,选择用户环境变量,而不是系统环境变量。

      有关使用环境变量存储凭据的详细信息,请参阅 环境变量AWS Command Line Interface 用户指南.

  • 对不同应用程序使用不同的访问密钥。 这样做可以隔离权限,并且如果接触到各个应用程序,则可以撤销访问密钥。不同应用程序的独立访问密钥也会生成不同的条目 AWS CloudTrail 日志文件。通过此配置,您可以更轻松地确定哪个应用程序执行了特定的操作。

  • 定期轮换访问密钥。 定期更改访问密钥。有关详细信息,请参阅 旋转访问密钥(AWS CLI, Windows PowerShell 工具,和 AWS API)IAM 用户指南如何旋转访问密钥 IAM 用户 在 AWS 安全博客。

  • 删除未使用的访问密钥。 如果用户离开您的组织,请删除相应的 IAM 用户可以使用户不再访问您的资源。要了解何时使用访问密钥,请使用 GetAccessKeyLastUsed API(AWS CLI 命令: aws iam get-access-key-last-used)。

  • 为最敏感的操作配置多重验证。 有关详细信息,请参阅 使用多因素验证(MFA) AWSIAM 用户指南.

使用 AWS 访问密钥访问移动应用程序

您可以访问 AWS 使用 AWS 移动应用。该移动应用程序可帮助您在外出时支持事件响应。如需了解更多信息并下载应用程序,请参阅 AWS 控制台移动应用程序.

您可以使用控制台密码或访问密钥登录移动应用程序。但不建议使用 根用户 访问密钥,相反,我们强烈建议,除了使用您的移动设备上的密码或生物特征锁定之外,您还需要使用 创建 IAM 用户 管理 AWS 资源。如果您的移动设备丢失了,您可以删除 IAM 用户的访问权限。有关生成访问密钥的详细信息,请参阅 IAM 用户,请参阅 管理访问密钥 IAM 用户IAM 用户指南.

使用访问密钥登录(移动应用程序)

  1. 在移动设备上打开该应用程序。

  2. 如果这是您在设备上添加身份的第一次,请选择 添加身份 然后选择 访问密钥.

    如果您已使用其他身份登录,请选择菜单图标并选择 交换机身份. 然后选择 以不同身份登录 然后 访问密钥.

  3. 访问密钥 页面,输入您的信息:

    • 访问密钥ID – 输入您的访问密钥ID。

    • 秘密访问密钥 – 输入您的SecretAccessKey。

    • 身份名称 – 输入将在移动应用程序中显示的身份名称。此名称不需要与您的 IAM 用户名一致。

    • 标识引脚 – 创建您将来登录的个人识别号(PIN)。

      注意

      如果您为 AWS 移动应用程序启用了生物识别技术,系统将提示您使用指纹或面部识别(而非 PIN)进行验证。如果生物识别失败,系统可能会提示您输入 PIN。

  4. 选择 验证并添加密钥.

    现在,您就可以使用移动应用程序访问一组选定的资源。

了解更多信息。

有关确保 AWS 账户安全的最佳实践的更多信息,请参阅以下资源: