AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

IAM 最佳实践

要帮助保护 AWS 资源,请遵循针对 AWS Identity and Access Management (IAM) 服务的这些建议。

隐藏您的 AWS 账户根用户访问密钥

使用访问密钥 (访问密钥 ID 和秘密访问密钥) 以编程方式向 AWS 提出请求。但是,请勿使用您的 AWS 账户根用户访问密钥。您可使用 AWS 账户的访问密钥针对所有 AWS 服务完全访问您的所有资源,包括您的账单信息。您不能限制与您的 AWS 账户访问密钥关联的权限。

因此,在保护 AWS 账户访问密钥时应像对待您的信用卡号或任何其他敏感机密信息一样。以下是执行该操作的一些方式:

  • 如果您尚未拥有 AWS 账户的访问密钥,请勿创建它,除非绝对需要。应使用您的账户的电子邮件地址和密码登录 AWS 管理控制台,为自己创建具有管理权限的 IAM 用户,正如下一部分所说明的那样。

  • 如果您已经拥有 AWS 账户的访问密钥,请删除它。如果您一定要保留它,请定期轮换 (更改) 访问密钥。若要删除或轮换 AWS 账户访问密钥,请转至 AWS 管理控制台中的安全凭证页并使用您账户的电子邮件地址和密码登录。您可以在 Access keys 部分中管理您的访问密钥。

  • 切勿与任何人分享您的 AWS 账户密码或访问密钥。本文档的其余部分讨论了避免与其他用户分享您的 AWS 账户根用户凭证,以及避免将凭证嵌入应用程序中的几种方法。

  • 使用强密码有助于保护对 AWS 管理控制台 进行账户级别的访问。有关管理 AWS 账户根用户密码的信息,请参阅更改 AWS 账户根用户密码

  • 对您的 AWS 账户启用 AWS Multi-Factor Authentication (MFA)。有关更多信息,请参阅 在 AWS 中使用多重验证 (MFA)

创建单独的 IAM 用户

切勿使用 AWS 账户根用户凭证访问 AWS,也不要将凭证授予任何其他人。您应为需要访问您 AWS 账户的任何人创建单独的用户。同时,您也要为自己创建一个 IAM 用户,并授予该用户管理权限,以使用该 IAM 用户执行您的所有工作。有关如何执行此操作的信息,请参阅 创建您的第一个 IAM 管理员用户和组

在为访问您的账户的人员创建单独的 IAM 用户时,您可授予每个 IAM 用户一组独特的安全凭证。您还可向每个 IAM 用户授予不同的权限。如有必要,您可随时更改或撤销 IAM 用户的权限。(如果您公布了根用户凭证,则很难将其撤消,且不可能限制它们的权限。)

注意

在针对单独的 IAM 用户设置权限之前,请参阅下一个关于组的要点。

使用组向 IAM 用户分配权限

而不是为各个 IAM 用户定义权限,这样做通常可以更方便地创建与工作职能 (管理员、开发人员、会计人员等) 相关的组。接下来,定义与每个组相关的权限。最后,将 IAM 用户分配到这些组。一个 IAM 组中的所有用户将继承分配到该组的权限。这样,您在一个位置即可更改群组内的所有人。公司人员发生调动时,您只需更改 IAM 用户所属的 IAM 组。

有关更多信息,请参阅下列内容:

尽量使用由 AWS 定义的策略分配权限

我们建议您尽可能使用由 AWS 创建并维护的托管策略来授予权限。使用这些策略的一个重要优势是,在推出新的服务或新的 API 操作时,AWS 对这些策略进行维护和更新。

AWS 托管策略旨在为常见任务提供支持。它们通常提供对单个服务或一组有限的操作的访问权限。有关 AWS 托管策略的更多信息,请参阅AWS 托管策略

AWS 工作职能托管策略可以跨越多项服务,并与 IT 行业的常见工作职能紧密贴合。有关工作职能策略的列表和说明,请参阅工作职能的 AWS 托管策略

