
# IAM支持的访问控制策略
IAM主体指能够在一个账号中执行操作和访问API的主体对象，包含IAM用户、委托、信任委托等。基于这些主体，华为云推出了多种访问控制策略。总体上，我们可以把这些访问控制策略分为两大类，分别是自主访问控制策略和强制访问控制策略：
- **自主访问控制策略** ------支持账号管理员自主完成对IAM主体的授权，其具体介绍见[自主访问控制策略]。
- **强制访问控制策略** ------支持对IAM主体施加强制控制策略，以实现访问护栏控制，其具体介绍见[强制访问控制策略]。
自主访问控制策略和强制访问控制策略中又包含多种权限控制策略，如[表1]所示，IAM可以支持多种权限控制策略协同运作：
 表1访问控制策略分类 
| 大类别      | 小类别            |
|:---|:---|
| 自主访问控制策略 | 基于角色与策略的权限控制   |
| 自主访问控制策略 | 基于身份策略的权限控制    |
| 自主访问控制策略 | 基于资源共享的权限控制    |
| 自主访问控制策略 | 基于信任策略的权限控制    |
| 强制访问控制策略 | 基于会话策略的权限控制    |
| 强制访问控制策略 | 基于服务控制策略的权限控制  |
| 强制访问控制策略 | 基于VPCEP策略的权限控制 |
   
 #### 自主访问控制策略
