Amazon web services 授予STS访问权限后,无法访问S3
我有两个不同的AWS帐户,DEV和PROD,我想在DEV中创建一个用户来管理这两个帐户中的S3存储桶。我已经创建了用户Bob,它附加了以下策略: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
{
"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存储桶,从而可以在它们之间复制数据