本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
管理 Amazon 访问密钥的最佳实践
当您以编程方式使用 Amazon 时,您需要提供您的 Amazon访问密钥,以便 Amazon 可以在编程调用中验证您的身份。您的访问密钥包含访问密钥 ID(例如 AKIAIOSFODNN7EXAMPLE
)和秘密访问密钥(例如 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
)。
拥有您的访问密钥的任何人将与您拥有相同的 Amazon 资源访问权限级别。因此,Amazon 全力保护您的访问密钥并确保符合我们的分担责任模型
下述步骤可以帮助您保护您的访问密钥。有关背景信息,请参阅创建和删除Amazon Web Services 账户根用户的访问密钥。
贵组织的安全要求和策略可能与本主题中介绍的有所不同。此处提供的建议旨在用作一般准则。
删除(或不生成)账户访问密钥
您必须使用访问密钥签署使用Amazon命令行工具、Amazon软件开发工具
保护账户的最佳方法之一是不为您的Amazon Web Services 账户根用户提供访问密钥。 除非你必须有 root 用户访问密钥(这种情况很少见),否则最好不要生成它们。相反,在中创建一个管理用户Amazon IAM Identity Center (successor to Amazon Single Sign-On)来执行日常管理任务。
如果您已经拥有账户的访问密钥,我们建议您采取以下措施:在应用程序中查找您当前正在使用访问密钥(如果有)的位置,并将根用户访问密钥替换为 IAM 用户访问密钥。然后禁用并删除根用户访问密钥。有关如何使用一个访问密钥替代另一个访问密钥的更多信息,请参阅 Amazon安全博客中的如何轮换 IAM 用户的访问密钥
默认情况下,Amazon 不会为新账户生成访问密钥。
有关如何在Amazon IAM Identity Center (successor to Amazon Single Sign-On)(IAM Identity Center)中创建管理员用户的信息,请参阅Amazon IAM Identity Center (successor to Amazon Single Sign-On)用户指南中的入门。
使用临时安全凭证(IAM 角色)而不是长期访问密钥
在许多情况下,您并不需要永不过期的长期访问密钥(如 IAM 用户访问密钥)。相反,您可以创建 IAM 角色并生成临时安全凭证。临时安全证书包括访问密钥 ID 和秘密访问密钥,以及一个指示证书何时到期的安全令牌。
在手动撤消之前,长期访问密钥将保持有效,例如与 IAM 用户和 Amazon Web Services 账户 根用户相关联的访问密钥。但是,通过 IAM 角色获取的临时安全凭证和 Amazon Security Token Service 的其他功能将在短时间内过期。凭证意外泄漏时,使用临时安全凭证可帮助降低您的风险。
在以下这些情况下使用 IAM 角色和临时安全凭证:
-
您在 Amazon EC2 实例上运行一个应用程序或 Amazon CLI 脚本。请勿直接在应用程序中使用访问密钥。请勿采取以下做法:将访问密钥传递给应用程序、将访问密钥嵌入到应用程序中、让应用程序从任何源读取密钥。相反,请定义一个对您的应用程序具有适当权限的 IAM 角色,并使用 EC2 角色启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。执行此操作会将 IAM 角色与 Amazon EC2 实例相关联。这种做法还会允许应用程序获取临时安全凭证,然后再使用这些凭证对进行编程调用Amazon。Amazon 软件开发工具包和 Amazon Command Line Interface (Amazon CLI) 可以自动获得角色的临时证书。
-
您需要授予跨账户访问权限。使用 IAM 角色建立账户之间的信任,然后向用户授予有限的账户权限来访问可信账户。有关更多信息,请参阅 IAM 用户指南中的教程:使用 IAM 角色委派跨 Amazon Web Services 账户 的访问权限。
-
您拥有一个移动应用程序。请勿将访问密钥嵌入应用程序,即使是嵌入加密存储也不允许。而应使用 Amazon Cognito
管理应用程序中的用户身份。此服务让您可以使用 Login with Amazon、Facebook、Google 或任何与 OpenID Connect(OIDC)兼容的身份提供商进行用户身份验证。然后,您可以使用 Amazon Cognito 凭证提供程序来管理应用程序用于向 Amazon 发出请求的凭证。有关更多信息,请参阅 Amazon 移动博客上的 Using the Amazon Cognito Credentials Provider 。 -
您希望向 Amazon 进行联合身份验证且贵组织支持 SAML 2.0。如果您所在的组织具有支持 SAML 2.0 的身份提供程序,请将提供程序配置为使用 SAML。您可以使用 SAML 与 Amazon 交换身份验证信息,并获得一组临时安全证书。有关更多信息,请参阅《IAM 用户指南》中的关于基于 SAML 2.0 的联合身份验证.
-
您希望向 Amazon 进行联合身份验证且贵组织拥有本地身份存储。如果用户可以在组织内部进行身份验证,您可以编写一个可向他们颁发用于访问 Amazon 资源的临时安全凭证的应用程序。有关更多信息,请参阅 IAM 用户指南中的使自定义身份凭证代理程序能够访问 Amazon Web Services Management Console。
正确管理 IAM 用户访问密钥
如果您必须创建访问密钥才能以编程方式访问Amazon,则为 IAM 用户创建它们,仅向用户授予他们所需的权限。有关更多信息,请参阅 IAM 用户指南中的管理 IAM 用户的访问密钥。
您是否将 Amazon EC2 实例与需要编程访问Amazon资源的应用程序结合使用? 如果是,请使用 EC2 的 IAM 角色。
使用访问密钥时,请遵守这些预防措施:
-
请勿直接将访问密钥嵌入到代码。利用 AmazonSDK
和Amazon命令行工具 ,您可以将访问密钥放在已知位置,这样就不必将其保留在代码中。 在以下任一位置中放置访问密钥:
-
Amazon 凭证文件。Amazon 开发工具包和 Amazon CLI 自动使用您存储在 Amazon 凭证文件中的凭证。
有关使用 Amazon 证书文件的信息,请参阅软件开发工具包文档。示例包括:Amazon SDK for Java 开发人员指南中的设置 Amazon 凭证和区域以及 Amazon Command Line Interface 用户指南中的配置和凭证文件。
要存储适用于 Amazon SDK for .NET 和 Amazon Tools for Windows PowerShell 的凭证,建议您使用 SDK Store。有关更多信息,请参阅《Amazon SDK for .NET 开发人员指南》中的使用 SDK 存储。
-
环境变量. 在多租户系统上,选择用户环境变量,而不是系统环境变量。
有关使用环境变量存储凭证的更多信息,请参阅《Amazon Command Line Interface 用户指南》中的环境变量。
-
-
对不同应用程序使用不同的访问密钥。这样做是为了隔离权限,并在个别应用程序泄露时隔离权限并为个别应用程序撤销访问密钥。为不同的应用程序设置不同的访问密钥也会在 Amazon CloudTrail
日志文件中生成不同的条目。通过此配置,您可以更轻松地确定哪个应用程序执行了特定的操作。 -
定期轮换访问密钥。定期更改访问密钥。有关详细信息,请参阅 IAM 用户指南中的轮换访问密钥(Amazon CLI、Tools for Windows PowerShell for Windows Pools for Windows for Windows Pools for Windows for Windows f or
Windows for Windows for WindowsAmazon for Windows FAmazon -
删除未使用的访问密钥。如果某个用户离开了贵组织,请删除相应的 IAM 用户,以使该用户无法再访问您的资源。要找出上次使用访问密钥的时间,请使用
GetAccessKeyLastUsed
API(Amazon CLI 命令:aws iam get-access-key-last-used
)。 -
为最敏感的操作配置多重验证。有关更多信息,请参阅《IAM 用户指南》中的在 Amazon 中使用多重身份验证(MFA)。
使用 Amazon 访问密钥访问移动应用程序
您可以使用 Amazon 移动应用程序访问一组有限的 Amazon 服务和功能。该移动应用程序可帮助您在外出时支持事件响应。如需了解更多信息和下载应用程序,请参阅 Amazon Console Mobile Application
您可以使用控制台密码或访问密钥登录移动应用程序。作为最佳实践,不建议使用根用户访问密钥。相反,我们强烈建议您在移动设备上除了使用密码或生物识别锁定之外,还应创建一个 IAM 用户来管理 Amazon 资源。如果您的移动设备丢失了,您可以删除 IAM 用户的访问权限。有关为 IAM 用户生成访问密钥的更多信息,请参阅 IAM 用户指南中的管理 IAM 用户的访问密钥。
使用访问密钥登录(移动应用程序)
-
在移动设备上打开该应用程序。
-
如果这是您第一次向设备添加身份,请选择 Add an identity (添加身份),然后选择 Access keys (访问密钥)。
如果您已使用其他身份登录,请选择菜单图标并选择 Switch identity (切换身份)。然后选择 Sign in as a different identity (以其他身份登录),然后选择 Access keys (访问密钥)。
-
在 Access keys (访问密钥) 页面上输入您的信息。
-
Access key ID (访问密钥 ID) – 输入您的访问密钥 ID。
-
Secret access key (秘密访问密钥) – 输入您的秘密访问密钥。
-
Identity name (身份名称) – 输入将在移动应用程序中显示的身份名称。此名称不需要与您的 IAM 用户名一致。
-
Identity PIN (身份 PIN) – 创建将来在登录时使用的个人身份识别码(PIN)。
注意 如果您为 Amazon 移动应用程序启用了生物识别技术,系统将提示您使用指纹或面部识别(而非 PIN)进行验证。如果生物识别失败,系统可能会提示您输入 PIN。
-
-
选择 Verify and add keys (验证并添加密钥)。
现在,您就可以使用移动应用程序访问一组选定的资源。
了解更多信息
有关确Amazon Web Services 账户保安全的最佳实践的更多信息,请参阅以下资源:
-
IAM 最佳实践 包含有关使用Amazon Identity and Access Management (IAM) 服务来帮助保护您的Amazon资源的建议
-
以下主题为设置Amazon SDK 和Amazon CLI以使用访问密钥提供了相关指导。
-
Amazon SDK for Java 开发人员指南中的设置 Amazon 凭证和区域
-
Amazon SDK for .NET 开发人员指南中的使用 SDK Store
-
Amazon SDK for PHP 开发人员指南中的为 SDK 提供凭证
-
Boto 3(Amazon SDK for Python)文档中的配置
-
Amazon Tools for Windows PowerShell 用户指南中的使用 Amazon 凭证
-
Amazon Command Line Interface 用户指南中的配置和凭证文件
-
使用《Amazon SDK for .NET开发者指南》中的 IAM 角色授予访问权限。讨论使用编写的程序在 Amazon EC2 实例上运行时Amazon SDK for .NET如何自动获取临时安全凭证。类似信息也可用于 Amazon SDK for Java。
-