跳至内容

AWS 身份与访问管理(IAM)完整指南

了解如何使用 AWS 身份与访问管理(IAM)保护您的 AWS 环境,通过用户、用户组与角色管理访问,并落实稳健的安全最佳实践。
已更新 2026年10月6日  · 14分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

身份与访问管理(IAM)服务是您在 AWS 中开展一切工作的基础。它能保护您的数据安全,并让您控制谁可以访问您的 AWS 资源,以及他们可以对这些资源执行哪些操作。 

没有 IAM,任何能够访问您 AWS 账户的人都可能通过更改配置、删除资源或访问敏感数据而造成破坏。

本指南包含设置和使用 IAM 来保护您的 AWS 环境所需了解的一切。

如果您是 AWS 新手,建议先学习我们的AWS 入门课程,熟悉基础知识。

什么是 AWS IAM?

IAM 是 Identity and Access Management(身份与访问管理)的缩写。它于2011 年发布,用于管理谁可以访问您的 AWS 资源以及他们可以对这些资源执行哪些操作。

以下是 IAM 的四个基本组件:

  • 用户(Users)是需要访问您 AWS 资源的个人或应用程序。每位用户会获得唯一的凭证,例如密码和访问密钥。
  • 用户组(Groups)是用户的集合。与其为每个用户单独分配权限,您可以将用户放入用户组并为该组分配权限。这使得一次性管理多个用户的权限更为容易。
  • 角色(Roles)不是与某个人绑定,而是供需要的人来“扮演”。例如,EC2 实例可以“假设角色”以在无需永久凭证的情况下访问 S3 存储桶。角色使用会自动过期的临时安全凭证,这对安全性非常有利。
  • 策略(Policies)是定义权限的 JSON 文档。它们指定在哪些资源上允许或拒绝哪些操作。策略可以附加到用户、用户组或角色。

如果您是 AWS 新手,建议先学习我们的AWS 入门课程,先熟悉这个庞大平台的基础知识。

开始使用 IAM

如果您还没有,请先创建一个 AWS 账户并登录。

要找到 IAM 服务,请在 AWS 控制台顶部的搜索栏输入关键词“iam”,然后选择 IAM 的第一个结果。

AWS - Searching for the IAM service

在 AWS 控制台中搜索 IAM 服务

这会将您带到 IAM 仪表板,您可以在此创建和管理所有 IAM 组件。

IAM Dashboard

IAM 仪表板

仪表板左侧面板可用于创建用户、角色和策略,并提供用于管理和监控的报表与工具。

安全建议通常显示在 IAM 仪表板的中央。AWS 提供了大量安全最佳实践指导,并便于在必要时采取纠正措施。

AWS IAM 策略

现在,我们来回顾一下 IAM 中最重要的概念之一:策略。

什么是 IAM 策略?

策略定义了谁可以拥有哪些权限来访问您的 AWS 资源。

IAM policies overview

IAM 策略概览

策略以 JSON 格式编写,并由若干关键元素组成。

例如,以下是名为 “AmazonS3FullAccess” 的 AWS 托管策略的 JSON 文档:

​​{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}
  • 元素Version指定策略语言的版本。
  • 元素Statement是策略的“主体”所在。单个策略可以包含多个语句(statement)。每个语句包含几个关键字段:
    • Effect:该字段指定该语句是允许还是拒绝访问。可取值为 "Allow" 或 "Deny"。
    • Action:定义允许或拒绝的操作。操作通常是您可以对某个资源执行的动作。AWS 为每个服务提供特定操作,因此必须正确指定。
    • Resource:指定这些操作适用的 AWS 资源。资源使用Amazon Resource Name(ARN)标识,ARN 能唯一标识某个资源。

策略类型:托管策略与内联策略

接下来讨论策略类型。托管策略可以是 AWS 托管或客户托管两种类型。 

AWS 托管策略由 AWS 创建和维护,是常见权限集的良好起点。客户托管策略由您自行创建和管理,能够灵活编写自定义 JSON 文档。

另一方面,内联策略是直接附加到单个用户、用户组或角色上的策略。对于不应复用的特定、严格受控的权限,它们很有用。但随着数量增多,内联策略的管理会变得棘手,因此通常不如托管策略受青睐。

创建策略并将其附加到用户、用户组和角色

在 AWS 中为用户、用户组和角色创建并附加策略相当直接。以下是分步指南:

要创建策略,在 IAM 控制台左侧菜单中点击“Policies”,然后点击“Create Policy”。

