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替换回来即可啦。(~ ̄▽ ̄)~

posted on 2018-03-15 15:02  Riusmary  阅读(15402)  评论(0编辑  收藏  举报

导航