还在写RAM policy授权脚本?试试通过Bucket Policy一键配置细颗粒度访问权限-阿里云开发者社区

开发者社区> 阿里云存储服务> 正文

还在写RAM policy授权脚本?试试通过Bucket Policy一键配置细颗粒度访问权限

简介: 一、阿里云提供完善且全面的权限管控体系     阿里云提供业内最为完善的权限管控体系,涵盖了“基于资源的权限管理”以及“基于用户的权限管理”层面。并且阿里云“访问控制”采用基于ABAC(Attribute Based Access Control)而不是简单的RBAC(Role Based Access Control),用户可以访问者的当前环境属性(例如,current time、source ip、HTTP访问方式、prefix等参数)判断是否具有相应的操作权限。

一、阿里云提供完善且全面的权限管控体系

    阿里云提供业内最为完善的权限管控体系,涵盖了“基于资源的权限管理”以及“基于用户的权限管理”层面。并且阿里云“访问控制”采用基于ABAC(Attribute Based Access Control)而不是简单的RBAC(Role Based Access Control),用户可以访问者的当前环境属性(例如,current time、source ip、HTTP访问方式、prefix等参数)判断是否具有相应的操作权限。如下是阿里云OSS的权限管控体系。

image

  • Bucket ACL以及Object ACL是一种非常粗粒度的权限管理方式。当Bucket或者Object设置为“public-read”、“public-read/wirte”时,任何用户都可以访问该资源,并且不需要进行身份认证,这有可能导致您数据外漏、外网下行流量激增,甚至匿名用户有可能向您“public-read/write”的Bucket内写入非法数据,导致您面临法律风险。
【注意】:不建议您设置“public-read”、“public-read/write”访问权限。
  • 签名URL:阿里云提供资源级别的签名URL访问方式。用户接收到该签名URL链接后,在指定的时间内都可以访问该对象。阿里云签名URL能够提供一定程度的权限管控,但是该签名URL分享到外部后,也有可能造成数据泄漏。因此,我们建议您在内部使用签名URL或者结合其他安全管控手段并行使用;
  • Bucket Policy:阿里云提供的一种基于资源的ABAC权限管理方式。用户能够在OSS控制台实现一键配置。我们建议您通过Bucket Policy进行日常权限管理;
  • RAM Policy:阿里云提供了一种基于用户的ABAC权限管控方式,RAM policy功能强大,且配置灵活。用户可以根据实际需要创建精细化权限管控策略。并且支持授予给指定的用户、用户组、角色。我们建议您通过RAM Policy创建个性化权限管理策略;

    阿里云提供全面且完善的权限管控措施。我们建议用户日常通过子账号进行RAM Policy或者Bucket Policy授权,而避免直接操作根账号 。但是,由于RAM policy学习成本高,需要编辑个性化RAM policy策略脚本,因此相当一部分用户仅仅使用了阿里云提供的默认RAM policy 授权模板(该授权模板权限过大,并不能实现对象级别细颗粒度授权),而不是自行编写精细化RAM 授权策略。
    为了让更多的用户能够使用上阿里云强大的权限管控能力。阿里云OSS推出了图像化Bucket Policy策略,普通用户可以在OSS控制台进行日常的权限分配,而不需要编辑RAM policy授权脚本。目前OSS的Bucket Policy可以覆盖用户日常80%以上的授权场景。

image

二、【Bucket Policy】日常使用场景介绍

2.1【Bucket Policy】介绍

    Bucket Policy是一种基于资源的管控策略。您可以选中指定的Bucket或者prefix进行授权操作。当前您可以通过OSS控制台进行授权,后续阿里云将逐步在API、SDK层面支持该特性。如下是Bucket Policy的参数说明:

字段 描述
授权资源 1. 若选中某个对象,直接点击“授权”,则此处会自动填充对应资源的路径;
2. 若点击“操作授权”,则需要输入对应的资源路径。
1.若资源为bucket时,“授权操作”作用于bucket以及bucket内所有子对象;
2. 若资源为对象或者目录,“授权操作”作用于该对象或者该目录下所有的子对象;
授权用户 输入格式:
1.授权给账号:输入对应账号ID或者选择子账号username;
2.授权给子用户:输入对应子用户的ID
Bucket Policy支持跨账号授权;若授权给匿名用户,则勾选“所有用户”;
授权操作 为了简化授权过程,oss针对常见的授权场景进行了简化操作,目前只提供“只读”、“读写”以及“完全控制”、“拒绝访问”操作。 1.“只读”
2.“读写”;
3. “完全控制”
4."拒绝访问"
条件 IP等于、IP不等于 当输入多个IP地址或者IP地址段时,用英文逗号分隔;
条件 HTTP、HTTPS 设置请求的访问方式;

  如下我们将介绍几个Bucket Policy的典型使用案例。