您可以使用可视化编辑器或 JSON 选项卡定义策略。如果不熟悉 JSON,可视化编辑器更容易上手。例如,若要创建允许只读访问 S3 的策略,您可以选择“S3 服务”,然后选择“只读”操作。

如果您想进一步了解 S3,务必查看我们的AWS 存储教程。

IAM: Create a new policy

创建新策略

定义好策略后,点击“Review policy”。然后为策略命名并添加描述,最后点击“Create policy”。此时,自定义策略就已创建。

请注意,AWS 提供了上千个托管策略,基本可以覆盖大多数用例。因此您可能无需创建自定义策略。

IAM: List of AWS-managed policies

AWS 托管策略列表

如果要将策略附加到某个用户,请在 IAM 控制台中进入“Users”,并选择要附加策略的用户。 

点击“Permissions”选项卡,然后点击“Add permissions”。

选择“Attach policies directly”,找到您创建的策略(或任何您想附加的现有策略)并选择它。

IAM: Attach a policy to a user

将策略附加到用户

点击“Next”以审核权限,然后点击“Add permissions”。

如果您想将策略附加到用户组,请在 IAM 控制台中进入“User groups”,选择要附加策略的用户组,或点击“Create new group”创建新用户组。

点击“Permissions”选项卡,然后“Add permissions”。

与为用户附加策略类似,选择“Attach policies directly”,然后找到并选择您创建的策略(或任何现有策略)。

点击“Next”以审核权限,然后点击“Add permissions”。

在 IAM 控制台进入“Roles”,选择您想要附加策略的角色。

点击“Permissions”选项卡,然后点击”Add permissions”。这一步与之前略有不同。您会看到当前的权限策略以及可附加的所有其他策略列表。 

IAM: Attach a policy to a role

将策略附加到角色

选择要附加的策略并点击“Add permissions”。请记住,一个角色最多只能添加 10 个托管策略。

AWS IAM 角色

IAM 角色可帮助您为服务和应用管理权限。 

与关联到特定个人的 IAM 用户不同,角色旨在由任何需要的人来假设,因此非常灵活。

您可以将角色视为一组权限,可临时分配给 AWS 服务(例如 EC2、Lambda)或甚至来自另一个 AWS 账户的用户等实体。由于角色使用会自动过期的临时凭证,这对安全性非常有益。

查看我们的AWS Step Functions 进阶教程,您将在其中看到IAM 角色在编排工作流中是不可或缺的组成部分。

IAM 角色如何工作?

创建角色时,您需要定义两件主要的事情:信任策略(trust policies)和权限策略(permissions policies):

  • 信任策略定义谁可以假设该角色。例如,您可以创建一个信任策略,允许EC2 实例或AWS Lambda 函数来假设该角色。该策略指定可使用该角色的可信实体(如服务或用户)。
  • 权限策略定义当角色被假设时允许或拒绝哪些操作。它们的工作方式与您附加到 IAM 用户的策略相同,指定角色可以访问哪些资源以及可以执行哪些操作。

实体必须先假设角色才能使用它。当 EC2 实例或 Lambda 函数假设角色时,它会获得可用于向 AWS 服务发起请求的临时安全凭证。

举个简单例子:假设您在 EC2 实例上运行一个需要从 S3 存储桶读取数据的应用。与其在实例上存储访问密钥,不如创建一个允许读取 S3 的 IAM 角色,然后将该角色附加到 EC2 实例。当实例运行时,它会假设该角色,并获得访问 S3 存储桶的临时凭证。

临时凭证通过AWS Security Token Service(STS)提供。这些凭证包括访问密钥 ID、秘密访问密钥和会话令牌,通常只在数小时内有效。

使用角色还能简化权限管理,因为您只需在一个地方更新角色的策略,所有假设该角色的实体都会自动生效。

如何创建 IAM 角色

要创建 IAM 角色,在 IAM 控制台左侧菜单点击“Roles”,然后点击“Create Role”。接着按照以下步骤完成角色创建:

您需要选择谁或什么来使用该角色。可以选择:AWS 服务(例如 EC2、Lambda)、另一个 AWS 账户或 Web 身份。现在,假设我们创建一个授予 S3 完全访问权限的角色。

选择“S3”作为服务,并将用例设为“S3”。点击“Next”。

IAM: Create a role - Select trusted entity

选择可信实体

在这里,您将为角色添加权限。您可以从现有策略中选择,或创建一个新策略。

对于本角色,我们找到并选择“AmazonS3FullAccess”策略,然后点击“Next”。

IAM: Create a role - Add permissions

为 IAM 角色添加权限

