角色术语和概念 - AWS Identity and Access Management

角色术语和概念

以下是可帮助您开始使用角色的一些基本术语。

角色

可在账户中创建的具有特定权限的 IAM 身份。IAM 角色与 IAM 用户有一些相似之处。角色和用户都是具有权限策略的 AWS 身份,该策略可确定身份在 AWS 中可执行和不可执行的操作。但是,角色旨在让需要它的任何人代入,而不是唯一地与某个人员关联。此外,角色没有关联的标准长期凭证(如密码或访问密钥)。相反,当您代入角色时,它会为您提供角色会话的临时安全凭证。

角色可由以下用户使用:

  • 与该角色在相同 AWS 账户中的 IAM 用户

  • 位于与该角色不同的 AWS 账户中的 IAM 用户

  • 由 AWS 提供的 Web 服务,例如 Amazon Elastic Compute Cloud (Amazon EC2)

  • 由与 SAML 2.0 或 OpenID Connect 兼容的外部身份提供商 (IdP) 服务或定制的身份代理进行身份验证的外部用户。

AWS 服务角色

服务代表您在您的账户中执行操作而担任的角色。在设置一些 AWS 服务环境时,您必须为服务定义要代入的角色。这个服务角色必须包含该服务访问所需的 AWS 资源会用到的所有必要权限。服务角色因服务而异,但只要您满足服务记录在案的要求,许多服务都允许您选择权限。您可以从 IAM 中创建、修改和删除服务角色。

EC2 实例的 AWS 服务角色

在 Amazon EC2 实例上运行的应用程序可以代入以在您的账户中执行操作的特殊类型的服务角色。角色会在启动时分配给 EC2 实例。在该实例上运行的应用程序可以检索临时安全凭证并执行角色允许的操作。有关使用 EC2 实例的服务角色的详细信息,请参阅使用 IAM 角色向在 Amazon EC2 实例上运行的应用程序授予权限

AWS 服务相关角色

与 AWS 服务直接关联的一种独特类型的服务角色。服务相关角色由服务预定义,具有服务代表您调用其他 AWS 服务所需的所有权限。相关的服务还定义了创建、修改和删除服务相关角色的方式。服务可以自动创建或删除角色。它可能允许您在服务的向导或流程中创建、修改或删除角色。或者,它可能需要您使用 IAM 创建或删除角色。无论使用哪种方法,服务相关角色都可让您更轻松地设置服务,因为您不必手动添加必要的权限。

注意

如果在某项服务开始支持服务相关角色时您已使用该服务,您可能会收到一封电子邮件,告知您账户中的新角色。在这种情况下,该服务已自动在您的账户中创建服务相关角色。您无需执行任何操作来支持该角色,并且您不应手动删除它。有关更多信息,请参阅 我的 AWS 账户中出现新角色

有关哪些服务支持使用服务相关角色的信息,请参阅使用 IAM 的 AWS 服务并查找其在服务相关角色列中为的服务。选择和链接,查看该服务的服务相关角色文档。如果该服务不包括有关创建、修改或删除服务相关角色的文档,则可以使用 IAM 控制台、AWS CLI 或 API。有关更多信息,请参阅 使用服务相关角色

角色链

在通过 AWS CLI 或 API 使用一个角色担任另一个角色时,将建立角色链。例如,假定用户 User1 有权担任角色 RoleA 和角色 RoleB。此外,RoleA 有权担任 RoleB。您可以在 AssumeRole API 操作中使用 User1 的长期用户凭证以担任 RoleA。该操作返回角色 RoleA 的短期凭证。要参与角色链,您可以使用 RoleA 的短期凭证担任角色 RoleB

当您在代入某个角色的同时,您可以传递会话标签并将键设置为可传递。可传递会话标签将传递给角色链中的所有后续会话。要了解会话标签的更多信息,请参阅 在 AWS STS 中传递会话标签

角色链将您的 AWS CLI 或 AWS API 角色会话限制为最长 1 小时。在使用 AssumeRole API 操作代入角色时,您可以使用 DurationSeconds 参数指定角色会话的持续时间。您可以指定最多为 43200 秒 (12 小时) 的参数值,具体取决于您的角色的最大会话持续时间设置。不过,如果您使用角色链代入角色并提供大于 1 小时的 DurationSeconds 参数值,则操作将失败。

