在承担IAM角色的情况下,清除在AWS中执行的操作的主体/谁是谁的混淆。
IAM角色具有信任关系选项卡,用于定义谁可以担任该角色。
它在JSON中描述。
statement {
sid = "1"
effect = "Allow"
principals {
identifiers = ["elastictranscoder.amazonaws.com"]
type = "Service"
}
actions = ["sts:AssumeRole"]
}
根据Roles Terms and Concepts的说法,那些担任该角色的人必须是用户或角色。
主要 AWS中可以执行操作和访问资源的实体。委托人可以是AWS账户root用户,IAM用户或角色。您可以通过以下两种方式之一授予访问资源的权限:
信托政策 JSON格式的文档,您可以在其中定义允许该角色的人员。此可信实体作为文档中的主要元素包含在策略中。
如果我使用我的AWS账户发出assume-role命令来获取临时凭证,然后运行一个操作,例如谁/什么是委托人?转码视频文件?根据AWS文档,它必须是用户或角色。
如果是elastictranscoder.amazonaws.com,那么:
AWS IAM可以被认为是对三件事的抽象:
json由元素组成,'Principal'是'Policy'json文档中的json元素之一。主要元素仅存在于基于资源的策略jsons中。
主要抽象与身份抽象处于相同的抽象级别。它扩展了身份抽象,并通过粒度身份(即Amazon资源名称(ARN))进行标识。它仅用于基于资源的策略。
主要元素用于指定AWS账户,AWS服务,IAM角色,IAM用户,联合用户等实体,以及操作元素指定操作主体可以执行的操作。
AFAIK,在您的上下文中,当您使用我的AWS账户发出assume-role命令以获取临时凭证时,没有Prinicipal涉及正弦,没有涉及资源策略它只是基于身份的策略,它使您的IAM角色承担角色。
通过CLI或其他方式发出AssumeRole API时,主体是正在使用其凭据的标识。例如,如果您使用IAM用户的凭据承担角色,则主体是IAM用户。
由于成功的AssumeRole API,您会收到临时凭证,当您使用这些临时凭证执行任何操作时,主体将是IAM角色。
在您的示例中,您信任“elastictranscoder.amazonaws.com”,即Elastic Transcoder服务本身。您可以审核服务如何在CloudTrail日志中使用该角色。