为您的角色起一个能说明用途的名字,例如“FullS3Access”。

IAM: Create a role - Name, review, and create

命名、审核并创建角色

检查角色的详细信息,确保一切正确。您将看到可信实体、已附加的策略以及添加的任何标签。

标签是可选的,但有助于组织和管理角色。例如,您可以添加键为“Environment”、值为“Production”的标签。

点击“Create role”。

如何管理 IAM 角色

当角色数量众多时,管理可能会变得混乱,但可以通过以下方式保持有序:

  • 为角色使用具有描述性的名称。 这样只看名字就更容易知道每个角色的用途。例如,不要使用像“Role1”这样的通用名称,而使用“EC2_S3_ReadOnly”来表明它用于 EC2 实例访问 S3 的只读权限。
  • 将相似的角色归类在一起。 您可以使用标签按部门、项目或环境来组织角色。例如,添加“Environment: Production”或“Department: Finance”等标签。
  • 定期审查您的角色。 定期检查所有角色是否仍然需要。移除任何不再使用的角色。这能减少杂乱,并通过仅保留必要角色来降低安全风险。
  • 使用 AWS IAM Access Analyzer。 该工具可帮助您识别授予广泛访问权限、可能带来安全风险的角色和策略。它能为您的角色提供洞见,从而更容易优化权限,确保角色尽可能精细。

用例:跨账户访问

通过 IAM 角色进行跨账户访问是一项实用功能,允许您授予一个 AWS 账户中的用户或资源访问另一个账户中资源的权限。

想象您拥有两个 AWS 账户:“账户 A”是生产环境,“账户 B”是开发环境。您可能需要“账户 B”中的用户或应用访问“账户 A”中的资源,但又不想为每个人都在“账户 A”中创建单独的 IAM 用户。

您可以在“账户 A”中创建一个授予必要权限的角色,然后允许“账户 B”中的用户或资源来假设该角色。

处理上述场景时,您需要执行以下步骤:

  • 在“账户 A”中创建角色:进入“账户 A”的 IAM 控制台并点击“Roles”。
  • 点击“Create role”,选择“AWS account”作为可信实体。输入“账户 B”的账户 ID。这样就建立了信任关系,允许来自“账户 B”的用户假设该角色。

IAM: Cross-account access

IAM 跨账户访问

  • 将所需的权限策略附加到该角色。例如,如果您想允许访问 S3 存储桶,可以附加“AmazonS3ReadOnlyAccess”策略。
  • 在“账户 B”中,创建一个允许假设“账户 A”中该角色的 IAM 策略。该策略大致如下:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::AccountA_ID:role/RoleName"
    }
  ]
}
  • 将AccountA_ID替换为“账户 A”的实际 AWS 账户 ID,将RoleName替换为您创建的角色名称。
  • 将该策略附加给“账户 B”中需要访问权限的用户或用户组。

现在,“账户 B”中的用户或应用即可通过假设“账户 A”中的角色来访问资源。这可以通过 AWS CLI、SDK 或控制台完成。

AWS IAM 最佳实践

IAM 最佳实践对于保护您的 AWS 环境至关重要。您应重点关注以下方面:

启用多因素认证(MFA)

MFA 为您的 AWS 账户增加了一层安全防护。即使有人获取了您的密码,他们仍需要第二种验证方式才能登录。请为您的根账户和其他重要用户启用此功能。

尽可能使用 IAM 角色而非 IAM 用户

角色提供会自动轮换的临时凭证,从而降低长期凭证泄露的风险。例如,对于在 EC2 实例上运行的应用程序,请使用角色而不是硬编码访问密钥。

遵循最小权限原则

仅授予用户和角色绝对必要的权限。这能最大限度地降低误操作或恶意行为的风险。请定期审查和更新权限,确保其仍然必要。

定期轮换访问密钥

如果必须使用访问密钥,请定期轮换。AWS 允许每个用户创建两个处于激活状态的访问密钥,因此您可以先创建新密钥、更新应用,然后在不中断的情况下停用旧密钥。

使用 IAM 用户组管理权限

与其为单个用户分配权限,不如创建用户组并将权限分配给这些用户组。随着用户数量增长,这能更轻松地管理权限。

监控并审计 IAM 活动

启用 AWS CloudTrail 来记录所有 API 调用,包括由 IAM 用户发起的调用。定期审查日志,以发现任何异常或未授权活动。这有助于保持安全与合规。

实施强密码策略

强制执行要求强密码的密码策略。包括大小写字母、数字和特殊字符的组合。同时,您应强制定期更改密码并禁止重复使用旧密码。

