AWS重命名权限

时间:2015-11-25 21:16:44

标签: amazon-s3 permissions

在AWS中,我有以下

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowGroupToSeeBucketvideo",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::mybucket"
            ]
        },
        {
            "Sid": "AllowListingOfVideoBucket",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::mybucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket/*"
            ]
        }
    ]
}

我希望能够重命名对象,但是使用这些权限,重命名失败,任何人都知道我错过了什么?

5 个答案:

答案 0 :(得分:3)

要重命名,您需要将以下内容添加到允许操作中。

"s3:GetObjectVersion", "s3:DeleteObjectVersion", "s3:PutObjectAcl", "s3:GetObjectAcl"

答案 1 :(得分:0)

如果您的要求是允许访问特定的存储桶,例如示例及其对象。这些权限将满足您的目的。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1448568376000",
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::sample"
            ]
        }
    ]
}

答案 2 :(得分:0)

我认为这些许可会有所帮助,我试过了!

"Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion",
            "s3:GetObjectAcl"
        ],
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::mx-provider-video-upload/9a9036/*"
        ]

答案 3 :(得分:0)

我遇到了完全相同的问题,发现只有重命名S3对象所需的权限是:

"s3:GetObjectACL",
"s3:PutObject",
"s3:PutObjectACL"
不需要

s3:DeleteObject,这非常危险,特别是在未在S3存储桶上启用版本控制的情况下。我同时测试了s3:DeleteObject和不使用它,但仍然可以使用。

答案 4 :(得分:0)

我在这里提供的答案How do you allow granting public read access to objects uploaded to AWS S3?

我发现,如果未为 all 授予 ListAllMyBuckets ,则从控制台执行某些操作(如重命名对象)将失败(但从CLI可以成功!)。 > s3资源。将以下内容添加到IAM策略即可解决该问题:

 {
      "Sid": "AccessS3Console",
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*"
    }

我测试的某些操作在控制台中失败,但在CLI中成功:

  • 重命名对象。控制台显示“错误-无法将文件重命名为”。 解决方法:使用新名称删除并重新上传对象。
  • 通过“授予对此对象的公共读取权限”来上载对象。控制台的状态栏显示该操作处于“进行中”状态。 解决方法:在不授予公共读取权限的情况下上传对象,然后右键单击该对象并选择“公开”。

按照此处的说明进行操作后,我遇到了这些问题 https://aws.amazon.com/premiumsupport/knowledge-center/s3-console-access-certain-bucket/,说明如何限制对单个存储桶的访问(并防止看到帐户中存储桶的完整列表)。该帖子没有提及警告。

要将用户的Amazon S3控制台访问限制为仅某个存储桶或 文件夹(前缀),在用户的AWS Identity中更改以下内容并 访问管理(IAM)权限:

  1. 删除对s3:ListAllMyBuckets操作的权限。
  2. 仅向您要用户访问的存储桶或文件夹向s3:ListBucket添加权限。 注意:要允许用户从存储桶或文件夹上载和下载对象,还必须包括s3:PutObject和s3:GetObject。

警告:更改这些权限后,用户将获得访问权限 他们访问主要的Amazon S3控制台时被拒绝。用户 必须使用指向存储桶的直接控制台链接访问存储桶,或 文件夹。