我已经创建了一个包含大量图像的s3服务器。我现在正在尝试创建一个存储桶策略,以满足我的需求。首先,我希望每个人都有读取权限,这样他们就可以看到图像。然而,我也想给一个特定的网站上传和删除图像的许可。这个网站没有存储在亚马逊服务器上吗?我如何才能做到这一点?到目前为止,我已经创建了一个存储桶策略,使每个人都能看到图像
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucket/*"
}
]
}发布于 2015-10-14 20:23:07
你可以通过delegate access访问你的存储桶。为此,另一台服务器将需要AWS credentials。
如果另一台服务器是您拥有的EC2实例,则可以通过使用IAM角色启动它来轻松完成此操作。如果另一个服务器是其他人拥有的EC2实例,那么您可以通过允许他们在您的帐户中承担适当的IAM角色来委派访问权限。但是对于非EC2服务器,就像这里的情况一样,您必须以其他方式提供AWS凭证。
为此,一种方法是添加一个IAM用户,其策略允许资源“arn:aws:s3::examplebucket/*”上的s3:PutObject和s3:DeleteObject,然后将这些凭据提供给另一台服务器。
更好的方法是创建一个具有相同策略的IAM角色,然后让另一台服务器承担该角色。优点是凭据必须定期轮换,因此如果它们被泄露,则暴露窗口较小。然而,要承担角色,另一个服务器仍然需要进行身份验证,因此需要一些基本IAM用户凭据(除非您有某种方法可以通过身份联合获得凭据)。您可以添加一个基本IAM用户,该用户具有承担上述角色的权限(但没有其他权限),并将基本IAM用户凭据提供给其他服务器。当以这种方式使用AssumeRole时,您应该需要一个external ID。您还可以使用策略条件将承担此角色的实体限制为其他服务器的特定IP地址(不是100%确定这是否可能)。
发布于 2015-10-15 03:51:25
存储桶策略将很好地为每个人提供只读访问权限。
要为应用程序提供特定权限,请执行以下操作:
为应用程序创建IAM用户(这也会为IAM用户创建访问权限策略,该策略授予所需的权限(非常类似于存储桶策略))
使API调用到亚马逊S3
https://stackoverflow.com/questions/33122235
复制相似问题