Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 授予STS访问权限后,无法访问S3_Amazon Web Services_Amazon S3_Amazon Iam_Aws Iam - Fatal编程技术网

Amazon web services 授予STS访问权限后,无法访问S3

Amazon web services 授予STS访问权限后,无法访问S3,amazon-web-services,amazon-s3,amazon-iam,aws-iam,Amazon Web Services,Amazon S3,Amazon Iam,Aws Iam,我有两个不同的AWS帐户,DEV和PROD,我想在DEV中创建一个用户来管理这两个帐户中的S3存储桶。我已经创建了用户Bob,它附加了以下策略: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectA

我有两个不同的AWS帐户,DEV和PROD,我想在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可以列出所有bucket并访问其中的一些。为了允许Bob访问PROD帐户中的S3存储桶,我在那里创建了PROD-S3-Access角色,该角色具有适当的权限和信任关系,允许开发人员用户使用它。回到DEV,我创建了一个新策略,允许Bob担任以下角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::prod-account-id:role/PROD-S3-Access"
        }
    ]
}
这也很好,Bob现在可以访问Prods3了。但是,在DEV帐户中执行aws s3 ls时,Bob收到以下消息:调用ListBucket操作时发生错误AccessDenied:AccessDenied。令人困惑的是,如果我分离让Bob假设PROD-S3-Access的策略,他可以再次读取DEV的S3存储桶。有线索吗

编辑:

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

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

假设角色的另一种方法是授予Bob in DEV直接访问PROD Bucket的权限。这需要两件事:

在DEV Bob上访问PROD bucket的IAM权限 每个PROD Bucket上的Bucket策略允许从DEV Bob访问 这样,单个用户可以访问DEV和PROD存储桶,从而可以在它们之间复制数据