我在RHEL服务器上运行了一个聊天应用程序,它将用户之间交换的文件上传到S3存储桶。如何将对这些文件的访问限制为仅使用该应用程序的用户,但同时也允许使用该服务器的SSH终端和该服务器上的代码的任何人获取这些文件?
我意识到我可以限制对特定HTTP引荐者或IP地址的访问,如documentation所示。但是,这会限制应用程序服务器或应用程序用户的访问。有没有办法可以将这两种政策结合起来?
所以最重要的是,除了使用应用程序的用户和托管应用程序的服务器在S3上访问这些文件之外,我不希望任何人。 谢谢!
答案 0 :(得分:0)
我明白了。如果有人遇到类似的问题,这就是存储桶政策 -
{
"Version": "2012-10-17",
"Id": "RestrictAccessPolicy",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucketname/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "52.12.34.56"
}
}
},
{
"Sid": "Allow get requests referred by referrer",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucketname/*",
"Condition": {
"StringLike": {
"aws:Referer": "http://yourwebsite.com/*"
}
}
},
{
"Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucketname/*",
"Condition": {
"StringNotLike": {
"aws:Referer": "http://yourwebsite.com/*"
}
}
}
]
}