AWS S3:尽管IAM用户具有完全访问权限,但无法下载对象

时间:2019-07-16 01:58:36

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

作为IAM用户,我已获得对S3存储桶的完全访问权限。

在查看AWS管理控制台>我的安全证书>用户> my_username时,AmazonS3FullAccess的策略如下:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "*"
    }
]
}

但是,我无法通过AWS管理控制台下载其他IAM用户上传的对象。尝试下载对象时,出现以下xml错误页面:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>CB7861FFD8043D3D</RequestId>
<HostId>
whN/Ftumk8fRJcEyugQI7rpLC1F+00YJ7cM3bTILY9COmiuS0j2v7r37mbPf7B4tqYKTzNkjdfM=
</HostId>
</Error>

这些其他IAM用户具有与我相同的权限,并且对其对象的权限进行了任何特定的更改。

存储桶的所有者(还创建了IAM用户帐户)试图将我的Canonical ID添加到有问题的对象的权限中,但是没有用。但是,他可以下载任何IAM用户上传的对象。

上面JSON中的权限设置是否不足以完全访问其他IAM用户创建的对象?所有IAM用户都是在同一帐户下创建的。我们如何轻松地进行设置,以便组中的任何IAM用户都可以访问彼此的对象?

编辑:认为这是一个跨帐户问题,但是我相信所有IAM用户都是在同一帐户中创建的。相应地更改了措辞。

一些其他信息: 实际的存储桶策略如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Bucket Policy",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::123456789012:root",
                    "arn:aws:iam::987654321012:user/my_username"
                ]
            },
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::my_bucket/*",
                "arn:aws:s3:::my_bucket"
            ]
        }
    ]
}

我已将我的用户信息添加到Principal中,但是在阅读了有关IAM用户的更多信息后,这似乎没有必要。虽然,这似乎也不是问题。

1 个答案:

答案 0 :(得分:0)

显然,此问题更多是由于我正在使用存储在DBFS根目录(https://kb.databricks.com/dbfs/dbfs-root-permissions.html)中的Databricks创建文件。我认为使用Databricks并不重要,但确实如此。

具有访问问题的对象均使用DBFS CLI上传。使用dbutils将对象复制到FileStore(https://docs.databricks.com/user-guide/advanced/filestore.html)之后,我现在可以访问这些对象。