权限控制概述
权限控制概述
默认情况下,OS2的资源(桶和对象)都是私有的,只有资源拥有者可以访问OS2资源,其他用户在未经授权的情况下均无访问权限。
OS2的权限控制是指通过设置访问策略向IAM用户或者匿名用户授予资源的控制权限。例如,你拥有一个桶,你可以授权一个其他的IAM用户上传对象到你的桶中;你也可以将桶开放给匿名用户访问,即桶作为一个公共资源,能被互联网上任何人访问。
1. OS2权限控制模型
OS2提供多种权限控制方式,包括IAM权限、桶策略、ACL。
OS2权限控制方式和应用场景
方式 | 说明 | 应用场景 |
---|---|---|
IAM权限 | IAM权限是作用于云资源的,IAM权限定义了允许和拒绝的访问操作,以此实现云资源权限访问控制。 | 使用策略控制账号下整个云资源的权限时,使用IAM权限授权。 使用策略控制账号下OS2所有的桶和对象的权限时,使用IAM权限授权。 使用策略控制账号下OS2指定资源的权限时,使用IAM权限授权。 |
桶策略 | 桶策略是作用于所配置的OS2桶及桶内对象的。桶拥有者通过桶策略可为IAM用户或其他账号授权桶及桶内对象精确的操作权限。 | 允许云平台其他账号访问OS2资源,可以使用桶策略的方式授权对应权限。(暂未开放) 当不同的桶对于不同的IAM用户有不同的访问控制需求时,需使用桶策略分别授权IAM用户不同的权限。 |
ACL | ACL是基于资源的授权策略,可授予Bucket和Object访问权限。 | 允许匿名用户访问OS2资源,可以使用ACL的方式授权对应权限。 |
2. OS2权限控制要素
权限5要素
OS2的权限控制模型中,以下5个要素共同决定了授权的结果:
- 被授权用户 (Principal)
- 效果 (Effect)
- 资源 (Resource)
- 动作 (Action)
- 条件 (Condition)
不同权限控制方式中的OS2权限控制要素
方式 | 被授权用户 | 支持的效果 | 被授权资源 | 被授权动作 | 是否支持配置条件 |
---|---|---|---|---|---|
IAM权限 | IAM用户 | 允许 拒绝 |
OS2所有资源或指定资源 | OS2所有操作权限 | 支持 |
桶策略 | 帐号、IAM用户 | 允许 拒绝 |
指定桶及桶内资源 | 除OS2服务级别(ListBuckets、PutBucket)以外的所有操作权限 | 支持 |
桶ACL | 匿名用户 | 允许 | 桶内所有资源 | 读、写、删操作权限 | 不支持 |
对象ACL | 匿名用户 | 允许 | 对象 | 读、写、删操作权限 | 不支持 |
被授权用户的概念说明
账号:用户注册平台账号后自动创建,该账号对其所拥有的资源和IAM用户具有完全的访问控制权限。
IAM用户:由管理员在IAM中创建的用户,是云服务的使用者,对应员工、系统或应用程序,具有身份凭证(密码和访问密钥),可以登录管理控制台或者访问API。
匿名用户:未注册平台账号的普通访客。
3. 访问控制机制冲突时,如何工作?
访问控制基本原则
OS2权限控制要素中,Effect(效果)包含两种:Allow(允许)和Deny(拒绝),分别表示允许或拒绝执行某操作的权限。
基于最小权限原则,权限控制策略的结果默认为Deny, 显式的Deny始终优先于Allow。
例如:
IAM权限授权了用户访问对象的权限,但是桶策略拒绝了该用户访问对象的权限,且没有ACL时,该用户不能访问对象。没有策略授予Allow权限时,默认情况即为Deny权限。当有策略授权Allow权限,且没有其他策略Deny该权限时,Allow的权限才能生效。
例如:
某个桶已经存在多条Allow权限的桶策略,再新增Allow权限的桶策略,会在原权限的基础上进行叠加,增大用户的权限;如果新增Deny权限的桶策略,则会根据Deny优先原则调整用户的权限,即使Deny策略中定义的动作在其他桶策略中Allow。
访问策略授权过程
桶策略、IAM权限和ACL交叉控制下的Allow和Deny作用结果