2.2通过Bucket Policy进行日常权限管理

2.2.1场景1:向多个子账号授予读写访问权限

    如下是向多个子账号授予读写访问权限的操作界面。若针对当前根账号下的多个子账号进行授权,那么直接按照username进行勾选。

image

说明:

  • 目前只有Bucket的Owner才能进行“Bucket Policy”设置操作。也就说该账号必须拥有Bucket的“完全控制”权限,或者拥有默认的RAM “AliyunOSSFullAccess”权限;
  • 选择子账号授权时,当前操作的用户必须拥有“ListUsers”权限。默认根账号拥有该权限。若当前操作的用户没有"ListUsers"权限,则需要通过RAM Policy给当前进行Bucket Policy授权操作的账号进行RAM 授权。子账号拥有ListUsers权限的RAM 授权模板;
{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ram:ListUsers"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {}
        }
    ]
}

2.2.2场景2:授权子账号针对目录拥有只读权限

    下面的示例策略向子账号“test-user”、“tmp-user”针对figo这个目录授予“只读访问”权限。绝大多数用日常的授权场景都是向指定的目录授予“读写”、“只读”访问权限。因此通过Bucket Policy基本上可以涵盖绝大多数常规的授权操作。我们强烈建议您通过Bucket Policy针对子账号授予细颗粒度访问权限,而不是使用默认的RAM policy模板。

image

说明

  • 若当前进行Bucket Policy配置操作的账号无法获得"ListUsers"权限,也可以直接输入被授权账号的UID;
  • 当针对目录授权时,您需要输入目录的绝对路径,并且以/*结尾;
  • 当针对具体的对象授权时,您需要输入该对象的绝对路径以及对象名称即可。此处不需要以/*结尾。如下所示:

image

2.3场景3:通过Bucket Policy进行跨账号授权

    如下Bucket Policy示例策略向其他阿里云账号授予test-hangzhou-2025这个Bucket的只读访问权限。由于跨账号授权无法直接获取“listusers”权限。因此,只能输入对应账号的UID。

image

说明:若针对多个账号进行授权,请直接输入对应账号的UID,并换行输入下一个账号的UID;

3.Bucket Policy高级使用场景介绍

3.1场景4:限制对特定IP地址的访问权限

    以下示例向指定的子账号授予对Bucket的只读访问权限,但是访问请求必须来自于条件中指定的IP地址段。当前Bucket Policy仅支持IPV4的条件授权。Bucket Policy条件参数中使用“IpAddress”、“NotIpAddress”以及“SoureceIP”条件值进行过滤。

image

3.2场景5:向匿名用户授予访问权限

    以下授权策略向任何公共匿名用户授权针对Bucket的只读访问权限。此权限允许任何人访问该Bucket内的对象数据。当您将Bucket 设置为网站并期望任何人都可以访问时,这非常有用。

image

特别注意:请谨慎使用针对匿名用户授予只读访问权限,这将导致您Bucket内对象数据能够被任何人公开的获取。强烈您不要授予匿名用户写入Bucket的权限。

4.Bucket Policy进阶使用场景介绍

4.1场景5:拒绝用户通过HTTP协议访问指定的Bucket

    以下策略实现了拒绝所有用户(包括授权的用户以及未授权的匿名用户)通过HTTP协议访问指定的Bucket。我们建议您通过deny的方式拒绝HTTP的访问请求,而不是通过ALLOW方式允许HTTPS访问请求。

image

5.Bucket Policy与RAM policy关联关系

5.1Bucket Policy 与RAM Policy是什么关系?

  • 补充关系:Bucket Policy可以完成跨账号授权、针对匿名用户授权、以及授予带IP条件限制的访问策略;
  • Bucket Policy无法代替RAM Policy:例如Bucket Policy不支持递归授权;

5.2相比于RAM Policy,Bucket Policy有哪些优势?

  • 操作灵活:直接在OSS控制台进行图形化操作,无需编写策略脚本;
  • 授权简单:支持授权用户针对指定的Bucket进行权限管理操作,而无需授予整个RAM Policy编辑权限;
  • 满足更多授权场景:支持跨账号授权、针对匿名用户授权、以及设置带IP条件限制的授权策略。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。

官方博客
链接