创建信任委托(委托方操作)
通过创建信任委托,可以将资源共享给其他账号,或委托更专业的人或团队来代为管理资源。被委托方使用自己的账号登录后,切换到委托方账号,即可管理委托方委托的资源,避免委托方共享自己的安全凭证(密码/密钥)给他人,确保账号安全。
操作步骤
- 登录统一身份认证服务新版控制台。
- 在统一身份认证服务的左侧导航窗格中,选择“委托”页签,单击右上方的“创建信任委托”。
图1 创建信任委托
- 设置“委托名称”。
图2 委托名称
- “信任主体类型”选择“普通账号”,在“信任的账号ID”中输入需要建立委托关系的其他账号的账号ID。被委托的用户可以在“我的凭证”页面中获取“账号ID”后,提供给委托方。
- 普通账号:将资源共享给其他账号或委托更专业的人或团队来代为管理账号中的资源。默认情况下,该账号内拥有切换信任委托权限的所有主体都能够切换该信任委托,但是您可以使用g:PrincipalUrn条件键来指定该账号中的某个主体(某个IAM用户或信任委托等)才能切换该信任委托。有关g:PrincipalUrn条件键的介绍和使用,请参见全局条件键。
- 云服务:授权指定云服务使用其他云服务。详情请参见:委托其他云服务管理资源。
- 选择“最大会话持续时长”。即选择编程访问获取的临时访问凭证可持续的最大会话时长。
- 选择是否使用“外部ID”。被委托方的外部ID需要唯一,不可以与其他被委托方的外部ID重复。
外部ID可以是只有您和被委托方所熟知的任何标识符。例如,您和被委托方之间可以使用发票号等,但不要使用可以猜测的信息,如被委托方的姓名或电话号码。选择使用“外部ID”,系统会将外部ID添加至信任策略中,信任策略会检查外部ID,能够确保被委托方执行了正确的操作。外部ID使用详情请参见防止跨账号混淆代理。
- 选择是否“启用MFA”。
启用MFA后,在登录验证页面被委托方需要输入MFA设备中的验证码,再次确认登录者身份,进一步提高账号安全性。
- 信任策略区域将会展示当前信任策略的内容,如需编辑请在创建后修改信任委托,请参见删除或修改委托(委托方操作)。
- 填写“描述”信息。
- 单击“完成”,进入给信任委托授权页面。
- 给信任委托授权与为IAM用户授权操作方法相同,授权操作请参见:给IAM用户授权。
为了保障您的账号安全,建议您按照业务场景为信任委托授予最小权限。
- 单击“确定”,委托创建完成。
委托方操作完成,将自己的账号名称、创建的信任委托名称及URN、信任委托所授予的权限以及外部ID(如有)告知被委托方后,被委托方可以通过控制台的
切换角色或调用AssumeAgency API切换至委托方账号中管理资源。
策略示例
委托给其他账号管理华为云资源时,关键点在于信任委托的信任策略和身份策略的配置。信任策略允许谁能切换该信任委托,身份策略则允许切换之后的信任委托会话能执行什么操作。信任策略和身份策略的格式一样,都是由JSON元素组成,其支持的JSON元素请参见JSON元素参考。
{ "Version": "5.0", "Statement": [ { "Principal": { "IAM": [ "<account-id-b>" ] }, "Effect": "Allow", "Action": [ "sts:agencies:assume" ], "Condition": { "Bool": { "g:MFAPresent": [ "true" ] } } } ] }
注意,信任策略作为一种资源策略,虽然允许了受信任的主体能够切换该信任委托,但是仍然需要账号B中的IAM用户拥有包含sts:agencies:assume的身份策略权限才行。在授予必要权限后,账号B中的IAM用户便可以通过控制台或调用AssumeAgency API去切换该信任委托,从而获取信任委托会话对应的临时安全凭证。想要了解临时安全凭证的更多信息,请参见临时安全凭证概述。
{ "Version": "5.0", "Statement": [ { "Principal": { "IAM": [ "<account-id-b>" ] }, "Effect": "Allow", "Action": [ "sts:agencies:assume", "sts::setSourceIdentity", "sts::tagSession" ], "Condition": { "Bool": { "g:MFAPresent": [ "true" ] } } } ] }

如果您需要在信任策略中添加sts::setSourceIndentity和sts::tagSession,请在创建完信任委托后再进行编辑信任策略,以添加额外的授权项。
{ "Version": "5.0", "Statement": [ { "Principal": { "IAM": [ "<account-id-b>" ] }, "Effect": "Allow", "Action": [ "sts:agencies:assume", "sts::tagSession", "sts::setSourceIdentity" ], "Condition": { "Bool": { "g:MFAPresent": [ "true" ] }, "StringEquals": { "g:UserId": [ "<user-id-1>" ] } } } ] }
在实际使用时,您需要把<user-id-1>替换为账号B中实际的IAM用户ID。此外,您还可以在信任策略中添加更多的条件键来进一步控制切换信任委托的条件,更多信息请参见全局条件键和运算符。
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "obs:bucket:ListBucket" ], "Resource": [ "OBS:*:*:bucket:example_bucket" ] } ] }