用户访问华为云的目的是操作华为云上的资源，而资源的属主是一个账号，且一个资源只有一个属主。默认只有资源属主才有权限完全操作该资源。如果您是某个账号管理员，自主访问控制策略在本质上是帮助解决"将哪些资源的哪些操作权限授予给谁"的问题。如[图1]所示，IAM把资源分为本账号的资源，以及其他账号授权给本账号的资源，图中的"谁"是IAM主体的一些具体应用场景。
图1自主访问控制策略场景   
![](https://support.huaweicloud.com/usermanual-iam5/zh-cn_image_0000002375265508.png "点击放大")
因此，根据"哪些云资源"以及"谁"的不同组合场景，IAM在设计上将其划分为"跨账号授权"和"账号内授权"两大类来解决：
- **账号内授权**：是指一个账号将自己对资源的操作权限授予给该账号下的IAM身份，包含IAM的基于角色与策略的权限控制、基于身份策略的权限控制、基于信任策略的权限控制。
- **跨账号授权**：是指一个账号将自己对资源的操作权限授予给另外一个账号，包含基于资源共享的权限控制、基于信任策略的权限控制。
其中，基于信任策略的权限控制同时适用于账号内授权和跨账号授权。
**基于角色与策略的权限控制**
在IAM的角色与策略权限模型中，包含系统角色、系统策略和自定义策略三种。其中，系统角色是IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制，它并不能满足用户对精细化授权的要求，无法完全达到企业对权限最小化的安全管理要求；系统策略是对系统角色的升级，其作用效果与系统角色类似，是华为云提前预置的一些用户常用业务场景所需要的权限合集，用户可以直接配置系统策略以访问华为云；自定义策略是指用户可以按照自身的业务诉求配置更加细粒度的权限规则，它可以实现比系统角色和系统策略更加精细化的权限控制。
了解如何使用角色与策略进行权限管理见[权限基本概念](https://support.huaweicloud.com/usermanual-iam/iam_01_0602.html)。
**基于身份策略的权限控制**
在IAM的身份策略模型中，它不再支持系统角色，只有系统身份策略和自定义身份策略两种权限模型，其作用与系统策略与自定义策略类似。身份策略模型还支持版本控制功能，IAM会保存系统身份策略与自定义身份策略的版本，支持用户切换自定义身份策略的版本。具体地，用户在对自定义身份策略进行修改时，以及华为云对系统身份策略进行修改时，修改操作不会覆盖现有的身份策略，而是由IAM创建新的身份策略版本。不过，IAM最多可以保存5个自定义身份策略版本，当用户创建第6个版本的自定义身份策略时，需要选择某个不再需要的历史版本进行删除。
了解如何使用身份策略进行权限管理见[身份策略概述](https://support.huaweicloud.com/usermanual-iam5/iam_01_0911.html)。
**基于信任策略的权限控制**
一般来说，用户授权时是将权限关联到某个IAM身份上，而基于资源的授权策略是将权限关联到某个资源上，并在权限中定义哪些主体可以对该资源执行哪些操作。信任委托中的信任策略是一种常见的基于资源的授权策略。当信任委托作为IAM身份时，可以将角色、策略和身份策略授予信任委托来进行权限控制，同时又可以把信任委托作为一种资源，此时可以把信任委托的操作权限授予给账号或者云服务。云服务可以理解为一种特殊的用户，因此可以看作是一种特殊的主体。
在委托中，委托的信任关系是通过指定账号或云服务实现的；而在创建信任委托时，信任委托的创建者可以通过策略语言的方式来描述账号与账号间或者账号与云服务之间的信任关系。在信任策略中，信任委托可以指定账号和云服务作为信任主体，当指定账号自身为信任主体时即为账号内授权。当指定其他账号或者云服务时即为于跨账号授权，同时可以通过在条件中使用g:SourceAccount等全局条件键来解决混淆代理人等安全问题。在使用信任委托时，信任委托作为资源时必须有信任策略的授权，调用者才能获取信任委托的临时安全凭证。
了解如何使用信任委托和信任策略请参见[信任委托概述](https://support.huaweicloud.com/usermanual-iam5/iam_01_0915.html)。
**基于资源共享的权限控制**
资源共享是由RAM服务提供的一种跨账号的资源授权机制（或称跨账号的资源共享机制），其权限由系统来定义。资源属主可以通过创建共享，将其拥有的"某个资源及与资源相关的一部分API操作权限"授予给另一个账号、组织或组织单元。也就是说，如果您有多个华为云账号，您可以创建一个资源，并使用RAM服务将该资源共享给其他账号使用。如果您的账号加入了组织，则您可以与组织中的所有其他账号共享资源，或者仅与一个或多个指定的组织单元包含的账号共享资源。您还可以按账号ID与特定的华为云账号共享，无论账号是否属于组织。
了解如何使用RAM服务进行资源共享请参见[RAM服务用户指南](https://support.huaweicloud.com/usermanual-ram/ram_03_0002.html)。
 #### 强制访问控制策略
当一个组织上云时，由于不同业务或环境（如测试环境、生产环境）对安全隔离有不同的需求，为了同时满足业务上的安全隔离和研发敏捷，组织通常会使用多个账号。例如，不同业务使用不同的账号，不同环境也会使用不同的账号，每个业务的账号管理员对账号下的资源拥有完全的自主权限控制能力。然而，一个组织通常对IT安全与隐私控制也会有统一的要求（如信息安全部门下发的安全与隐私控制基线），如果每个账号管理员对账号下的资源拥有完全权限控制，那么很可能会因账号管理员的误操作（或恶意操作，或凭证泄露导致的攻击） 而导致组织级的安全控制基线被打破。因此在组织维度上为客户提供统一的强制访问控制能力是非常重要的，它可以有效保护用户IT安全控制基线的完整性。
显然，这些安全控制基线并不是上文介绍的自主访问控制策略所能解决的，因此我们提供新的强制访问控制策略（或称为护栏控制，Guardrails）。强制访问控制策略采用相同的策略语言，其并不会主动授予IAM身份权限，仅对IAM主体的权限边界进行限制。强制访问控制包含基于会话策略的权限控制、基于服务控制策略的权限控制和基于VPCEP策略的权限控制。
**基于服务控制策略的权限控制**
组织（Organizations）服务为企业用户提供多账号关系的管理能力，它支持用户将多个华为云账号整合到创建的组织中，并可以集中管理组织下的所有账号。服务控制策略 SCP（Service Control Policies）是组织服务中提供的一种护栏控制策略，SCP策略可以限制一个账号所允许的最大权限，账号管理员自身的操作权限以及授予给IAM用户的操作权限都会受到SCP护栏限制。管理员可以在组织中设置SCP策略，帮助组织用户更好地满足业务的安全性和合规性需求。
了解SCP策略的具体原理和用法请参见[组织服务用户指南](https://support.huaweicloud.com/usermanual-organizations/org_03_0065.html)。
**基于VPCEP策略的权限控制**
在云环境中，虚拟私有云VPC（Virtual Private Cloud）网络边界控制是一个非常重要的安全管理维度。当一个主体请求操作一个资源时，如果目标资源的API访问点是仅存在于账号的VPC内部，而在VPC网络之外不存在访问面，那么可以认为这种访问是发生在一个VPC内部（可以把VPC看作是一个网络安全域），网络攻击面较小，安全性相对可控。但是，当前云上提供的诸多云服务API访问点都是面向互联网开放，网络攻击面较大，安全性相对难控。
VPC终端节点（VPC Endpoint）为VPC内部应用如何访问开放的云服务API提供了一种安全访问方式，VPC内部应用无需绕道公网，而可以在VPC内通过创建Endpoint方式与云服务建立访问通道。VPC管理员可以针对所创建的VPC Endpoint设置访问VPCEP策略，它也是一种护栏策略，而非授权策略，它表示"只有满足该策略要求的API请求才被允许通过此Endpoint去访问云服务API"。
了解VPCEP策略的具体原理和用法请参见[VPC终端节点用户指南](https://support.huaweicloud.com/usermanual-vpcep/vpcep_03_0210.html)。
**基于会话策略的权限控制**
一个委托或信任委托可以像普通的用户一样被安全管理员授予权限。当一个主体在调用获取临时安全凭证的API时，会产生一个临时安全凭证，这个临时安全凭证对应的是一个委托会话或信任委托会话。这个临时安全凭证不会继承调用该API的调用者权限，而只会继承指定委托或信任委托的权限。然而，在调用该API时，调用者也可以设置一个会话策略（Session Policy），用于限制临时安全凭证的最大访问权限。临时安全凭证的最终权限将是委托或信任委托被授予权限与会话策略权限的交集，使用该临时安全凭证的权限不会超过指定会话策略的范围。
了解如何使用会话策略请参见[通过委托或信任委托获取临时安全凭证](https://support.huaweicloud.com/api-iam5/AssumeAgency.html)。
