如何做好权限控制
小浩在梳理门户网站静态资源时,发现有些资源是仅内部员工可访问,有些资源是特定的注册客户可访问,还有些资源是匿名客户也可以访问。针对不同场景、不同用户,小浩该如何规划企业门户网站静态资源的权限控制呢?
权限控制类型
OSS有以下四种类型的访问权限控制。
类型 | 说明 | 适用场景 |
RAM Policy | RAM(Resource Access Management)是阿里云提供的资源访问控制服务。RAM Policy是基于用户的授权策略。通过设置RAM Policy,您可以集中管理您的用户(比如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限,比如限制您的用户只拥有对某一个Bucket的读权限。 |
|
Bucket Policy | Bucket Policy是基于资源的授权策略。相比于RAM Policy,Bucket Policy操作简单,支持在控制台直接进行图形化配置,并且Bucket拥有者直接可以进行访问授权,无需具备RAM操作权限。Bucket Policy支持向其他账号的RAM用户授予访问权限,以及向匿名用户授予带特定IP条件限制的访问权限。 |
|
Bucket ACL | 您可以在创建Bucket时设置读写权限ACL,也可以在Bucket创建后的任意时间内根据自己的业务需求随时修改ACL,该操作只有Bucket的拥有者可以执行。Bucket ACL分为public-read-write(公共读写)、public-read(公共读)和private(私有)三种。 | 对单个Bucket内的所有Object设置相同的访问权限。 |
Object ACL | 除Bucket级别ACL以外,OSS还提供了Object级别的ACL。您可以在上传Object时设置相应的ACL,也可以在Object上传后的任意时间内根据自己的业务需求随时修改ACL。Object ACL分为继承Bucket、public-read-write(公共读写)、public-read(公共读)和private(私有)四种。 | 对单个Object单独授权。例如,已通过RAM Policy或者Bucket Policy将Bucket内的所有Object或者与指定Prefix匹配的Object的访问权限设置为私有,但是考虑到您需要将其中某个Object开放给所有互联网匿名用户访问,则选择Object ACL,并将ACL设置为public-read。 |
设置Bucket ACL权限
针对门户网站的场景,小浩对企业门户网站需要存放的文件,进行了访问权限类型的梳理:
文件类型 | 文件权限设置 | 实现方式 |
企业门户网站静态资源(网站静态页面、图片、视频、网站下载资源等) | 企业门户网站部分资源,匿名客户公共读权限。 | OSS控制台 |
企业门户网站部分资源,仅注册客户公共读权限。 | OSS控制台 | |
企业门户网站管理员可读可写。 | OSS控制台 |
小浩首先需要创建一个Bucket用来存放文件,查看下表权限类型说明后,小浩希望设置Bucket ACL权限为私有。
权限值 |
权限描述 |
公共读写 | 公共读写:任何人(包括匿名访问者)都可以对该Bucket内文件进行读写操作。 警告 互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您配置公共读写权限。 |
公共读 | 公共读:只有该Bucket的拥有者可以对该Bucket内的文件进行写操作,任何人(包括匿名访问者)都可以对该Bucket中的文件进行读操作。 警告 互联网上任何用户都可以对该Bucket内文件进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。 |
私有 | 私有:只有Bucket的拥有者可以对该Bucket内的文件进行读写操作,其他人无法访问该Bucket内的文件。 |
- 配置Bucket ACL为私有支持以下两种模式:
- 创建时配置Bucket ACL步骤如下:
|
- 创建后修改Bucket ACL的步骤如下:
|
此时小浩内心有疑问,Bucket ACL已经设置为私有权限了,企业门户网站静态资源要求的是公共读权限,该如何处理呢?
- 首先我们回顾一下Bucket和Object的关系。在上传数据(例如文档、图片、音视频等)到OSS之前,需要创建一个存储空间(Bucket),然后将文件(Object)上传到该Bucket中。
- Bucket已经设置为私有,那Object是不是只能设置为私有?答案是否定的,上传Object时可以选择继承Bucket ACL或指定Object ACL。
设置Object ACL权限
于是,小浩上传网站匿名可访问的静态资源到Bucket时,需要设置Object ACL权限为公共读。
- 配置Object ACL为公共读支持以下两种方式:
- 上传Object时设置Object ACL为公共读。
|
- 上传Object到Bucket后调整Object ACL。
5. 单击确定。 |
|
设置Bucket Policy
小浩已经将存放文件的Bucket ACL设置为私有权限,如果要授权他人访问或使用自己的OSS资源,可以通过多种权限控制策略向他人授予资源的特定权限。
- 企业门户网站注册客户,需要有对部分视频有读的权限。可以通过Bucket Policy将指定用户设置为只读权限。假设该视频资源存放在OSS Bucket的video目录下,如下图所示,配置步骤如下:
- 使用OSS控制台,对指定用户设置为只读权限。满足企业门户网站部分资源设置为,仅注册客户为公共读权限。
6. 单击确定。 |
|
- 企业门户网站匿名用户,需要有对部分视频进行播放的权限。可以通过Bucket Policy对匿名用户设置为只读权限。假设该视频资源存放在OSS Bucket的guest目录下。如下图所示,配置步骤如下:
- 使用OSS控制台,完成对匿名用户设置为只读权限,满足所有用户可以播放视频的需求。
6. 单击确定。 |
设置RAM Policy
在日常运维过程中,考虑到IT团队内部成员需要登陆到OSS控制台,查看Bucket中的视频、监控指标等信息。为了安全考虑,小浩创建RAM子账号为“opsuser”,并授权“opsuser”子账号具有OSS 产品只读访问权限。
- 使用RAM控制台,完成RAM Policy的配置。小浩的同事即可通过子账号登陆阿里云,查看Bucket中的视频信息。
3. 在左侧导航栏,选择身份管理>用户,选择上一步创建的用户,单击添加权限。
|
练习实验:基于对象存储OSS实现企业门户网站托管
https://developer.aliyun.com/adc/scenario/exp/dd9b0b7a9419465ea92e702f3ca0a10e