AWS S3存储桶访问控制

时间:2018-05-03 21:22:01

标签: amazon-web-services amazon-s3 amazon-ec2

在AWS中,我(joe.doe@accountXYZ)创建了一个S3存储桶,因此我就是这个s3存储桶拥有者。

我想基于IAM角色配置此S3存储桶,因此只有一些IAM角色(例如[role_xyz,role_abc,role_cde])可以读取此存储桶。

在AWS控制台中,我似乎无法对其进行配置。

有谁能告诉我是否可以这样做?

======

据我所知,从IAM角色方面,您可以为此s3资源配置策略。但我的问题是在s3资源方面,我是否可以定义基于IAM角色的访问策略。

1 个答案:

答案 0 :(得分:1)

您的要求似乎是允许某些特定角色访问特定的Amazon S3存储桶。

有两种方法可以做到这一点:

选项1:为角色添加权限

这是首选方案。您可以将策略添加到授予对存储桶的访问权限的IAM角色。它看起来类似于:

{
    "Id": "Policy1",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Action": "s3:*",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::mybucket",
                "arn:aws:s3:::mybucket/*"
            ]
        }
    ]
}

这是一个很好的方法,因为您只需将策略添加到所需的角色,而无需触及实际的存储桶。

选项2:添加广告管理政策

这涉及将权限放在存储桶上,该权限授予对特定角色的访问权限。这是不太理想的,因为您必须将策略放在每个存储桶上并引用每个角色。

看起来像是:

{
    "Id": "Policy1",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Action": "s3:*",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::mybucket",
                "arn:aws:s3:::my-bucket/*"
            ],
            "Principal": "arn:aws:iam::123456789012:role/my-role"
        }
    ]
}

请注意,这些政策授予了广告资源s3:*权限,这可能对您的目的而言过于宽泛。最好只授予特定的必需权限,而不是授予所有权限。