AWS 不会将使用角色向 EC2 实例上运行的应用程序授予权限视作角色链。

委托

为某人授予权限以允许访问您控制的资源。委派涉及在两个账户之间建立信任。第一个是拥有资源的账户(信任账户)。第二个是包含需要访问资源的用户的账户(可信账户)。可信账户和信托账户可为以下任一账户:

  • 同一账户。

  • 受您的组织控制的两个单独账户。

  • 由不同组织拥有的两个账户。

要委派权限以访问资源,请在附加两个策略的信任账户中创建 IAM 角色权限策略授予角色的用户所需权限对资源执行预期任务。信任策略指定允许哪些受信任账户成员担任角色。

当您创建信任策略时,您不能将通配符 (*) 指定为委托人。信任策略附加到信任账户中的角色,并且是权限的一半。另一半是附加到允许用户切换到或担任角色.的受信任账户中的用户的权限策略。临时担任一个角色的用户将放弃自己的权限而接过该角色的权限。用户退出或停止使用角色时,恢复原始用户权限。另一个名为外部 ID 的参数有助于确保在不受同一企业控制的账户之间安全使用角色。

联合身份验证

创建外部身份提供商与 AWS 之间的信任关系。用户可以登录 Web 身份提供商,例如 Login with AmazonFacebookGoogle,或任何与 OpenID Connect (OIDC) 兼容的 IdP。用户还可登录与安全断言标记语言 (SAML) 2.0 兼容的企业身份系统,如 Microsoft Active Directory 联合身份验证服务。当您使用 OIDC 和 SAML 2.0 在这些外部身份提供程序与 AWS 之间配置信任关系时,会将用户分配到 IAM 角色。用户还会获得允许该用户访问您的 AWS 资源的临时凭证。

联合身份用户

您也可以不创建 IAM 用户,而是使用来自 AWS Directory Service、您的企业用户目录或 Web 身份提供商的现有身份。这些用户被称为联合用户。在通过身份提供商请求访问权限时,AWS将为联合身份用户分配角色。有关联合身份用户的更多信息,请参阅IAM 用户指南 中的联合身份用户和角色

信任策略

JSON 策略文档中,您可以定义您信任代入该角色的委托人。角色信任策略是必需的基于资源的策略(将附加到 IAM 中的角色)。您可以在信任策略中指定的委托人包括用户、角色、账户和服务。

权限策略

一个 JSON 格式的权限文档,您可在其中定义角色可以访问的操作和资源。该文档是根据 IAM 策略语言的规则编写的。

权限边界

一项高级功能,借助该功能,使用基于身份的策略来限制可以授予角色的最大权限。无法将权限边界应用于服务相关角色。有关更多信息,请参阅 IAM 实体的权限边界

委托人

AWS 中可执行操作并访问资源的实体。委托人可以是 AWS 账户 根用户、IAM 用户或角色。您可以通过以下两种方式之一授予访问资源的权限:

  • 您可以将权限策略附加到用户(直接附加或通过组间接附加)或角色。

  • 对于那些支持基于资源的策略的服务,您可以在附加到资源的策略的 Principal 元素中识别委托人。

如果您将一个 AWS 账户称为委托人,则它通常表示该账户中定义的任何委托人。

注意

您不能在用户信任策略的 Principal 元素中使用通配符 (*)。

用于跨账户访问的角色

将一个账户中的资源的访问权限授予另一个账户中的受信任委托人的账户。角色是授予跨账户访问权限的主要方式。但是,某些 AWS 服务允许您将策略直接附加到资源(而不是使用角色作为代理)。这些策略称为基于资源的策略,您可以使用它们向其他 AWS 账户中的委托人授予对资源的访问权限。其中一些资源包括 Amazon Simple Storage Service (S3) 存储桶、S3 Glacier 文件库、Amazon Simple Notification Service (SNS) 主题和 Amazon Simple Queue Service (SQS) 队列。要了解哪些服务支持基于资源的策略,请参阅 使用 IAM 的 AWS 服务。有关基于资源的策略的更多信息,请参阅 IAM 角色与基于资源的策略有何不同