信任委托概述
信任委托是您可以在账号中创建的一种具有特定权限的IAM身份。信任委托与IAM用户类似,均可以绑定身份策略,身份策略拥有决定该身份在华为云中能做什么和不能做什么的权限。但是,信任委托并非只与某个人唯一关联,而是旨在供任何需要它的人员进行切换代入。与IAM用户相比,信任委托没有与之关联的长期凭证(如密码或永久访问密钥),在您切换到一个信任委托时,它会为您的信任委托会话提供临时安全凭证。

当您首次创建账号时,默认情况下不会创建任何信任委托。当您使用华为云服务时,这些云服务可能会自动创建服务关联委托以便于为您提供服务。服务关联委托是一种信任主体为云服务的特殊云服务信任委托,服务可以切换服务关联委托以代表您执行操作,有关服务关联委托的详细介绍,请参见服务关联委托。
信任委托的类型
信任委托根据委托对象的不同,分为委托其他账号和委托其他云服务。
- 委托其他账号:通过信任委托,您可以将自己账号中的资源操作权限委托给其他更专业的第三方账号,被委托的第三方账号可以根据权限代替您进行资源运维工作。
- 委托其他云服务:基于云服务的业务需求,可能需要您创建云服务信任委托,将资源的操作权限委托给该服务,让该服务代替您进行一些资源运维工作。
其中委托其他云服务时,存在着一种较为特殊的信任委托,称为服务关联委托。服务关联委托是针对云服务授权场景设计的一种特殊的信任委托,与云服务信任委托功能相似但又存在差异。在使用云服务信任委托时,可能会存在如下问题:
- 云服务信任委托需要您主动创建,并由您主动为其设置最小权限,然而您可能并不清楚该信任委托所需的最小权限集是什么。
- 您对该信任委托拥有完全控制权限,可能会因为您误删除该信任委托或者误配置该信任委托的身份策略,导致对应云服务的功能异常。
委托链
委托链是指您使用一个信任委托来切换到另外一个信任委托的过程。您可以通过API、CLI或SDK来进行委托链的切换。例如,信任委托A有权限切换信任委托B,那么您可以使用IAM用户A的永久访问密钥调用AssumeAgency API切换到信任委托A,这将返回信任委托A的临时安全凭证,然后通过委托链,您可以使用信任委托A的临时安全凭证来使IAM用户A能够切换到信任委托B。
当您切换信任委托时,可以传递会话标签并将其设置为可传递。可传递的会话标签会传递到委托链中的所有后续会话。要了解有关会话标签的更多信息,请参见传递会话标签。
委托链将您的API、CLI或SDK的委托会话限制为最长一小时,无论为单个信任委托配置的最大会话持续时间为多少,此限制均适用。也就是说,当您使用AssumeAgency API切换信任委托时,您可以使用duration_seconds参数指定信任委托会话的持续时间。您可以指定一个最长为43200秒(12小时)的参数值,具体取决于您信任委托的最大会话持续时间设置。但是,如果您使用委托链切换到另外一个信任委托并提供一个大于一小时的duration_seconds参数值,那么该切换操作将会失败。
信任策略
一般来说,用户授权时是将身份策略授权至某个IAM身份上,而资源策略是将权限关联到某个资源上,并在权限中定义哪些主体可以对该资源执行哪些操作,信任委托中的信任策略是一种常见的资源策略。
{ "Version": "5.0", "Statement": [{ "Principal": { "IAM": ["<Account Id Of Account B>"], "Service": ["service.OBS"] }, "Action": ["sts:agencies:assume", "sts::tagSession", "sts::setSourceIdentity"], "Condition": { "DateGreaterThan": { "g:CurrentTime": "2024-01-01T12:00Z" }, "DateLessThan": { "g:CurrentTime": "2024-01-01T15:00Z" } }, "Effect": "Allow" }] }
信任策略的示例如上述所示,表示账号A给账号B和OBS云服务建立一个信任关系,允许账号B下拥有切换信任委托权限的主体和OBS服务在UTC时间2024年1月1日12点(对应北京时间为2024年1月1日20点)至UTC时间2024年1月1日15点切换到账号A的这个信任委托上。另外,在切换信任委托时还可以设置委托会话标签和源身份信息,用以后续控制被委托方如何访问华为云的资源。
其中,账号B用<Account Id Of Account B>表示,OBS服务用service.OBS表示,用于控制切换时间的条件键为g:CurrentTime,用于控制是否有切换信任委托权限的授权项为sts:agencies:assume,用于控制是否有设置会话标签权限的授权项为sts::tagSession,用于控制是否有设置源身份信息权限的授权项为sts::setSourceIdentity。
从这个例子可以看出,信任委托通过信任策略的方式可以对多类和多个主体表明信任关系,通过授权项和条件键可以对被委托方切换信任委托的操作进行细粒度的权限控制。而普通委托的信任关系为单一规则,它无法对多类和多个主体表明信任关系,也无法对被委托方切换信任委托的操作进行细粒度的权限控制,如果您仍需使用普通委托,请参见委托。