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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 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的匿名用户访问操作时需谨慎使用。若授予匿名访问权限不带条件限制,那么意味着世界上任何人都可以访问该资源.
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
3月前
|
存储 运维 Serverless
函数计算产品使用问题之OSS触发器是否可以只设置文件前缀
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
弹性计算 JavaScript Ubuntu
ECS 挂载 OSS 多Bucket
ECS 挂载 OSS 多Bucket
72 0
|
5月前
|
分布式计算 DataWorks API
DataWorks操作报错合集之在将ODPS空间设置成保护模式后,导出到OSS的任务出现了权限问题,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
173 1
|
5月前
|
存储 域名解析 前端开发
云上攻防-云服务篇&对象存储&Bucket桶&任意上传&域名接管&AccessKey泄漏
云上攻防-云服务篇&对象存储&Bucket桶&任意上传&域名接管&AccessKey泄漏
172 8
|
5月前
|
Web App开发 前端开发 安全
设置跨域规则后调用OSS时仍然报“No ‘Access-Control-Allow-Origin‘”的错误
设置跨域规则后调用OSS时仍然报“No ‘Access-Control-Allow-Origin‘”的错误
139 0
|
4月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
3月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
|
4月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
存储 运维 安全
阿里云OSS的优势
【7月更文挑战第19天】阿里云OSS的优势
178 2

相关产品

  • 对象存储