不想每次搬家都带着一大堆附件,于是就把附件放在了S3上。
然后,肯定要设置一下防盗链这件事儿呀。
找了一些资料,但是还是弄不明白。
显式允许
顾名思义,“如果符合一些条件,那么就允许”,相当于数学里面的「当」
{
"Version":"2012-10-17",
"Id":"PreventHotLinking",
"Statement":[
{
"Sid":"Allow get requests originated from www.example.com and example.com",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition":{
"StringLike":{
"aws:Referer":[
"http://www.example.com/*",
"http://example.com/*"
]
}
}
}
]
}
一般来说,这样做就行了。
显式拒绝
{
"Version":"2012-10-17",
"Id":"PreventHotLinking",
"Statement":[
{
"Sid":"Explicit deny to ensure requests are allowed only from specific referer.",
"Effect":"Deny",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition":{
"StringNotLike":{
"aws:Referer":[
"http://www.example.com/*",
"http://example.com/*"
]
}
}
}
]
}
由于AWS的判断逻辑,这个其实会比「显示允许」更加严格。
显式允许+显式拒绝
{
"Version":"2012-10-17",
"Id":"PreventHotLinking",
"Statement":[
{
"Sid":"Allow get requests referred by www.mysite.com and mysite.com",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition":{
"StringLike":{
"aws:Referer":[
"http://www.example.com/*",
"http://example.com/*"
]
}
}
},
{
"Sid":"Explicit deny to ensure requests are allowed only from specific referer.",
"Effect":"Deny",
"Principal":"*",
"Action":"s3:*",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition":{
"StringNotLike":{
"aws:Referer":[
"http://www.example.com/*",
"http://example.com/*"
]
}
}
}
]
}
相当于数学里面的「当且仅当」。好吧,这个是最严格的了。
后记
在带有「显式拒绝」的逻辑下,我不会配置其他IAM账号的访问策略。
比如,我现在有一个IAM账号MyS3
,搞到了AK和SK。然后我想用命令行来上传下载一些东西。在「显式允许」的逻辑下,默认OK。在「显式拒绝」的逻辑下,Fail。在「显式允许+显式拒绝」的逻辑下,Fail。
Emmm,很是痛苦啊~求教!
然后,除此之外,我们还可以加上其他限制,比如说只允许某些IP啊、只允许HTTPS啊什么的。
发表回复