如何让来自多个aws账户的不同iam用户访问账户A中的s3 bucket



我正在进行aws SAM项目,我有一个要求,允许来自未知aws帐户的多个iam用户访问我的S3存储桶,但我无法公开访问存储桶。我想保护我的bucket,就像我想让任何aws帐户的任何iam用户访问我的S3 bucket的内容一样。这可能吗?

以下是我尝试过并完美运作的政策。

{
"Version": "2012-10-17",
"Id": "Policy1616828964582",
"Statement": [
{
"Sid": "Stmt1616828940658",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:role/STS_Role_demo"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::new-demo-bkt/*"
}
]
}

上面的策略是针对一个用户的,但我希望其他AWS帐户的任何用户都可以访问我的内容,而不公开bucket和对象,所以我如何实现这一点?

这可能是在传入请求上使用一组Condition实现的。

我能想到两种选择:

  1. 您创建SAM应用程序使用的IAM角色,即使在其他帐户中运行
  2. 您创建了允许未知用户访问的S3存储桶策略

如果您决定研究S3存储桶策略,我建议使用S3访问点来更好地管理访问策略。

访问点是连接到存储桶的命名网络端点可以用来执行S3对象操作,例如GetObject和PutObject。每个访问点都有不同的权限和网络控制S3应用通过接入点。每个接入点强制执行一个自定义的接入点与bucket策略协同工作的策略连接到下面的铲斗。

您可以使用S3条件的组合来限制访问。例如,您的SAM应用程序在发出S3请求时可能包括特定的条件密钥,然后bucket策略允许基于这些条件进行访问。

您还可以将全局IAM条件应用于S3策略。

不过,这并不是很好的安全性,恶意行为者可能能够找出标头并将请求欺骗到您的bucket中。如在某些条件下所述,如aws:UserAgent:

应该小心使用此密钥。由于aws:UserAgent值为由调用方在HTTP标头中提供,未经授权的各方可以使用修改或自定义浏览器,以提供任何aws:UserAgent值他们选择。因此,aws:UserAgent不应用于防止未经授权的各方直接提出AWS请求。你可以使用它只允许特定的客户端应用程序,并且仅在测试您的策略。

最新更新