
# SCP原理介绍
#### SCP分类
SCP按照策略创建者可分为两类，分别是系统策略和自定义策略。
- **系统策略**
华为云服务在组织预置了FullAccess，称为系统策略。组织管理员给组织单元或账号[绑定SCP](https://support.huaweicloud.com/usermanual-organizations/org_03_0037.html)时，可以直接使用系统策略。系统策略只能使用，不能修改。现有的SCP系统策略请参见：[SCP系统策略列表](https://support.huaweicloud.com/usermanual-organizations/org_03_0038.html)。
- **自定义策略**
如果系统策略无法满足授权要求，管理账号可以根据各服务支持的授权项，自行创建和修改自定义策略。自定义策略是对系统策略的扩展和补充。目前Organizations云服务支持策略编辑器和JSON视图两种自定义策略配置方式。具体操作请参见[创建SCP](https://support.huaweicloud.com/usermanual-organizations/org_03_0035.html)和[修改和删除SCP](https://support.huaweicloud.com/usermanual-organizations/org_03_0036.html)。
#### 权限控制原理
- **允许类权限的生效规则**
  如果要在成员账号级别允许使用某个云服务的操作，则必须在账号和根组织单元之间的每个层级上允许该操作。这意味着，必须在根组织单元和账号之间的每个层级，附加允许该操作的SCP。
  因此，组织启用SCP时，默认会为所有OU和账号绑定全部权限（FullAccess策略），默认允许所有操作，默认开放全部云服务与操作权限。如果任意层级删除该默认策略且未配置替代的策略，则该层级下的所有组织单元和成员账号，将会被禁止所有云资源操作。
  如[图1]所示：如需让指定成员账号正常使用某个云服务，根组织单元、下层组织单元和目标成员账号自身，三个层级都必须绑定对应的允许该操作的SCP。
  图1三个层级都必须绑定对应的允许该操作的SCP   
  ![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002586292555.png "点击放大")
  SCP整体遵循默认拒绝原则：所有未在各层级SCP中明确允许的操作，都会被自动拦截。只要根组织单元、下层组织单元、目标账号任意一层缺少允许配置，对应操作将无法执行。
  
- **拒绝类权限的生效规则**
  在根节点到目标成员账号的完整链路里，只要任意一个层级的SCP设置了禁止规则，该操作权限就会被统一限制。
  如[图2]所示：某业务组织单元中配置了禁止操作某个云服务的策略，即便根组织单元和下层的目标成员账号单独设置了允许该云服务操作的SCP，该组织单元下所有成员账号依然无法使用该云服务。上层配置的拒绝规则，会统一约束其管辖范围内全部下级组织单元与成员账号。
  图2拒绝类权限生效规则   
  ![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002555775912.png "点击放大") 
- **SCP通用配置建议**
  管理员可组合搭配允许规则与拒绝规则，按需管控企业内各类业务操作权限。拒绝类策略具备强约束能力，在根组织单元或核心组织单元统一配置拒绝规则，可快速对大范围业务、批量账号实现标准化安全限制。
  在配置时，可以结合访问权限使用记录，定期梳理优化SCP，仅保留业务必需的服务权限，最小化权限范围，提升整体安全防护水平。
  组织资源创建时，根组织单元、组织单元、成员账号会默认绑定全部权限（FullAccess策略）。管理员可根据业务实际，替换默认策略，采用服务白名单模式，仅开放指定服务，避免新增服务自动开通带来的安全风险。
  
- 权限管控主要两种落地方式：
  - 在根节点配置全局白名单策略，规则自动作用于全组织下层所有资源，实现全域统一权限管控。
  
  - 在不同组织单元、独立账号分别定制专属策略，区分业务场景配置差异化权限，实现精细化管控。
  
  
  ![](https://support.huaweicloud.com/usermanual-organizations/public_sys-resources/note_3.0-zh-cn.png)
  仅依靠允许规则搭配默认拒绝机制存在风险，宽泛或重叠的放行配置，容易造成权限冗余、越权访问等非预期问题。
  
- **典型场景说明**
  - 场景一：拒绝策略的层级约束范围 当某个组织单元OU1同时配置全部权限（FullAccess策略）和OBS服务的禁用策略，其下层的成员账号Account y额外绑定ECS服务的禁用策略。最终，该组织单元OU1内所有成员账号Account x和Account y均无法使用OBS，成员账号Account y还会被禁止ECS相关操作。
    图3拒绝策略的层级约束范围   
    ![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002555779678.png "点击放大") 
  
  - 场景二：全层级允许配置的必要性 服务正常使用的前提是全链路逐层配置允许规则。如果组织单元OU1仅配置允许使用ECS权限，则下层所有成员账号Account x和Account y仅可使用ECS服务，其余云服务操作全部受限。
    图4全层级允许配置的必要性   
    ![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002586299971.png "点击放大") 
  
  - 场景三：根组织单元缺失允许规则的影响 根组织单元未配置任何允许类策略，会直接导致整个组织下所有成员账号，无法访问和操作任何云服务。
    图5根组织单元缺失允许规则的影响   
    ![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002586183241.png "点击放大") 
  
  - 场景四：多层级拒绝规则叠加生效 根组织单元、上层业务组织单元OU1保留全部权限（FullAccess策略），组织单元OU2额外禁用ECS，组织单元OU3无额外限制。最终仅组织单元OU2下成员账号Account x无法使用ECS，其他成员账号Account y和Account z权限不受影响。
    图6多层级拒绝规则叠加生效   
    ![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002555628898.png "点击放大") 
  
  - 场景五：组织单元级白名单精细化管控 为组织单元OU2配置专属白名单，仅开放ECS权限；组织单元OU3保持全部权限（FullAccess策略）。以此实现不同业务单元权限隔离，按需分配资源使用范围。
    图7组织单元级白名单精细化管控   
    ![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002586309075.png "点击放大") 
  
  - 场景六：根组织单元拒绝规则优先生效 根组织单元统一禁用OBS，即便下层组织单元OU2单独添加允许使用OBS的权限也无法生效，下层成员账号Account x无法使用任何服务。下层成员账号Account y和Account z除受限服务OBS外，可正常使用其他云服务。
    图8根组织单元拒绝规则优先生效   
    ![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002555630896.png "点击放大") 
  
  - 场景七：根组织单元白名单全域管控 在根组织单元配置自定义服务白名单，限定可使用的云服务范围，下层组织单元全部保留默认全部权限（FullAccess策略）。基于权限交集规则，全组织所有成员账号Account x和Account y，仅能使用根组织单元允许的服务，下层的宽松权限配置将不生效。
    图9根组织单元白名单全域管控   
    ![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002555631698.png "点击放大") 
   
 
#### 显式拒绝和隐式拒绝的区别
Effect（效果）：Deny（拒绝），表示拒绝执行某操作的权限。
当没有策略设置权限为Deny时，默认情况即为Deny权限，称为隐式拒绝。
如果策略设置权限为Deny，则为显式拒绝。
用户在发起访问请求时，鉴权规则如下：
图10系统鉴权逻辑图
![](https://support.huaweicloud.com/usermanual-organizations/zh-cn_image_0000002263379221.png "点击放大")
1. 用户发起访问请求。
2. 系统优先寻找Deny指令。如果找到一个适用的Deny指令，系统将返回Deny决定。
3. 如果没有找到Deny指令，系统将寻找适用于请求的任何Allow指令。如果找到一个Allow指令，系统将返回Allow决定。
4. 如果找不到Allow指令，最终决定为Deny，鉴权结束。
 
