如果角色没有信任策略,可以假定它吗?如果给定的IAM用户有一个附加的基于身份的策略,说他/她可以为给定的角色调用sts: presumerole(在同一个帐户中),但是用户没有在这个角色的信任策略中被描述,他/她能够承担这个角色吗?
通常只有基于资源的策略或基于身份的策略应该足以为用户提供权限,但是对于角色来说是否不同?
感谢他/她能胜任这个角色吗?
是的,只要信任策略允许该帐户承担该角色,她/他当然可以这样做。例如,角色必须具有以下信任策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "<account-number>"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
这样,您的IAM用户就不需要了要在信任策略中明确列出,但信任策略是必需的,至少您应该指定可以承担它的帐户。但缺点是任何IAM用户或角色具有sts:AssumeRole
权限的<account-number>
帐户可以担任该角色
没有信任策略?
信任策略是必需的,所以你不能有一个没有信任策略的角色。
假设您有一个具有信任策略的角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxxxxx:user/UserA"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
角色只能由userA担当。无论用户b的权限如何,他都不能执行此策略。
信任策略指定" principal ";它可以承担它所依附的角色。该主体可以是各种不同类型的实体,例如AWS服务(例如,创建应用于EC2实例的角色),或另一个AWS帐户的标识符(授予跨帐户访问)。不能省略或使用通配符。
如果主体识别了一个AWS账户,那么它信任整个AWS账户。在某种意义上,该帐户中的所有用户都已包含在信任策略中,但是为了承担角色,他们还需要权限才能进行适当的假设ole API调用。此将职责委托给其他AWS帐户的管理员,以决定哪些用户应该能够承担该角色。
这可用于创建帐户的层次结构安排:
- 所有用户都在一个AWS帐户中创建,该帐户没有其他资源。 实际的资源——EC2实例、S3桶等——在单独的AWS账户中。
- 每个帐户定义角色,授予对其中一些服务的访问权限,并使用将中心帐户列为主体的信任策略。这些角色不列出受信任的单个用户或组,它们只是定义权限集。
- 中央帐户中的每个用户都被授予对不同帐户中角色的适当子集的假设角色访问权限。效果类似于使用组或管理策略授予多个用户相同的访问权限。