限制根账户的使用

根账户对您 AWS 账户中的所有资源拥有不受限访问权限。应尽量少用,并为日常任务创建单独的 IAM 用户。务必在根账户上启用 MFA。

高级 AWS IAM 功能

如果您在企业环境中使用 AWS IAM,需要了解以下几项高级功能。

身份联合

身份联合允许您使用其他身份提供商(如公司的目录或社交身份提供商)的现有身份来访问 AWS 资源。与其为每个人创建单独的 IAM 用户,不如让用户使用其现有凭证登录。

要使用身份联合,您必须在 AWS 与身份提供商之间建立信任关系。 

当用户尝试访问 AWS 时,他们会先在身份提供商处进行身份验证。若验证成功,他们会获得用于访问 AWS 资源的临时安全凭证。 

这些凭证由 AWSSecurity Token Service(STS)管理,并在短时间内有效,从而降低长期凭证暴露的风险。

IAM Identity Center

IAM Identity Center(也称为 AWS 单点登录 SSO)是一个集中式枢纽,让您无需管理多个用户名和密码,就能控制谁可以访问 AWS 环境中的哪些内容。

您可以连接到现有的身份源,如 Microsoft Active Directory 或其他支持 SAML 2.0 的身份提供商。用户可以使用企业登录凭证登录 AWS。

完成设置后,用户可以访问个性化门户,查看他们拥有权限的所有 AWS 账户和应用程序。他们只需登录一次,即可在不同的 AWS 账户和应用之间切换,而无需再次登录。 

您可以在 AWS 管理控制台启用并设置 IAM Identity Center,将其连接到您的身份源,并配置用户访问权限。AWS 提供分步教程帮助您完成整个过程,即便您对 IAM 或 SSO 还不熟悉,也能轻松上手。

结论

掌握 IAM 至关重要,因为它为您在 AWS 中进行的一切奠定基础。它帮助您控制用户可访问的资源,保障数据安全,并确保不会为黑客打开大门。

想进一步了解 AWS,请先注册我们的AWS 云技术与服务课程。之后,您还可以通过获取 AWS 认证来推进您的职业发展!

另外,欢迎观看我们的网络研讨会,向您介绍使用 Python、AWS 和 boto3 在云端开展数据科学的入门内容。

FAQs

AWS 中 IAM 角色与 IAM 用户有什么区别?

IAM 用户是拥有永久凭证的特定个人或应用,通常与某一具体人员或服务相关联。另一方面,IAM 角色旨在由任何需要的人来假设,提供会在短时间后过期的临时安全凭证。这使得角色在需要临时访问的任务(如在 EC2 实例上运行的应用)中更灵活且更安全。

如何在 AWS 中创建自定义 IAM 策略?

要创建自定义 IAM 策略,请进入 IAM 控制台,点击左侧菜单中的“Policies”,然后点击“Create Policy”。您可以使用可视化编辑器或 JSON 编辑器定义策略。确定权限后,点击“Review policy”,为策略命名并添加描述,最后点击“Create policy”。随后即可将此自定义策略附加到用户、用户组或角色。

为何在我的 AWS 账户上启用多因素认证(MFA)很重要?

启用 MFA 可为您的 AWS 账户增加一层额外的安全防护。即使有人获取了您的密码,他们仍需要第二种验证方式(例如来自智能手机的验证码)才能登录。这将显著降低未授权访问的风险,帮助保护您的敏感数据与资源。

IAM 用户组如何帮助我在 AWS 中更高效地管理权限?

IAM 用户组允许您同时为多个用户分配权限,从而更轻松地管理和更新权限。与其为单个用户分配策略,您可以根据角色或部门(例如管理员、开发者)创建用户组,并将所需策略附加到这些组。随着用户数量增长,这种方式能简化权限管理。

使用 AWS IAM 角色进行跨账户访问有哪些好处?

使用 AWS IAM 角色进行跨账户访问,可以让一个 AWS 账户中的用户或资源访问另一个账户中的资源,而无需在目标账户中创建单独的 IAM 用户。该方法通过自动过期的临时凭证提升安全性,减少维护多个用户账户的管理开销,并简化跨账户的授权与撤销。


Joleen Bothma's photo
Author
Joleen Bothma
LinkedIn
主题
数据工程
AWS

通过以下课程进一步学习 AWS 与数据工程!

课程

AWS 云技术与服务概念

3 小时
21.8K
掌握 AWS 云技术,结合动手学习与 AWS 生态系统中的实际应用。
查看详情Right Arrow
开始课程
查看更多Right Arrow