我创建了一个包含大量图像的s3服务器。我现在正在尝试创建符合我需求的存储桶策略。首先,我希望每个人都有阅读权限,以便他们可以看到图像。但是,我还希望为特定网站提供上传和删除图像的权限。这个网站没有存储在亚马逊服务器上?我怎么能实现这个目标?到目前为止,我已经创建了一个存储桶策略,使每个人都能看到图像
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucket/*"
}
]
}
答案 0 :(得分:0)
你可以delegate access到你的水桶。为此,其他服务器将需要AWS credentials。
如果其他服务器是您拥有的EC2实例,那么您可以通过使用IAM角色启动它来轻松完成此操作。如果其他服务器是其他人所拥有的EC2实例,则可以通过允许他们在您的帐户中承担适当的IAM角色来委派对它们的访问权限。但是对于非EC2服务器,就像这里的情况一样,您将不得不以其他方式提供AWS凭证。
执行此操作的一种方法是在资源“arn:aws:s3 ::: examplebucket / *”上添加一个允许s3:PutObject和s3:DeleteObject的策略的IAM用户,然后为其他服务器提供这些凭据。
更好的方法是创建具有相同策略的IAM角色,然后让其他服务器承担该角色。好处是证书必须定期轮换,所以如果它们泄露,那么曝光窗口就会变小。但是,要承担一个角色,其他服务器仍需要进行身份验证,因此需要一些基本的IAM用户凭据(除非您有某种方式通过身份联合获取凭据)。您可以添加有权承担上述角色(但没有其他权限)的基本IAM用户,并将基本IAM用户凭据提供给其他服务器。以这种方式使用AssumeRole时,您需要external ID。您也可以使用策略条件将假定此角色的实体限制为其他服务器的特定IP地址(如果可能,则不是100%确定)。
答案 1 :(得分:0)
Bucket Policy 可以很好地为每个人提供只读访问权限。
授予应用程序特定权限: