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

背景信息

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

配置步骤

  1. 登录OSS管理控制台
  2. 单击Bucket列表,之后单击目标Bucket名称。
  3. 单击文件管理页签,然后单击授权
    说明 您也可以单击权限管理 > Bucket授权策略 > 设置
  4. 授权对话框,单击新增授权
  5. 新增授权页面,设置以下项目后单击确定
    配置项 说明
    授权资源
    • 整个Bucket:授权策略针对整个Bucket生效。
    • 指定资源:授权策略只针对指定的资源生效。您需要同时输入资源路径,例如abc/myphoto.png。若是针对目录授权,则需在目录结尾处加上星号(*),例如abc/*。
    授权用户
    • 选择子账号:您可以从下拉菜单中选择当前账号的子账号,授予资源访问权限。若账号较多时,您也可以直接在搜索框输入子账号名称,搜索支持模糊匹配。您的账号必须是主账号,或拥有此Bucket管理权限及RAM控制台ListUsers权限的子账号,否则无法查看当前账号的子账号列表。
    • 其他账号:您可以给其他主账号、子账号以及通过STS生成的临时用户授予访问权限。
      • 当您需要给其他主账号或子账号授权时,请输入被授权账号的UID。
      • 当您需要给临时用户授权时,输入格式为arn:sts::{RoleOwnerUid}:assumed-role/{RoleName}/{RoleSessionName}。例如生成临时用户时使用的角色为testrole,角色拥有者的主账号UID为12345,生成临时用户时指定的RoleSessionName为testsession。此时应填写arn:sts::12345:assumed-role/testrole/testsession。支持通配符星号(*),例如想授权给所有临时用户,可以配置为arn:sts::*:*/*/*。生成临时授权用户的操作请参见STS临时授权访问OSS
    • 匿名账号(*):若您需要给所有用户授权,可以选择匿名账号(*)
    注意
    • 当被授权的用户是STS临时用户时,该账号无法通过OSS控制台访问授权资源,您可以通过命令行工具ossutil、OSS SDK、OSS API访问授权资源。
    • 给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两种访问方式。如需强制只能使用一种访问方式,例如只能使用HTTPS访问方式,设置方法如下:
      1. 设置授权操作拒绝访问
      2. 设置条件访问方式
      3. 设置访问方式HTTP
  6. 被授权账号访问已授权资源。
    您可以通过以下方式访问授权资源:
    • 控制台
      登录OSS控制台,在左边菜单栏单击我的访问路径后的加号(+),添加授权访问的Bucket和文件路径。详情请参见我的访问路径
      注意
      • 当被授权的用户是STS临时用户时,该账号无法通过OSS控制台访问授权资源,您可以通过命令行工具ossutil、OSS SDK、OSS API访问授权资源。
      • 若授权资源为指定文件或指定目录,通过访问路径访问时可能会提示没有访问权限,忽略即可。
    • 命令行工具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公司员工使用被授权的子账号,参照步骤6的方法访问A公司授权访问的资源。

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

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

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

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

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

  1. 配置策略,授权给合作公司E访问权限,配置步骤参考场景一。
  2. 配置策略,授权给内部员工访问权限,配置步骤参考场景二。
  3. 配置策略,禁止使用HTTP的方式访问,配置参数如下图所示。
  4. 策略配置完成后,访问授权访问的资源,请参见步骤6。需要注意以下几点:
    • 通过网页访问时需使用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