授予对STS的访问权后,无法访问S3

时间:2018-12-18 17:37:58

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

我有两个不同的AWS账户DEVPROD,并且我想在DEV中创建一个用户来管理两个账户中的S3存储桶。我创建了用户Bob,该用户附加了以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::some-dev-bucket/*",
                "arn:aws:s3:::another-dev-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        }
    ]
}

这实际上有效,Bob可以列出所有存储桶并访问其中的一些存储桶。为了允许Bob访问PROD帐户中的S3存储桶,我在此处创建了PROD-S3-Access角色,并具有适当的权限和允许DEV用户使用它的信任关系。回到DEV,我创建了一个新策略,允许Bob担任以下角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::prod-account-id:role/PROD-S3-Access"
        }
    ]
}

这也很好,Bob现在可以访问PROD的S3。但是,在aws s3 ls帐户中进行DEV时,Bob会收到此消息An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied。令人困惑的是,如果我放弃让Bob担任PROD-S3-Access的策略,他可以再次读取DEV的S3存储桶。有任何线索吗?

编辑:

问题实际上是由我没有注意到的状况引起的,该状况要求用户启用MFA。

1 个答案:

答案 0 :(得分:1)

仅向用户添加ALLOW策略不应删除访问权限。确实,这很奇怪。

承担角色的另一种方法是授予DEV中的Bob权限,以直接访问PROD存储桶。这需要两件事:

  • 对DEV Bob的IAM权限以访问PROD存储桶
  • 每个PROD存储桶上的存储桶策略,允许从DEV Bob进行访问

这样,单个用户就可以访问DEV和PROD存储桶,从而可以在它们之间复制数据。