组织 ORGANIZATIONS-SCP原理介绍:权限控制原理

时间:2024-05-11 17:00:36

权限控制原理

  • 划定权限边界

    SCP不直接进行授权,只划定权限边界。将SCP绑定到组织单元或者成员账号时,并没有直接对组织单元或成员账号授予操作权限,而是规定了成员账号或组织单元包含的成员账号的授权范围。IAM策略授予权限的有效性受SCP限制,只有在SCP允许范围内的权限才能生效。SCP禁止的权限操作,即便授予IAM用户权限,用户也不能执行相关操作。

    比如成员账号A绑定了某一条SCP,SCP允许操作A的权限,拒绝操作B的权限。那么成员账号A可以给自己名下的IAM用户授予操作A的权限,不能授予操作B的权限,即便授予了操作B的权限,也无法生效。

  • 交集有效

    权限边界的叠加遵从交集有效准则,父OU的SCP与子OU(或账号)的SCP共同允许的权限,作为子OU的最终权限边界。

    如下图所示,左侧的椭圆表示附加到父OU的SCP,它允许权限A、B和C。右侧椭圆表示子OU(或账号)绑定SCP允许的权限,子OU(或账号)允许权限C、D和E。由于附加到父OU的SCP不允许D或E,因此父OU下的所有子OU和账号都不能使用它们,即使子OU的SCP明确允许D和E,它们最终仍然会被父OU的SCP阻止。子OU(或账号)的SCP不允许A或B,因此, 子OU(或账号)将阻止这些权限。最终,子OU的权限是父OU权限和子OU(或账号)绑定SCP的权限交集,即下图中的权限C。

    如果椭圆右侧是一个成员账号,则交集是授予该账号中的用户和用户组的最大权限集合。如果椭圆右侧是OU,则交集是该子OU可继承的最大权限集合。

    图1 SCP原理图
  • 筛选继承

    组织单元或账号绑定的SCP包括两部分,直接绑定的策略和继承的策略。某组织单元绑定的SCP,会继承给该组织单元下的所有子级OU和账号。账号和组织单元的权限边界,由所有上级OU的SCP和自身直接绑定的SCP共同决定。如下图所示,Account y隶属于OU3,Account y的权限边界是由继承自Root,OU1和OU3的SCP与Account y绑定的SCP共同决定。

    图2 SCP继承规则

    如果要在成员账号级别允许使用某个云服务的操作,则必须在账号和根组织单元之间的每个层级上允许该操作。这意味着,必须在根组织单元和账号之间的每个层级,附加允许该操作的SCP。您可以使用下列任一策略执行此操作:

    • 添加拒绝策略。拒绝策略会使用默认附加到每个OU和账号上的FullAccess SCP。此SCP将覆盖默认的隐式Deny,并明确允许所有权限从根组织单元传递到每个账号,除非创建并附加到相应OU或账号的其他SCP明确了拒绝权限。策略中的显式Deny始终优先于Allow。具有拒绝策略的OU层级以下的任何账号都不能使用被拒绝的操作,也无法在组织结构中较低的层级中添加该权限。
    • 添加允许策略。添加允许策略并删除默认附加到每个OU和账号的FullAccess SCP后,除非策略中明确允许,否则任何OU和账号都不允许任何操作权限。要允许使用某个云服务的操作,必须创建SCP并将它们附加到账号及其层级之上的每个OU,直至附加到根组织单元为止(包括根组织单元)。层次结构中的每个SCP(从根组织单元开始)必须明确允许在OU及其下面的账号中使用该操作。SCP中的显式Allow会覆盖隐式Deny。
  • 拒绝优先

    当组织单元和账号绑定多条SCP时,账号权限优先遵从拒绝语句。比如成员账号A同时绑定了两条SCP,分别是允许全部操作和禁止查看账单操作。此时执行查看账单操作,鉴权规则会优先遵从拒绝操作,即成员账号A不能查看账单。详细说明请参考显式拒绝和隐式拒绝的区别

  • 默认允许

    组织启用SCP时,默认会为所有OU和账号附加全部权限(FullAccess策略),默认允许所有操作。除非您为OU或账号附加其他的明确拒绝策略。

support.huaweicloud.com/usermanual-organizations/org_03_0032.html