AWS存储桶策略 - 权限被拒绝

时间:2017-06-30 10:38:55

标签: amazon-web-services amazon-s3

我正在尝试让来自其他AWS账户的用户访问存储桶itv-twitterstg-archive,并且我添加了以下存储桶策略。他们说他们正在收到许可被拒绝的消息。任何人都可以看到此政策的任何问题或推荐我可以尝试的任何其他内容? (ps,我在这个例子中更改了桶的名称)。一旦你保存了桶策略就应该生效了吗?

编辑**总而言之,我希望来自账户AWS账户456456615374的用户twitterstg-backup能够执行以下操作:

 "s3:GetObject*"
 "s3:PutObject"
 "s3:PutObjectAcl"
 "s3:DeleteObject"
"s3:GetBucketLocation"
 "s3:GetBucketAcl"
  "s3:ListBucket"

{
    "Version": "2012-10-17",
    "Id": "twitterstg backup policy",
    "Statement": [
        {
            "Sid": "Allow read/write of Objects within archive from specific user",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::456456615374:user/twitterstg-backup"
            },
            "Action": [
                "s3:GetObject*",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::itv-twitterstg-archive/*"
        },
        {
            "Sid": "Allow read/list of archive Bucket from specific user",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::456456615374:user/twitterstg-backup"
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetBucketAcl",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::itv-twitterstg-archive"
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

问题中列出的政策对我来说非常合适!

这就是我的所作所为:

在帐户A中:

  • 创建了IAM用户(User-A
  • 获取Access Key&用户的密钥

在帐户B中:

  • 创建了一个Amazon S3存储桶(Bucket-B
  • 添加了您的策略作为Bucket Policy,并进行了一些更改:
    • 作为Principal,我插入了User-1
    • 的ARN
    • 作为Resource,使用了我的Amazon S3存储桶的名称
  • 将对象上传到存储桶

然后我使用User-A的凭据列出Bucket-B的内容:

aws s3 ls s3://bucket-b --profile user-a

我还将文件复制到Bucket-B

aws s3 cp foo s3://bucket-b --profile user-a

底线:它工作正常。您应该调查用户遇到问题的原因。您还应该尝试重现他们的情况(例如,通过自己尝试)。

答案 1 :(得分:0)

请注意,本金应为帐户B (即其他帐户)值。

"Principal": {
                "AWS": "arn:aws:iam::456456615374:user/twitterstg-backup"
            },

示例: -

 "Principal": {
            "AWS": "arn:aws:iam::AccountB-ID:root"
         },

第二个帐户: -

也应该为IAM用户设置适当的策略。

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

Refer this full documentation

如何查找帐户ID: -

请按照以下步骤获取帐户B的帐户ID。

enter image description here