适用于跨账户访问的AWS S3存储桶控制策略

时间:2018-11-21 05:37:36

标签: amazon-web-services amazon-s3 amazon-iam amazon-emr

我有一个名为“ atest-bucket”的S3存储桶。在此存储桶中,我有一个名为“数据”的目录。我需要提供从外部帐户到该目录的用户访问权限(该用户将访问我的数据以便运行AWS ElasticMapReduce作业)。

使用我创建的策略,用户在尝试访问该策略时仍会收到403:

  

访问被拒绝(服务:Amazon S3;状态代码:403;错误代码:   AccessDenied;

这是我的政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AccessToDataFiles",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::11111111111:user/emr",
                   "arn:aws:iam::11111111111:role/EMR_EC2_DefaultRole"
                ]
            },
            "Action": "s3:List*",
            "Resource": "arn:aws:s3:::atest-bucket/data"
        },
        {
            "Sid": "Stmt1234456",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::11111111111:user/emr",
                   "arn:aws:iam::11111111111:role/EMR_EC2_DefaultRole"
                ]
            },
            "Action": [
                "s3:Get*",
                "s3:List*",
                "s3:Put*"
            ],
            "Resource": "arn:aws:s3:::atest-bucket/data/*"
        }
    ]
}

请帮助我调查此问题。

1 个答案:

答案 0 :(得分:1)

我相信您已授予其他帐户的权限(111 ----------)。在此帐户中,您需要将进一步的权限委派给您正在使用的特定用户。 您需要将权限委派给您的用户才能访问由先前帐户创建的存储桶。

为帐户(111 ----------)中的用户创建内联策略:

{    “ Version”:“ 2012-10-17”,    “声明”:[       {          “ Sid”:“ Example”,          “效果”:“允许”,          “动作”:[             “ s3:ListBucket”          ],          “资源”:[             “ arn:aws:s3 ::: examplebucket”          ]       }    ] }

请参考以下网址: https://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html