AWS IAM-在承担角色的背景下,谁是负责人?

时间:2018-08-19 04:20:14

标签: amazon-web-services access-control amazon-iam

客观

清除在具有IAM角色的情况下在AWS中执行操作的主体是谁的困惑。

背景

IAM角色具有“信任关系”选项卡,该选项卡定义了谁可以担任该角色。

enter image description here

它以JSON描述。

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

  principals {
    identifiers = ["elastictranscoder.amazonaws.com"]
    type        = "Service"
  }
  actions = ["sts:AssumeRole"]
}

根据Roles Terms and Concepts,可以承担该角色的人员必须是用户或角色。

  

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

     

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

问题

如果我使用自己的AWS账户发出assume-role命令以获取临时凭证,然后运行某个操作(例如,转码视频文件?根据AWS文档,它必须是用户或角色。

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

如果是elastictranscoder.amazonaws.com,则:

  1. 这是用户还是角色?
  2. 从审计的角度看,elastictranscoder.amazonaws.com是否记录为执行该操作的主体?我在哪里可以确定谁何时何地成为elastictranscoder.amazonaws.com?

2 个答案:

答案 0 :(得分:0)

通过CLI或其他方式发布AssumeRole API时,主体是正在使用其凭据的身份。例如,如果您使用IAM用户的凭据承担角色,则主体是IAM用户。

成功获得AssumeRole API会收到临时凭证,当您使用这些临时凭证执行任何操作时,委托人将是IAM角色。

在您的示例中,您信任“ elastictranscoder.amazonaws.com”,即Elastic Transcoder服务本身。您可以审核CloudTrail日志中该角色的服务使用情况。

答案 1 :(得分:0)

AWS IAM可以看作是对三件事的抽象:

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

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

主体抽象与身份抽象处于相同的抽象级别。它扩展了身份抽象,并通过粒度身份(即Amazon资源名称(ARN))进行标识。仅与基于资源的策略一起使用。

Principal元素用于指定诸如AWS账户,AWS服务,IAM角色,IAM用户,联合用户之类的实体,而action元素用于指定主体可以执行的操作。

AFAIK, 根据您的情况, 当您使用我的AWS账户发出accept-role命令以获取临时证书时,没有涉及Prinicipal,因为没有涉及资源策略,只是基于身份的策略使您的IAM角色承担角色。