我对AssumeRolePolicyDocument的用途感到困惑。
要创建一个角色,您所需要的只是一个可以附加策略的父名称。
AssumeRolePolicyDocument似乎是该父名称但是不知何故。
这是做什么的?
"AssumeRolePolicyDocument": {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": ["lambda.amazonaws.com"]
            },
            "Action": ["sts:AssumeRole"]
        }
    ]
}


#1 楼

AssumeRolePolicyDocument的目的是包含信任关系策略,该策略授予实体承担角色的权限。
在您的示例中,它授予Lambda服务以承担假定角色的能力。 /docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html
https://docs.aws.amazon.com/cli/latest/reference/iam/create- role.html

评论


我想我为什么要扮演一个角色感到困惑?为什么不能仅将策略分配给它?

–mutant_city
18-10-2在23:55

@mutant_city,您需要允许Lambda权限承担角色。如果不这样做,Lambda将无法在您的环境中做任何事情。该角色具有分配给其的策略,这些策略为Lambda提供执行工作所需的特权。

– kenlukas
18-10-3在0:49

好。因此,您允许lambda承担您已将策略附加到...的角色吗?

–mutant_city
18-10-3在1:58



是的,简而言之。

– kenlukas
18-10-3在12:22

#2 楼

承担角色策略文档的目的是授予IAM实体承担角色的权限。也称为“角色信任策略”。换句话说,对于您设置的给定权限,它允许来自某些AWS账户的用户承担此角色并访问该账户。

建议您更新角色信任策略以将访问权限限制为仅授权用户,否则任何AWS账户都可以承担该角色并访问该帐户。

通过使用Amazon Resource Name指定主体AWS帐户,IAM用户,IAM角色,联合用户或假定角色用户(ARN),您允许或拒绝访问以承担该角色(sts:AssumeRole)。

#3 楼

对于在命名约定上费尽心思的人:

AssumeRolePolicyDocument(在CloudFormation yaml中)=信任关系(在AWS Console Web GUI中)

政策(在CloudFormation yaml中) =权限(在AWS Console Web GUI中)

#4 楼

我认为,考虑到创建角色的用户不一定是将其附加到某个地方的人,这一点要清晰得多:


AssumeRolePolicyDocument是创建角色的用户所施加的限制-例如可能是管理员。它可以防止其他用户将其附加到他们喜欢的任何AWS服务/用户。此外,它并没有告诉您实际在何处使用它。它是角色方面的一种保护(将角色作为一种资源也应加以保护)。
OTOH实际上是为服务/用户分配角色,由实际上需要一些服务才能具有权限的用户完成。而且只有在角色的AssumeRolePolicyDocument允许的情况下,他们才被允许这样做。

,当您是唯一的用户时,您可能不太关心它。但是,它确实增加了更多的安全性和文档(强制:))如何使用该角色。