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

AWS S3 bucket control policy for cross-account access

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

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

Access Denied (Service: Amazon S3; Status Code: 403; Error Code: 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/*"
        }
    ]
}

请帮我调查一下这个问题。

我相信您授予了另一个帐户的权限 (111----------)。在此帐户中,您需要将进一步的权限委托给您正在使用的特定用户。 您需要将权限委托给您的用户以访问之前帐户创建的存储桶。

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example", "Effect": "Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::examplebucket" ] } ] }

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