更新时间:2025-09-25 GMT+08:00
分享

权限基本概念

权限

默认情况下,新创建用户或用户组没有任何权限,给用户或用户组授予身份策略,或将身份策略附加至用户或用户组,才能使得用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。

身份策略

身份策略包含多个元素定义的权限,可以精确到具体操作、资源、条件等,详情请参见身份策略语法。使用基于身份策略的授权是一种更加灵活地授权方式,能够满足企业对权限最小化的安全管控要求。身份策略可以绑定到IAM用户、用户组、委托、信任委托上,这些策略可以让您指定主体可以执行哪些操作。例如,您可以将身份策略绑定到名为developer的IAM用户上,以允许他执行华为云上ECS的ecs:blockDevice:get操作。

系统身份策略

云服务在IAM中预置了常用授权项,统称为系统身份策略。管理员给用户授权时,可以直接使用这些系统身份策略,系统身份策略只能使用,不能修改。如需查看所有云服务的系统身份策略,请参见:系统身份策略

如果管理员在IAM控制台给用户或者委托授权时,无法找到特定服务的系统身份策略,原因是该服务暂时不支持IAM,管理员可以通过给对应云服务提交工单,申请该服务在IAM预置权限。

自定义身份策略

如果系统身份策略无法满足授权要求,管理员可以根据各服务支持的授权项,创建自定义身份策略,并通过给用户组授予自定义身份策略来进行精细的访问控制,自定义身份策略是对系统身份策略的扩展和补充。

目前IAM支持可视化视图、JSON视图两种自定义身份策略配置方式。

身份策略鉴权规则

用户在发起访问请求时,系统根据用户被授予的访问策略中的action进行鉴权判断。鉴权规则如下:

图1 系统鉴权逻辑图

  1. 用户发起访问请求。
  2. 系统在用户被授予的身份策略中寻找请求对应的action,优先寻找Deny指令。如果找到一个适用的Deny指令,系统将返回Deny决定。此时,由于身份策略显式授予Deny指令,所以也称为显式拒绝该请求。
  3. 如果没有找到Deny指令,系统将寻找适用于请求的任何Allow指令。如果找到一个Allow指令,系统将返回Allow决定。
  4. 如果找不到Allow指令,最终决定为Deny,鉴权结束。此时,由于身份策略既没有显式授予Allow指令,也没有显式授予Deny指令,所以也称为隐式拒绝该请求。

资源策略

资源策略不同于身份策略,它可以绑定到华为云的某个资源上(需要该资源支持资源策略)。例如,信任委托就是一种支持资源策略的资源,绑定到它身上的信任策略就是一种资源策略,您可以在创建信任委托时编写信任策略以允许指定的主体能够切换到该信任委托。要查看支持资源策略的服务列表,请参考支持身份策略与信任委托的云服务列表中的“基于资源的策略”。

通过使用资源策略,您可以指定哪些主体有权访问该资源,以及他们可以对资源执行哪些操作。

身份策略与资源策略的区别

身份策略

如下图所示,Account A账号下创建了三个IAM User —— engineer、finance、operation,在该账号下存在三个资源Resource A、Resource B、Resource C。账号的管理员将身份策略绑定到engineer、finance、operation,可对这些特定的资源执行策略中的的一些操作,例如engineer可以对Resource A执行List操作,但是不能对Resource B执行List操作。finance可以对Resource B执行Read操作,operation可以对Resource C执行List和Read操作。

图2 使用身份策略访问同账号资源

资源策略

如下图所示,Account A账号下创建了三个IAM User —— engineer、finance、operation,Account B账号下创建了三个资源Resource A、Resource B、Resource C。Account A的账号管理员将身份策略绑定到engineer、finance、operation,可对这些特定的资源执行策略中的的一些操作,例如engineer可以对Resource A执行List操作,但是不能对Resource B执行List操作。finance可以对Resource B执行Read操作,operation可以对Resource C执行List和Read操作。Account B的账号管理员将资源策略绑定到Resource A、Resource B、Resource C,例如Resource A允许engineer List操作,Resourc B允许engineer List和finance Read操作,Resourc C允许operation Read操作。基于以上权限配置,Account A的engineer可以对Account B的Resource A执行List操作,但是无法对Resource B执行List操作;Account A的finance可以对Account B的Resource B执行Read操作,但是无法对Resource B执行List操作;Account A的operation可以对Account B的Resource C执行Read操作,但是无法对Resource C执行List操作。

图3 使用身份策略和资源策略访问跨账号资源

身份策略和资源策略都属于权限策略,并且将一起评估,访问本账号的资源一般只需要身份策略或资源策略允许即可对该资源执行相应的操作,例如资源策略中的OBS桶策略允许即可访问(但是IAM信任策略例外,信任策略也是一种资源策略,但是仍然需要身份策略和信任策略同时允许才能访问)。访问跨账号资源则需要身份策略和资源策略同时允许才可以对该资源执行相应的操作。详情请参见IAM 策略评估逻辑

相关文档