角色管理

概述

IAM角色(后文统一称角色)是一种虚拟身份,同用户身份一样,可以关联权限对资源进行操作,但它没有确定的身份认证密钥,且需要被一个受信的实体用户扮演才能正常使用。

你可以使用角色作为桥梁,向需要访问你云账户资源的用户、应用程序或服务提供访问权限。例如,你可以向其他云账户的用户、应用程序或服务授权临时访问你的账户资源,实现跨账户的资源访问,或是,向本账户内的子用户临时授权访问某些敏感资源。

本文将介绍角色的概念、工作原理,以及如何使用角色满足日常的账户和资源管理等需求。

相关概念

角色

可在百度智能云中账户中创建的拥有特定权限的IAM身份。角色与子用户类似,都是一种百度智能云身份,可以被授予允许拒绝访问特定资源的权限。区别在于,角色是一种虚拟身份,没有确定的身份凭证(密码或密钥),无法直接登录控制台或直接使用API访问你在百度智能云的资源。只有当角色被某一可信任的实体身份所代入时,通过提供提供角色会话的临时安全凭证,从而访问被授权的资源。

角色可以被如下类型的用户代入:

  • 与角色在同一账户下的IAM用户。
  • 与角色不在同一账户下的IAM用户。

角色载体

指可以承担角色权限的对象。在信任策略中定义添加和管理特定角色的角色载体,以允许拒绝这些角色载体访问你在百度智能云中的资源。目前支持成为角色载体的对象可以是主子用户、角色或用户组。

切换(代入)角色

指的是角色载体从自身用户空间切换到被授权的角色空间的操作。一个用户一旦被授予 STSAssumeRoleAccess 的权限,即可在其自身的用户空间和角色空间中进行切换,但一次只能切换到唯一的角色空间,切换到目标角色空间后,该用户当前只拥有目标角色权限。当前仅支持通过API的方式切换角色,详细操作请参考使用角色

常见场景

角色常用于解决跨账户的资源访问问题,或是同账户内子用户的临时授权问题,且不需要共享你账户内任何用户凭证信息,本节将介绍几种常见的业务场景。

给第三方账户授权访问你的云资源

你可以信任第三方账户,并为其账户的IAM用户或服务授予权限,以便其代入到你的云账户角色,并访问该角色被授权的云资源。你也可以切换到其他云账户给你授权的角色,以访问其他账户的云资源。

如下以一个实际案例来说明如何实现跨账户的资源访问:

公司A在百度智能云创建了账户Account111111111,并在该账户下创建了BCC服务器Server001,公司A的管理员希望将这台服务器交给公司B(拥有账户Account222222222)来运维。

image.png

在这个场景下,要满足公司A的管理需求,需要进行如下步骤:

  1. 公司B提供其云账户ID或别名给到公司A的管理员;
  2. 公司A的 管理员 在Account111111111中创建新角色RoleA,并将角色载体设置为其他云账号,并输入公司B的云账户ID或别名;
  3. 公司A将Server001的 运维策略 授予RoleA;
  4. 公司B的 管理员 创建子用户UserB,并授予该用户 STSAssumeRoleAccess 策略;
  5. UserB 可以通过调用临时安全凭证服务(STS) AssumeRole API 切换到RoleA,即具备了运维Server001 的权限。

同一账户内的临时授权

你可以向IAM子用户授予权限,以便切换至你所在账户中的角色,或是信任你的第三方账户的角色。

如下以一个实例来说明如何使用角色来解决同账户内提升权限的问题:

假如在你的账户内有一台核心的BCC服务器实例,出于安全考虑,你不希望你的子用户通过控制台直接管理这台服务器(如删除操作),此时,你可以将这台服务器的管理权限授予给一个角色(详细操作参考创建角色),并授予特定的子用户使用角色的权限,详细操作请参考使用角色,这样可以对该服务器实例添加以下几层保护:

  • 你必须显示地向子用户授予担任该角色的权限
  • 当前子用户必须使用百度智能云的API代入角色

使用如上方式践行了 最小权限原则 ,且只有用户需要执行特定任务时,才能使用安全级别较高的权限,以防止子用户对敏感的环境或服务进行了意外操作或更改。~~~~

创建角色

你可以为IAM角色授予对百度智能云资源的访问权限。利用IAM角色,你可以选择为自己账户下的子用户授予特定的访问权限,或与其他云账户建立信任关系,从而允许其他云账户下的子用户,利用你创建的IAM角色来访问你的云资源,比如,你可以允许第三方云账户访问你的对象存储BOS存储桶中的数据。

信任关系建立后,被信任账户的用户、服务或应用程序可以使用百度智能云的临时安全凭证(STS) 服务的 AssumeRole API 来操作代入角色。此操作为被信任用户或服务提供临时安全凭证,以访问你的云资源。
有关IAM角色的相关概念,请参考角色相关概念

本节将介绍如何使用控制台创建角色。

先决条件

在使用控制台创建角色前,你需要:

  1. 拥有已激活的百度智能云账户,如何注册和激活云账户请参考注册账号
  2. 拥有该账户的 系统管理员 权限。

操作步骤

