Bucket Policy是阿里云OSS推出的针对Bucket的授权策略,您可以通过Bucket Policy授权其他用户访问您的OSS资源。

背景信息

相比于RAM Policy,Bucket Policy支持在控制台直接进行图形化配置操作,并且Bucket拥有者直接可以进行访问授权,通常用来将私有文件共享给指定的用户或群体。

配置步骤

  1. 登录OSS管理控制台
  2. 进入目标Bucket。
    • 新版控制台:单击Bucket列表,之后单击目标Bucket名称。
    • 旧版控制台:在左侧Bucket列表,单击目标Bucket名称。
  3. 单击文件管理页签,然后单击授权
    说明 在新版控制台中,您也可以单击权限管理 > Bucket授权策略 > 设置
  4. 授权对话框,单击新增授权
  5. 新增授权页面,设置以下项目后单击确定
    配置项 说明
    授权资源
    • 整个Bucket:授权策略针对整个Bucket生效。
    • 指定资源:授权策略只针对指定的资源生效。您需要同时输入资源路径,例如abc/myphoto.png。若是针对目录授权,则需在目录结尾处加上星号(*),例如abc/*。
    授权用户
    • 选择子账号:您可以从下拉菜单中选择当前账号的子账号,授予资源访问权限。若账号较多时,您也可以直接在搜索框输入子账号名称,搜索支持模糊匹配。您的账号必须是主账号,或拥有此Bucket管理权限及RAM控制台ListUsers权限的子账号,否则无法查看当前账号的子账号列表。
    • 其他账号:当您需要给其他账号授权时,请输入被授权账号的UID。
    • 匿名账号(*):若您需要给所有用户授权,可以选择匿名账号(*)
    注意
    • 被授权的用户是其他阿里云主账号时,该主账号无法通过OSS控制台访问授权资源,您可以通过命令行工具ossutil、图形化工具ossbrowser、OSS SDK访问授权资源。
    • 给RAM用户授予ListUsers权限请参见为RAM用户授权
    授权操作
    • 只读:对相关资源拥有查看、列举及下载权限。
    • 读/写:对相关资源有读和写权限。
    • 完全控制:对相关资源有读、写、删除等所有操作权限。
    • 拒绝访问:拒绝对相关资源的所有操作。
      说明 若针对某用户同时配置了多个Bucket Policy规则,那么该用户所拥有的权限是所有Policy规则的叠加,但是拒绝访问优先。例如针对某用户第一次设置了只读权限,第二次设置了读/写权限,那么该用户最终的权限为只读读/写权限的叠加,即读/写权限。如果第三次设置了拒绝访问权限,则该用户最终的权限为拒绝访问
    条件(可选) 您可以限定只有符合特定条件的用户能够访问OSS资源。
    • IP =:设置IP等于某一IP地址或IP地址段。
    • IP ≠:设置IP不等于某一IP地址或IP地址段。
      说明
      • IP地址:例如10.10.10.10。如有多个IP地址,用英文逗号(,)分隔。
      • IP地址段:例如10.10.10.1/24。
    • 访问方式:设置使用HTTP/HTTPS访问OSS资源。
  6. 被授权账号访问已授权资源。
    您可以通过以下方式访问授权资源:
    • 控制台(仅当授权对象为子账号时)
      当授权对象为子账号时,使用被授权的子账号登录OSS控制台。在左边菜单栏单击我的访问路径后的加号(+),添加授权访问的文件路径,格式为bucket/object-prefix
      注意
      • 被授权的用户是其他阿里云主账号时,该主账号无法通过OSS控制台访问授权资源,您可以通过命令行工具ossutil、图形化工具ossbrowser、OSS SDK访问授权资源。
      • 若授权资源为指定文件或指定目录,通过访问路径访问时可能会提示没有访问权限,忽略即可。
    • 命令行工具ossutil

      使用被授权的阿里云账号通过ossutil访问授权资源,详情请参见ossutil

    • 图形化工具ossbrowser

      使用被授权的阿里云账号登录ossbrowser,登录时在预设OSS路径栏输入被授权访问的文件目录。详情请参见ossbrowser

    • OSS SDK

      使用各语言SDK访问授权资源,详情请参见OSS SDK

    • 文件URL(仅当授权对象为匿名用户时)

      在浏览器上,使用Bucket默认域名或已绑定在Bucket上的自有域名加文件路径进行访问。例如http://mybucket.oss-cn-beijing.aliyuncs.com/file/myphoto.png。详情请参见OSS访问域名使用规则

场景案例

场景一:某公司A,希望其合作公司B可以访问Bucket内指定文件目录date/内的文件。实现步骤如下:

  1. 参考配置步骤配置Bucket Policy,其中参数配置如下:
    • 授权资源填写指定的文件目录date/*
    • 授权用户选择其他账号,并填写B公司账号的子账号UID号。
    • 授权操作选择只读
    • 条件不配置。
  2. B公司员工使用被授权的子账号,参照步骤9的方法访问A公司授权访问的资源。

场景二:某公司C,部分内部公开文档存放在OSS Bucket的file/目录内,现希望公司员工可以直接访问公开文档内的资料。

考虑到员工较多,通过RAM Policy授权,工作量很大。此时,可以使用Bucket Policy设置带IP限制的访问策略,实现C公司需求,步骤如下:

  1. 参考配置步骤配置Bucket Policy,其中参数配置如下:
    • 授权资源填写指定的文件目录file/*
    • 授权用户选择匿名账号(*)
    • 授权操作选择只读
    • 条件选择IP =,并填写C公司的外网出口IP。
  2. C公司员工在公司内部使用任意阿里云账号,参照步骤9的方法访问授权访问的资源。

场景三:公司D的产品资料存放在OSS Bucket的public/目录内,需授权给本公司内部员工和合作公司E访问,为了访问安全,仅允许使用HTTPS的方式访问。

因为有多个需求,所以需要配置三条策略,实现步骤如下:

  1. 配置策略,授权给合作公司E访问权限,配置步骤参考场景一。
  2. 配置策略,授权给内部员工访问权限,配置步骤参考场景二。
  3. 配置策略,禁止使用HTTP的方式访问,配置参数如下图所示。
  4. 策略配置完成后,参照步骤9的方法访问授权访问的资源。需要注意以下几点:
    • 通过网页访问时需使用HTTPS的方式访问,例如https://mybucket.oss-cn-beijing.aliyuncs.com/file/myphoto.png
    • 控制台访问本身是HTTPS的方式,无影响。
    • ossbrowser在登录时需勾选HTTPS加密

      若工具非最新版本,请升级至最新版本或将Endpoint修改为自定义,之后输入对应的Endpoint的HTTPS域名,例如https://oss-cn-beijing.aliyuncs.com

    • ossutil在配置Endpoint时,需输入对应Endpoint的HTTPS域名,例如https://oss-cn-beijing.aliyuncs.com

教程视频

  • 授权多个用户访问 OSS 资源

  • 拒绝特定 IP 地址访问 OSS 资源