开发者社区> 陈鹏飞Figo Chen> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【最佳实践】如何通过OSS的Bucket Policy设置访问授权?

简介: OSS控制台支持图形化设置Bucket Policy。通过Bucket Policy允许Bucket Owner直接进行访问授权控制,而不需要通过RAM 进行授权。Bucket Policy可以实现带IP条件限制的匿名用户访问策略设置以及跨账号授权策略设置;
+关注继续查看

如何让1个外部用户访问某个OSS资源?

 某大型企业A使用OSS作为后端资源存储平台,当该企业期望将内部数据分享给下游合作伙伴B,那么基于阿里云OSS平台,有多少种方式呢?

方式1:基于Bucket 以及Object ACL:
 Bucket 所有者将需要分享的文件ACL设置为“Public”模式,那么外部用户可以直接访问该文件的URL,而不需要通过身份认证以及鉴权操作。
image

图1:配置对象的ACL

方式2:使用签名URL方式:
 Bucket所有者设置待分享文件的签名url信息,外部用户接收到该url后,在指定的时间内访问该文件;
image

图2:设置对象的签名URL

方式3:使用RAM policy方式:
 若下游合作伙伴也是阿里云用户,那么可以基于sts(Security Token Service)方式进行授权访问,企业A管理员创建角色Role A,并且指定企业B账号进行扮演该角色Role A,通知企业A管理员设置RAM Policy(如下),并且将该RAM Policy赋予给Role A。企业B管理员可以使用根账号或者子账号扮演角色RoleA,然后使用Assumerole返回的临时token以及secret ID信息在指定的时间段内访问企业A的资源。

  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "oss:GetObject",
        "oss:ListObjects",
        "oss:GetObjectAcl"
      ],
      "Resource": [
        "acs:oss:*:*:test-resource"
      ],
      "Condition": {}
    }
  ]
}

方式4:使用Bucket Policy:
 若下游合作伙伴也是阿里云用户,那么Bucket Owner可以直接基于该资源配置Bucket Policy策略,在策略中指定允许访问该资源的对象,以及允许的访问操作权限。
003

图3:设置Bucket Policy

Bucket policy 优劣势

 针对用户访问资源的授权,我们列出了常见的4种不同的配置方式,那么这4种配置方式各有设么优缺点呢?
image

图5:4种配置方式的优劣势

Bucket Policy是什么?

  默认情况下,所有阿里云OSS资源都是私有的,包括Bucket,对象。只有资源拥有者才能访问这些资源,另外资源的拥有者可以通过配置访问策略授权他人访问权限。
  阿里云OSS提供的访问策略大致可分为基于资源的策略以及基于用户的策略两类。附加到资源(Bucket和对象)的访问策略称之为基于资源的策略。例如,Bucket Policy以及访问控制列表(ACL)就是基于资源的策略,另外也可以将访问策略附加到根账号下的子用户,这种策略称之为用户策略,例如:RAM Policy。

3.1 bucket policy简介

 Bucket 的所有者可以通过设置Bucket Policy设置针对bucket以及bucket内对象的访问权限。
 Bucket policy可以基于各种参数,例如“被授权账号/子用户,访问条件”等。附加到某个bucket的权限适用于该bucket内所有对象。设置Bucket Policy策略后,后续对该bucket的访问请求都将会受到Bucket Policy的限制。

3.2Bucket Policy配置过程

 当前Bucket Policy只能在控制台进行配置图形化配置操作。选中某个对象,点击“授权”,或者点击“操作授权”,弹出如下配置对话框:

image

图6:添加“操作授权”

 各个字段的含义如下表1所示:

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

3.3bucket Policy配置示例

 相比于RAM policy,Bucket Policy支持在控制台直接进行图形化配置操作,并且Bucket 所有者直接可以进行访问授权。Bucket Policy常见的应用场景有如下几种:

  1. 向其他账号的子用户授权访问
  2. 向匿名用户授权于带特定IP条件限制的访问权限

1.向其他账号下的子用户授权

 以下策略显示了bucket 所有者向其他账号下的子账号(UID:237683216696367672)授予只读权限的配置过程。

image

图7:向其他账号下的子账号授权

2.向匿名用户授权于带特定IP条件限制的访问权限

 以下示例允许向匿名用户授予待IP限制的访问策略。例如,企业内部的机密文档,只允许在企业内部访问,不允许在其他区域访问。由于企业内部人员较多,针对每个人配合RAM policy,手工操作工作量非常大。因此基于bucket policy设置带IP限制的访问策略,是非常有效的。
image

图8:向匿名用户授权于带特定IP条件限制的访问权限


Tips:授予对bucket的匿名用户访问操作时需谨慎使用。若授予匿名访问权限不带条件限制,那么意味着世界上任何人都可以访问该资源.

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

相关文章
【最佳实践】使用Logtail采集MQTT协议数据
MQTT是一个为IoT设计的消息协议,是一种轻量级的基于Pub/Sub模式的通信协议,支持物联网设备与服务器之间的双向通信。广泛应用于自动驾驶、智能家居、制造业、电信等领域。 本文主要介绍如何使用日志服务Logtail作为订阅方来采集基于MQTT协议的消息。并将消息内容采集到日志服务的Logstore。
72 0
使用APICloud开发物流仓储app的实践
本文包括项目前端思维导图、原型图(UI图)、项目前端app创建流程、功能点解析
101 0
在WDCP v3里设置站点通过IP和端口访问 - apache
在wdcp v3面板上设置通过IP+端口的网址访问站点。
1115 0
基于 Lerna 管理 packages 的 Monorepo 项目最佳实践
对于维护过多个package的同学来说,都会遇到一个选择题,这些package是放在一个仓库里维护还是放在多个仓库里单独维护,本文通过一个示例讲述了如何基于Lerna管理多个package,并和其它工具整合,打造高效、完美的工作流,最终形成一个最佳实践.
1386 0
【最佳实践】OSS开源工具ossutil-调节并发参数[英文版]
前言 前面支持一个国外客户,使用ossutil上传文件到OSS,一直调整不好--jobs和--parallel参数。因此给客户写了一篇简单的英文文档。 用户可从这里获取ossutil。 官网: https://help.
2326 0
bytes,packet区别 字节数据包
“包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。字节(Byte): 字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。  字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。
960 0
Scikit-learn 秘籍 第四章 使用 scikit-learn 对数据分类
第四章 使用 scikit-learn 对数据分类 作者:Trent Hauck 译者:飞龙 协议:CC BY-NC-SA 4.0 分类在大量语境下都非常重要。
1154 0
AVEVA PMLNet Guide
AVEVA PMLNet Guide eryar@163.com Abstract. AVEVA PMLNet allows you to instantitate and invoke methods on .
1691 0
使用Apache的Proxy模块实现对被代理网站的访问
最近有个需求,原本一个动态的站点,有些页面要静态化。但是静态化的文件又不希望和动态程序放在一起。并且URL也不希望发生变化,于是考虑使用Rewrite来实现。下面是一些使用的心得。 1、使用Rewrite规则来实现 Apache 的 Rewrite 是一个非常强大的工具,他的手册提供了丰富的实例可供我们学习,利用下面这个规则,可以将对www.a.com 这个网站的特定请求都定向到 www.b.com 服务器上。
782 0
30
文章
0
问答
来源圈子
更多
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载