请参考如下步骤完成在控制台中创建你的角色:

  1. 登录百度智能云控制台,鼠标移动到右上角用户头像,选择多用户访问控制
  2. 在左侧导航栏中选择角色管理,点击按钮创建新角色
  3. 填写角色名称、描述等基本信息,注意,角色名称在同一账户下必须唯一,名称不区分大小写,即TESTROLEtestrole 视为同一个角色;
  4. 选择角色载体,你可以选择当前云账号,代表该角色为目前所在云账户创建,也仅支持当前云账户下的子用户或服务进行访问;如果你选择其他云账号,代表该角色为其他云账户所创建,此时需要填写其他云账户的账户ID (你可以在用户中心 > 用户ID找到该ID),一个角色最多同时信任10个其他云账户;
  5. 为角色授权。在策略管理中选择合适的系统策略或自定义策略授予该角色,如果已有策略都不符合要求,可以选择新增自定义策略,请参考权限策略。你也可以不选择之后再为该角色授权;
  6. 点击 完成

通过如上步骤,完成了百度智能云账户下一个全新角色的创建。

注意
完成上述步骤仅算完成了所需配置的前半部分。你还必须为被信任账户中的各个用户授予 STSAssumeRoleAccess 的策略权限。详细操作步骤请参考使用角色

使用角色

通过创建角色操作,你拥有了一个被授予特定权限的角色,且该角色可以被某个云账户使用。本节将以被信任账户的角度,介绍如何作为被信任的用户,使用角色访问信任账户的云资源。为方便理解,这里假设云资源及角色所在账户ID为111111111,角色名称RoleA,拥有BCC服务器Server001的运维权限,被信任云账户为 222222222,希望为子用户UserB授予代入角色RoleA的权限。

先决条件

  1. 拥有被信任账户222222222的 系统管理员 权限;
  2. 子用户UserB 拥有有效的AK/SK

操作步骤

  1. 使用账户222222222的管理员账户登录百度智能云控制台
  2. 为子用户UserB授予 STSAssumeRoleAccess 策略权限,具体操作请参考用户授权
  3. 子用户UserB通过AssumeRole API,替换参数accountID为111111111,roleName 为RoleA,即可以代入账户111111111的角色RoleA。默认情况下,角色会话会持续2小时,你也可以在使用 AssumeRole API 时设定参数durationSeconds具体有效时间,这个时间不能超过2小时;
  4. 此时,子用户UserB将得到角色RoleA的临时凭证,并暂时放弃其在账户222222222的权限,具备了运维服务器 Server001 的权限。在访问Server001 时,需要将AK/SK 替换为 AssumeRole API返回的临时AK/SK,并将Token更换为返回的SessionToken

管理角色

本节将介绍如何管理你的百度智能云账户中的角色,涉及到角色编辑和修改,角色的删除操作等。

先决条件

需要管理你的角色,你需要拥有当前云账户的系统管理员权限

编辑角色

在角色使用过程中,你可能需要对现有角色信息进行修改,请参照如下步骤

  1. 登录百度智能云控制台,鼠标移动到右上角用户头像,选择多用户访问控制
  2. 在左侧导航栏中选择角色管理,在角色列表中找到需要编辑角色项,点击按钮编辑
  3. 你可以编辑角色的基本信息、角色载体和角色所关联的策略。

删除角色

为保障你的云资源安全,对于不再使用的角色,请及时进行清理,按照如下步骤可以完成角色的删除:

  1. 登录百度智能云控制台,鼠标移动到右上角用户头像,选择多用户访问控制
  2. 在左侧导航栏中选择角色管理,在角色列表中找到需要编辑角色项,点击删除
  3. 阅读弹窗提示后,点击确认,即完成角色的删除。

注意
为避免线上使用的角色被用户误删除,系统层面限制了已关联权限策略的角色不能被直接删除,需要进入角色详情页,清空关联的策略后,才能进行删除操作。
另一方面为避免影响你的线上服务,在删除角色前,请检查该角色最近的活动状态,确保无线上用户或服务使用时,再进行删除操作。

常见问题

问:什么是IAM角色?

IAM用户是一种实体身份,有确定的身份凭证,它通常与某个确定的人或应用程序一一对应。IAM角色是一种虚拟身份,它关联一组权限,没有确定的身份凭证,必须关联到某个实体身份上才能使用。IAM角色与特定的用户或组没有关联。相反,可信实体可以担任角色,例如IAM用户、应用程序或BCC等服务。

问:IAM角色能帮助解决什么问题?

IAM角色使您能够通过已定义的权限来委派可信任实体的访问权限,而无需共享长期访问密钥。使用IAM角色,可以将访问权限委派给您账户内管理的IAM用户、其他账户下的IAM用户,以及BCC等服务。

问:如何担任IAM角色?

您可通过调用Security Token Service (STS) AssumeRole API(或者叫 AssumeRole、AssumeRoleWithWebIdentity 和 AssumeRoleWithSAML)担任IAM角色。这些API会返回一组临时安全凭证,应用程序之后可使用这些凭证来签署对服务API的请求。

问:可以担任多少个IAM角色?

您能担任的IAM角色的数量没有限制,但是当您向百度云服务提交请求时,只能用一个IAM角色进行操作。

问:IAM角色和IAM用户之间有什么区别?

IAM用户拥有永久性凭证,用来直接与云服务交互。IAM角色没有任何凭证,不能直接提出服务请求。IAM角色必须由获得授权的实体担任,如IAM用户、应用程序或bcc等服务。

问:是否支持向IAM组添加IAM角色?

目前不提供。

问:我可以创建多少个IAM角色?

您的账户最多只能创建100个IAM角色。

问:是否可以删除与服务关联的角色?
可以。删除该角色之前,您必须解除该角色的授权。此步骤可以确保您不会意外删除您的正常运行所需的角色。