对象存储权限组合判断逻辑说明

最近更新时间: 2024-12-19 17:12:00

访问CSP对象存储存储桶及存储桶内资源时需要经过授权后才可进行访问。资源所属的租户的主账号默认对存储桶(Bucket)及存储桶内的资源拥有所有管理权限。其他访问管理(Cloud AccessManagement,CAM)用户账号需要授权后才可进行访问。

账号中的访问控制包括用户策略(User Policy)、存储桶访问控制列表(Access Control List,ACL)和存储桶策略(Bucket Policy)等不同的类型。

访问控制列表(ACL)

ACL用于对租户的主账号授权,ACL就是授权记录的列表,每条记录就是“主账号+授权”。以下可支持的权限列表和意义:

权限桶(Bucket)权限说明对象(Object)权限说明
READ
获取­­对象/列表
可读,列出Bucket下所有对象读取Object的数据
WRITE
写入数据
可写,删除存储桶、覆盖写桶内对象无意义
READ_ACP
权限读取
读取桶的ACL权限读取Object的ACL权限
WRITE_ACP
权限写入
修改和写入桶的ACL权限修改和写入Object的ACL权限

Object的ACL可分为2类默认(Default)和私有(Private):

  • 默认:ACL中没有任何授权记录(上传对象,且不指定ACL时,Object自动获得这样的ACL)。
  • 私有:ACL有一条(含)以上的授权记录。

策略(Policy)

相比于ACL,Policy更加丰富灵活,可以指定一组账号(Principal,常用账号列表指定)对特定一组资源(Resource,常用前缀模糊匹配方式指定)允许或拒绝某些操作(Action)。

Policy分为两类:

  • User Policy:依附于账号,一般由租户的主账号用于给租户子账号授权,需要从“云产品>访问管理”的租户端配置。
  • Bucket Policy:依附于存储桶,一般用于授权其他租户的主账号访问本存储桶的对象,可从"云产品>对象存储(CSP)"的租户端控制台配置。

说明:

一个Policy中的多条规则(Statement,"云产品>对象存储(CSP)"中”Policy权限设置“的每一行为一个Statement/规则)的判定方法如下:

  1. 如果匹配到一条拒绝(Deny)规则,就认为Policy拒绝操作。
  2. 如果匹配到至少一条允许(Allow)规则且没有匹配到任何一条拒绝(Deny)规则,就认为Policy允许操作。
  3. 如果上述2条都不成立,则认为Policy对该操作无结论。

访问权限评估流程

在用户对CSP对象存储发起操作请求时,对存储桶的鉴权和对象的鉴权走不同流程,如下图:

跨租户子账号授权典型用法示例

环境:

  • 租户A有根账号rootA、子账号subA和存储桶bucketA;
  • 租户B有根账号rootB和子账号subB。

**授权目标:**使账号subB能够访问bucketA的资源。

配置方法:

  • 在租户A的"云产品>对象存储(CSP)"租户端控制台使用bucketA的“Policy权限设置”(Bucket Policy)中授权rootB进行特定操作;
  • 并且在租户B的"云产品>访问管理"租户端控制台中
    • 从“策略管理”,添加策略(User Policy),描述允许对bucketA进行哪些操作
    • 从“用户管理>用户>subB>关联策略”,将新添加的策略与subB进行关联