授予最低权限

在您创建 IAM 策略时,请遵循授予最小权限这一标准的安全建议,即仅授予执行任务所需的权限。首先,确定用户需要执行的任务,然后,拟定仅限用户执行这些任务的策略。

最开始只授予最低权限,然后根据需要授予其他权限。这样做比起一开始就授予过于宽松的权限而后再尝试收紧权限来说更为安全。

您可以使用访问级别分组来了解策略授予的访问级别。策略操作被归类为 ListReadWritePermissions managementTagging。例如,您可以从 ListRead 访问级别中选择操作,以向您的用户授予只读访问权限。要了解如何使用策略摘要来了解访问级别权限,请参阅 使用访问权限级别查看 IAM 权限

可帮助您进行设置的一个功能是 Access Advisor 选项卡。当您检查用户、组、角色或策略时,在 IAM 控制台详细信息页面中就会提供此选项卡。此选项卡包含有关用户、组、角色或使用策略的任何人实际使用的服务的信息。您可以使用此信息确定不必要的权限,从而优化 IAM 策略以更好地遵循最小特权原则。有关更多信息,请参阅 查看用户活动以缩小策略范围

有关更多信息,请参阅下列内容:

使用访问权限级别查看 IAM 权限

为了完善您的 AWS 账户的安全性,您应该定期查看和监控每个 IAM 策略。请确保您的策略仅授予执行必需的操作所需要的最低特权

当您查看一个策略时,您可以查看策略摘要,其中包括该策略中每个服务的访问权限级别的摘要。AWS 基于每个服务操作的用途将其分类为四个访问权限级别 之一:ListReadWritePermissions management。您可以使用这些访问权限级别确定将哪些操作包含在您的策略中。

例如,在 Amazon S3 服务中,您可能想允许一大组用户访问 ListRead 操作。此类操作允许这些用户列出存储桶和获取存储在 Amazon S3 中的对象。但是,您应当只允许一小组用户访问 Amazon S3 Write 操作以删除存储桶或将对象放入 S3 存储桶。此外,您应限制权限,仅允许管理员访问 Amazon S3 Permissions management 操作。这可确保只有有限数量的人员可以在 Amazon S3 中管理存储桶策略。这对于 IAM 和 AWS Organizations 服务中的 Permissions management 操作特别重要。

要查看分配给服务中的每个操作的访问级别分类,请参阅

要查看一个策略的访问权限级别,必须先找到该策略的摘要。在托管策略的 Policies 页面中以及附加到用户的策略的 Users 页面中,都包含此策略摘要。有关更多信息,请参阅 策略摘要 (服务列表)

在策略摘要中,Access level 列显示出策略提供对服务的四个 AWS 访问权限级别中的一个或多个级别的 FullLimited 访问权限。此外,它还可能显示该策略提供对服务中的所有操作的 Full access 访问权限。您可以使用此 Access level 列中的信息来了解策略提供的访问权限级别。然后可以采取措施加强您的 AWS 账户安全。有关访问权限级别摘要的详细信息和示例,请参阅了解策略摘要内的访问级别摘要

为您的用户配置强密码策略

如果允许用户更改其密码,则需要他们创建强密码并且定期轮换其密码。在 IAM 控制台的 Account Settings (账户设置) 页面中,可以为账户创建密码策略。您可以使用策略密码定义密码要求,如最短长度、是否需要非字母字符、必须进行轮换的频率等。

有关更多信息,请参阅 为 IAM 用户设置账户密码策略

为特权用户启用 MFA

为增强安全性,应为持有特权的 IAM 用户 (获准访问敏感资源或 API 操作的用户) 启用多重验证 (MFA)。通过使用 MFA,用户便拥有了一部可生成唯一身份验证码 (一种一次性密码,或称 OTP) 的设备。用户必须同时提供他们的常规凭证 (如他们的用户名和密码) 和 OTP。MFA 设备可以是一个特殊的硬件,也可以是一个虚拟设备 (例如,可在智能手机上的应用程序中运行)。

