AWS中S3的Bucket桶訪問策略

S3的訪問控制有幾種:html

對用戶的訪問控制web

對桶的訪問控制ide

今天研究了一下對桶的訪問控制。ui

我新建了一個桶,下面有好多的folder,須要針對某一folder設置外部匿名訪問權限的開放。spa

若是你在控制檯點擊這個folder,對其設置「make public」的權限設置(圖一),3d

 

他會詢問你是否將該folder以及其下包含的文件(它會統計個數)所有設置爲對全部人可讀(圖二)。code

那你確定會選擇是啦,可是,這隻針對當前存在於此folder中的文件所言htm

問題來了,若是咱們以後還會不斷在這個folder下添加文件,而且新的添加進去的文件都要能夠對外可讀,該腫麼辦呢?blog

我要設置整個桶都對外可讀嗎?這樣作的風險未免有些大。接口

一說是,在上傳文件的時候,有接口能夠實現該被上傳的文件設置爲public權限。

 1 _s3Client.MakeObjectPublic(bucketName,objectKey,true); 2 _s3Client.MakeObjectPublicAsync(bucketName,objectKey,true); 

此種須要在代碼層實現,應用起來多有不便。靈活性又不夠。固然也有他固有的優勢。

另外一種是,在整個bucket的permission中設置對everyone可讀。嗯,不知道爲何我設置了,可是不起做用。┓( ´∀` )┏

還有一種方法比較簡單,就是作一個針對此folder的策略。

在控制檯點開permission-->bucket policy,複製黏貼進這段代碼便可。

 1 {
 2     "Version": "2012-10-17",
 3     "Statement": [
 4         {
 5             "Sid": "AddPerm",
 6             "Effect": "Allow",
 7             "Principal": "*",
 8             "Action": "s3:GetObject",
 9             "Resource": "arn:aws-cn:s3:::bucketname/foldername/*"
10         }
11     ]
12 }

你問我,這策略怎麼寫啊?我想作些別的設置怎麼辦呢?

其實AWS自帶了policygen,能夠用來生成。https://awspolicygen.s3.amazonaws.com/policygen.html

A Policy is a container for permissions. The different types of policies you can create are an IAM Policy, an S3 Bucket Policy, an SNS Topic Policy, a VPC Endpoint Policy, and an SQS Queue Policy.

這是一個很好用的AWS本身的生成器,支持好多種AWS的policy,只是好像不支持中國地區。。,所以在resource中替換你原來bucket的region黏貼入Amazon Resource Name (ARN)

 1 arn:aws-cn:s3:::bucketname/foldername/* 2 3 -->替換region 4 5 arn:aws:s3:::bucketname/foldername/* 

生成後再把region替換回來便可啦。(~ ̄▽ ̄)~

相關文章
相關標籤/搜索