访问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/规则)的判定方法如下:
- 如果匹配到一条拒绝(Deny)规则,就认为Policy拒绝操作。
- 如果匹配到至少一条允许(Allow)规则且没有匹配到任何一条拒绝(Deny)规则,就认为Policy允许操作。
- 如果上述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进行关联