AWS中S3的Bucket桶訪問策略


S3的訪問控制有幾種:

對用戶的訪問控制

對桶的訪問控制

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

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

如果你在控制台點擊這個folder,對其設置“make public”的權限設置(圖一),

 

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

那你肯定會選擇是啦,但是,這只針對當前存在於此folder中的文件所言

問題來了,如果我們之后還會不斷在這個folder下添加文件,並且新的添加進去的文件都要可以對外可讀,該腫么辦呢?

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

一說是,在上傳文件的時候,有接口可以實現該被上傳的文件設置為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替換回來即可啦。(~ ̄▽ ̄)~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM