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

相关文章
相关标签/搜索