桶策略
{
"Version": "2012-10-17",
"Id": "Policy1589032691178",
"Statement": [
{
"Sid": "Stmt1589032265458",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<BUCKET>/*"
}
]
}
这将允许所有用户读取对象。
附加到AWS账户1 中用户ABC的IAM政策
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::<BUCKET>"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::<BUCKET>/*"
}
]
}
有了这个设置,任何都可以公开读取对象
IAM策略附加到用户ABC,因此ABC可以访问列表、放置、获取、删除
现在的问题是如果AWS帐户2中有人创建了用户XYZ并附加了与上述相同的IAM策略AWS帐户2中的XYZ用户能够列出、获取、放置、删除吗?
您发布的内容看起来像是resource-based & IAM policies
跨帐户访问。
为了允许帐户2中的用户XYZ对帐户1中的bucket执行上述操作,除了为用户XYZ指定的策略外,还需要在bucket的策略中为用户XYZ额外指定允许的操作。
另一种方式是允许跨帐户IAM角色承担,其中帐户2中的用户可以承担帐户1中的角色,授予对帐户1中S3存储桶的所需访问权限。
有关示例的更多信息,请访问https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/