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

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 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,搭建一个在线教育视频课程分享网站。
相关文章
|
2月前
|
存储 运维 Serverless
函数计算产品使用问题之OSS触发器是否可以只设置文件前缀
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
分布式计算 DataWorks 数据处理
MaxCompute操作报错合集之UDF访问OSS,配置白名单后出现报错,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
3月前
|
域名解析 Serverless API
函数计算产品使用问题之如何配置自定义域名访问OSS中的内容
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
分布式计算 DataWorks API
DataWorks操作报错合集之在将ODPS空间设置成保护模式后,导出到OSS的任务出现了权限问题,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
163 1
|
4月前
|
分布式计算 DataWorks MaxCompute
MaxCompute操作报错合集之在Spark访问OSS时出现证书错误的问题,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
3月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
2月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
|
3月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
存储 运维 安全
阿里云OSS的优势
【7月更文挑战第19天】阿里云OSS的优势
121 2
|
3月前
|
存储 API 开发工具
阿里云OSS
【7月更文挑战第19天】阿里云OSS
119 1

相关产品

  • 对象存储
  • 下一篇
    无影云桌面