AWS IAM - 谁是承担角色上下文中的委托人?

mon*_*mon 2 access-control amazon-web-services amazon-iam

客观的

清除在 AWS 中执行的操作的主体是什么/谁是 IAM 角色的混淆。

背景

IAM 角色具有信任关系选项卡,用于定义可以担任该角色的人员。

在此处输入图片说明

它在 JSON 中被描述。

statement {
  sid    = "1"
  effect = "Allow"

  principals {
    identifiers = ["elastictranscoder.amazonaws.com"]
    type        = "Service"
  }
  actions = ["sts:AssumeRole"]
}
Run Code Online (Sandbox Code Playgroud)

根据角色术语和概念,可以担任角色的人必须是用户或角色。

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

信任策略
JSON 格式的文档,您可以在其中定义允许谁担任该角色。该可信实体作为文档中的主要元素包含在策略中。

如果我使用我的 AWS 账户发出假设角色命令以获取临时凭证,然后运行操作(例如转码视频文件),那么谁/什么是委托人?根据 AWS 文档,它必须是用户或角色。

  1. elastictranscoder.amazonaws.com?
  2. 定义与 elastictranscoder.amazonaws.com 的信任关系的角色?
  3. 我的用户帐户?

如果是 elastictranscoder.amazonaws.com,则:

  1. 这是用户还是角色?
  2. 从审计的角度来看,elastictranscoder.amazonaws.com 是否被记录为执行该操作的委托人?我在哪里可以确定谁成为 elastictranscoder.amazonaws.com 的时间和方式?

小智 5

AWS IAM 可以被认为是对 3 件事的抽象:

  1. 身份(角色、用户、用户组)
  2. 策略(基于身份的策略、基于资源的策略)
  3. 资源(AWS 资源)。

json 由元素组成,“Principal”是“Policy”json 文档中的 json 元素之一。主要元素仅存在于基于资源的策略 json 中。

主体抽象与身份抽象处于同一抽象级别。它扩展了身份抽象,并由细粒度身份标识,即亚马逊资源名称 (ARN)。它仅用于基于资源的策略。

Principal 元素用于指定 AWS 账户、AWS 服务、IAM 角色、IAM 用户、联合用户等实体,而 actions 元素指定委托人可以执行的操作。

AFAIK,在您的上下文中,当您使用我的 AWS 账户发出代入角色命令以获取临时凭证时,不涉及主体,因为不涉及资源策略,它只是基于身份的策略,使您的 IAM 角色可以代入角色.