在授予STS的访问后,无法访问S3



我有两个不同的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访问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"
        }
    ]
}

这也很好,鲍勃现在可以访问PROD S S3。但是,在DEV帐户中执行aws s3 ls时,Bob获取此消息An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied。令人困惑的是,如果我分离让Bob假设PROD-S3-Access的政策,他可以再次阅读DEV的S3存储桶。有任何线索吗?

编辑:

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

仅将ALLOW策略添加到用户不应删除访问。确实是奇怪的。

假设角色的替代方法是在DEV许可中授予BOB,以直接访问PROD存储桶。这需要两件事:

  • iam dev bob 访问产品存储桶
  • a 每个产品存储桶上的存储策略允许从Dev Bob
  • 访问

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

相关内容

  • 没有找到相关文章