第三方访问您的AWS资源

简介

有时候,你需要给予外包的第三方厂商授予访问和使用AWS资源的权限。你可以通过在condition中指定External ID来指定谁可以使用你创建出来的IAM role。

这个ID是第三方随机生成的一串字符。因此,在配置IAM role的时候需要第三方提供一个External ID

举例

假设你有个供应商叫Example公司,这家公司还服务很多其他的使用AWS的企业。你不应该给它IAM user,这是在AWS账号中一个长期有效的权限。相反,你应该使用IAM role。创建一个role,role关联的policy假设如下所示

// sample code
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "externalid",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags",
                "ec2:DescribeInstances",
                "ec2:UpdateSecurityGroupRuleDescriptionsEgress",
                "ec2:DescribeSecurityGroups",
                "ec2:UpdateSecurityGroupRuleDescriptionsIngress"
            ],
            "Resource": "*"
        }
    ]
}

假设Example公司提供了他们的External ID:

"Condition": {"StringEquals": {"sts:ExternalId": "Unique ID Assigned by Example Corp"}}

你可以将上面的policy调整为:

创建完成以后你把role的Amazon Resource Name (ARN)提供给Example公司,当Example Corp需要访问你的AWS资源时,该公司的人就会调用AWS sts:AssumeRole API。该调用包括要角色的ARN和External ID参数。

这样,任何想assume该角色的人必须是该角色的负责人,并且必须包括正确的External ID

参考资料

[docs] How to use an external ID when granting access to your AWS resources to a third party

最后更新于