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

信任委托概述

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

您可以使用信任委托将访问权限委托给需要访问您华为云资源的IAM用户、应用程序或云服务。例如,您可能希望向您自己账号中的IAM用户授予他们需要的访问权限,或者向另一个账号中的IAM用户授予访问您账号中资源的权限,或者您还可能希望允许移动应用程序使用华为云资源,但又不想在应用程序中嵌入永久访问密钥,因为密钥难以更新且存在被相关人员提取的可能。对于这些场景,您可以使用信任委托来管理对华为云资源的访问权限。

当您首次创建账号时,默认情况下不会创建任何信任委托。当您使用华为云服务时,这些云服务可能会自动创建服务关联委托以便于为您提供服务。服务关联委托是一种信任主体为云服务的特殊云服务信任委托,服务可以切换服务关联委托以代表您执行操作,有关服务关联委托的详细介绍,请参见服务关联委托

信任委托的类型

信任委托根据委托对象的不同,分为委托其他账号和委托其他云服务。

  • 委托其他账号:通过信任委托,您可以将自己账号中的资源操作权限委托给其他更专业的第三方账号,被委托的第三方账号可以根据权限代替您进行资源运维工作。
  • 委托其他云服务:基于云服务的业务需求,可能需要您创建云服务信任委托,将资源的操作权限委托给该服务,让该服务代替您进行一些资源运维工作。

    其中委托其他云服务时,存在着一种较为特殊的信任委托,称为服务关联委托。服务关联委托是针对云服务授权场景设计的一种特殊的信任委托,与云服务信任委托功能相似但又存在差异。在使用云服务信任委托时,可能会存在如下问题:

    • 云服务信任委托需要您主动创建,并由您主动为其设置最小权限,然而您可能并不清楚该信任委托所需的最小权限集是什么。
    • 您对该信任委托拥有完全控制权限,可能会因为您误删除该信任委托或者误配置该信任委托的身份策略,导致对应云服务的功能异常。
      采用服务关联委托,可以解决上述云服务信任委托的最小权限配置、易用性以及误删问题。服务关联委托与云服务信任委托的主要差别如下表格所示:
      表1 云服务委托和服务关联委托的区别

      委托类型

      创建

      删除

      配置权限

      是否受服务控制策略(SCP)约束

      用户是否可见

      云服务信任委托

      由用户主动或云服务代表用户创建

      用户可自行删除

      由用户自行配置身份策略

      可见

      服务关联委托

      只能由云服务代表用户创建

      需由云服务代表用户删除

      用户无法配置或修改身份策略,由云服务预置系统身份策略作为最小权限

      可见

委托链

委托链是指您使用一个信任委托来切换到另外一个信任委托的过程。您可以通过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身份上,而资源策略是将权限关联到某个资源上,并在权限中定义哪些主体可以对该资源执行哪些操作,信任委托中的信任策略是一种常见的资源策略。

当信任委托作为IAM身份时,可以将身份策略授予信任委托来进行权限控制,同时又可以把信任委托作为一种资源,此时可以把信任委托的操作权限授予给账号或者云服务。在普通委托中,委托的信任关系是通过指定账号或云服务实现的;而在创建信任委托时,信任委托的创建者可以通过信任策略,使用策略语言的方式来描述账号与账号间或者账号与云服务间的信任关系。在信任策略中,信任委托可以指定账号和云服务作为信任主体,当指定本账号自身为信任主体时便属于账号内授权,当指定其他账号或者云服务时便属于跨账号授权,同时可以通过在条件中使用g:SourceAccount等全局条件键来解决混淆代理等安全问题。在使用信任委托时,信任委托作为资源时必须有信任策略的授权,调用者才能获取信任委托的临时安全凭证。
{
	"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。

从这个例子可以看出,信任委托通过信任策略的方式可以对多类和多个主体表明信任关系,通过授权项和条件键可以对被委托方切换信任委托的操作进行细粒度的权限控制。而普通委托的信任关系为单一规则,它无法对多类和多个主体表明信任关系,也无法对被委托方切换信任委托的操作进行细粒度的权限控制,如果您仍需使用普通委托,请参见委托

相关文档