有关更多信息,请参阅 在 AWS 中使用多重验证 (MFA)

针对在 Amazon EC2 实例上运行的应用程序使用角色

在 Amazon EC2 实例上运行的应用程序需要证书才能访问其他 AWS 服务。若要以安全的方式提供应用程序所需的证书,可使用 IAM 角色。角色是指自身拥有一组许可的实体,但不是指用户或群组。角色没有自己的一组永久证书,这也与 IAM 用户不一样。对于 Amazon EC2,IAM 将向 EC2 实例动态提供临时凭证,这些证书将为您自动轮换。

当您启动 EC2 实例时,您可指定实例的角色,以作为启动参数。在 EC2 实例上运行的应用程序在访问 AWS 资源时可使用角色的证书。角色的许可将确定允许访问资源的应用程序。

有关更多信息,请参阅 使用 IAM角色向在 Amazon EC2 实例上运行的应用程序授予权限

使用角色委托权限

请勿在不同账户之间共享安全凭证,防止另一个 AWS 账户的用户访问您 AWS 账户中的资源。而应使用 IAM 角色。您可以定义角色来指定允许其他账户中的 IAM 用户拥有哪些权限。您还可以指定哪些 AWS 账户拥有允许担任该角色的 IAM 用户。

有关更多信息,请参阅 角色术语和概念

定期轮换凭证

定期更改您自己的密码和访问密钥,并确保账户中的所有 IAM 用户也这么做。这样,若在您不知情的情况下密码或访问密钥外泄,则您可限制证书在多长时间之内可用于访问资源。您的账户可以使用密码策略,以要求您的所有 IAM 用户轮换他们的密码,并且您可以选择他们必须多久执行一次该操作。

有关在您的账户中设置密码策略的更多信息,请参阅为 IAM 用户设置账户密码策略

有关轮换 IAM 用户的访问密钥的更多信息,请参阅 轮换访问密钥

删除不需要的凭证

删除不需要的 IAM 用户凭证 (即,密码和访问密钥)。例如,用于应用程序的 IAM 用户无需密码 (只有登录 AWS 网站才需要密码)。同样,如果用户不使用并且永远不需要使用访问密钥,则不必拥有访问密钥。最近未使用的密码和访问密钥可能适合做删除处理。您可以使用控制台、使用 API 或通过下载凭证报告来查找未使用的密码或访问密钥。

有关查找最近未用过的 IAM 用户凭证的更多信息,请参阅查找未使用的凭证

有关删除 IAM 用户密码的更多信息,请参阅管理 IAM 用户的密码

有关停用或删除 IAM 用户访问密钥的更多信息,请参阅管理 IAM 用户的访问密钥

有关 IAM 证书报告的更多信息,请参阅获取您 AWS 账户的证书报告

使用策略条件来增强安全性

在切实可行的范围内,定义在哪些情况下您的 IAM 策略将允许访问资源。例如,您可编写条件来指定请求必须来自允许的 IP 地址范围。您还可以指定只允许在指定日期或时间范围内的请求。您还可设置一些条件,如要求使用 SSL 或 MFA (Multi-Factor Authentication)。例如,您可要求用户使用 MFA 设备进行身份验证,这样才允许其终止某一 Amazon EC2 实例。

有关更多信息,请参阅 IAM 策略元素参考中的 IAM JSON 策略元素: Condition

监控 AWS 账户中的活动

您可以使用 AWS 中的日志记录功能来确定用户在您的账户中进行了哪些操作,以及使用了哪些资源。日志文件会显示操作的时间和日期、操作的源 IP、哪些操作因权限不足而失败等。

日志记录功能在以下 AWS 服务中可用:

关于 IAM 最佳实践的视频演示

下列视频中包含一份会议报告,其中涵盖了这些最佳实践,并介绍了如何使用上述功能的更多详细信息。