角色__身份管理_用户指南_访问控制-阿里云
1. 基本概念
教科书式角色(Textbook-Role)
教科书式角色(或传统意义上的角色)是指一组权限集合,它类似于RAM里的Policy。如果一个用户被赋予了某种角色,也就意味着该用户被赋予了一组权限,然后该用户就能访问被授权的资源。
RAM角色(RAM-Role)
RAM角色不同于教科书式角色。RAM角色是一种虚拟用户(或影子账号),它是RAM用户类型的一种。这种虚拟用户有确定的身份,也可以被赋予一组权限(Policy),但它没有确定的身份认证密钥(登录密码或AccessKey)。与普通RAM用户的差别主要在使用方法上,RAM角色需要被一个授信的实体用户扮演,扮演成功后实体用户将获得RAM角色的临时安全令牌,使用这个临时安全令牌就能以角色身份访问被授权的资源。
虚拟用户 vs 实体用户
虚拟用户与实体用户的区别在于是否能被直接身份认证,实体用户拥有确定的登录密码或AccessKey,比如云账号、RAM-User账号、云服务账号;而虚拟用户没有确定的认证密钥,比如RAM-Role。
RAM-Role必须与一种实体用户身份联合起来才能使用。如果一个实体用户要想使用被赋予的某个RAM角色,实体用户必须先以自己身份登录,然后执行切换到角色的操作将自己从实体身份切换到角色身份。当切换到角色身份后,将只能执行该角色身份被授权的所有操作,而登录时实体身份所对应的访问权限被隐藏。如果用户希望从角色身份回到实体身份,那么只需执行切回登录身份的操作,此时将拥有实体身份所对应的访问权限,而不再拥有角色身份所拥有的权限。
RAM角色主要用于解决身份联盟(Identity Federation)相关需求,比如联合您的企业本地账号实现SSO (Single-Sign-On)、委托其他云账号及其下RAM用户操作您所控制的资源、委托云服务操作您所控制的资源。
注意:如果没有特别说明,文中出现的角色都是指RAM角色。
与RAM角色相关的几个基本概念如下:
概念 | 注解 |
---|---|
RoleARN | RoleARN是角色的全局资源描述符,我们使用它来指定角色。RoleARN遵循阿里云ARN的命名规范。比如,某个云账号下的devops角色的ARN为:acs:ram:*:1234567890123456:role/devops。 |
受信演员 | 角色的受信演员是指可以扮演角色(即扮演角色)的实体用户身份。创建角色时必须指定受信演员,角色只能被受信的演员扮演。 |
权限策略 | 一个角色可以绑定一组权限(Policy)。没有绑定权限的角色也可以存在,但不能被使用。 |
扮演角色 | 扮演角色(AssumeRole)是实体用户获取角色身份的安全令牌的方法。一个实体用户通过调用AssumeRole的API可以获得角色的安全令牌,使用安全令牌可以访问云服务API。 |
切换角色 | 切换角色(SwitchRole)是在控制台中实体用户从当前登录身份切换到角色身份的方法。一个实体用户登录到控制台之后,可以切换到被许可扮演的某一种角色身份,然后以角色身份操作云资源。切换到角色身份后,原实体用户身份的访问权限将被屏蔽。用户不需要使用角色身份时,可以从角色身份切换回原来的登录身份。 |
角色令牌 | 角色令牌是角色身份的一种临时访问密钥。角色身份没有确定的访问密钥,当一个实体用户要使用角色时,必须通过扮演角色来获取对应的角色令牌,然后使用角色令牌来调用阿里云服务API。 |
2. 角色的使用场景
- 临时授权移动App客户端直接操作您所控制的资源
场景概述:企业A开发了一款移动App,并购买了OSS服务。移动App需要上传数据到OSS(或从OSS下载数据),A不希望所有App都通过AppServer来进行数据中转,而希望让App能直连OSS上传/下载数据。由于移动App运行在用户自己的终端设备上,这些设备并不受A的控制。出于安全考虑,A不能将访问密钥保存到移动App中。A希望将安全风险控制到最小,比如,每个移动App直连OSS时都必须使用最小权限的访问令牌,而且访问时效也要很短(比如30分钟)。
解决思路:云账号A在RAM中创建一个角色,给角色授予合适的权限,并允许AppServer(以RAM用户身份运行)使用该角色。当App需要直连OSS上传/下载数据时,AppServer可以使用角色,获取角色的一个临时安全令牌并传送给App,App就可以使用临时安全令牌直接访问OSS API。如果需要更精细地控制每个App的权限,AppServer可以在使用角色时进一步限制临时安全令牌的资源操作权限,比如,不同App用户只能操作不同的子目录,那么AppServer在使用角色时就可以进行这种限制。
- 跨账号的资源操作与授权管理
场景概述:A和B代表不同的企业。A购买了多种云资源(如ECS实例/RDS实例/SLB实例/OSS存储桶/...)来开展业务。A希望能专注于业务系统,而将云资源运维监控管理等任务委托或授权给企业B。当然,企业B可以进一步将代运维任务分配给B的员工。B可以精细控制其员工对A的云资源操作权限。如果A和B的这种代运维合同终止,A随时可以撤销对B的授权。
解决思路:云账号A在RAM中创建一个角色,给角色授予合适的权限,并允许云账号B使用该角色。如果云账号B下的某个员工(RAM用户)需要使用该角色,那么云账号B可以自主进行授权控制。代运维操作时,账号B下的RAM用户将使用被授予的角色身份来操作账号A的资源。如果账号A与账号B的合作终止,A只需要撤销账号B对该角色的使用。一旦账号B对角色的使用权限被撤销,那么B下的所有RAM用户对该角色的使用权限将被自动撤销。
3. 角色的类型
RAM支持两种类型的角色:用户角色和服务角色。
- 用户角色
允许RAM用户所扮演的角色,被称为用户角色。扮演角色的RAM用户可以属于自己云账号,也可以是属于其他云帐号。用户角色主要用来解决跨帐号访问和临时授权的问题。
- 服务角色
允许云服务所扮演的角色,被称为服务角色。服务角色主要用于授权云服务代理您进行资源操作。
4. 创建与使用角色
4.1 创建角色
通过RAM控制台来创建RAM角色的基本步骤如下:
- 选择角色类型
- 选择受信的演员身份
- 填写角色名称
- 给角色绑定权限策略
(1) 创建RAM用户使用的角色
操作步骤:登入RAM控制台,选择角色管理 -> 新建角色,在创建角色的窗口中选择用户角色,然后按步骤执行。
如果您创建的角色是给您自己名下的RAM用户使用(比如授权移动App客户端直接操作OSS资源的应用场景),那么你可以选择当前云账号为受信云账号。
如果您创建的角色是给其他云账号名下的RAM用户使用(比如跨账号的资源授权场景),那么您需要选择其他云账号,并在受信云账号ID中填写其他云账号的ID,如下图所示:
创建角色成功后,在RAM控制台的角色管理页面中,可以看到相应的角色详情如下:
成功创建角色后,我们还需要给该角色授权。给角色授权的方法和给普通RAM用户授权的方法类似,请参考给用户授权内容。
(2) 创建云服务使用的角色
操作步骤:登入RAM控制台,选择角色管理 -> 新建角色,在创建角色的窗口中选择服务角色,然后按步骤执行。
4.2 使用角色
必须使用RAM用户身份扮演角色(AssumeRole)
为了遵循最佳安全实践,我们不允许受信云账号以自己身份扮演角色。因此,受信云账号必须通过创建一个RAM用户账号,并授予该RAM用户账号的AssumeRole权限,然后以RAM用户身份去扮演角色。
操作步骤:
- 创建一个RAM用户,为该用户创建AccessKey或设置登录密码
- 给该RAM用户授权,授权时可以选择AliyunSTSAssumeRoleAccess系统授权策略
(1) RAM用户使用角色身份访问云服务API
当RAM用户被授予AssumeRole权限之后,他就可以使用自己的AccessKey调用安全令牌服务(STS)的AssumeRole接口来获取某个角色的临时安全令牌。关于AssumeRole API的调用方法,请参考STS API文档。
(2) RAM用户使用角色身份操作控制台
如果要使用角色身份进行控制台操作,首先RAM用户需要以自己身份登录控制台,然后通过“切换角色”的方式使用角色身份进行控制台操作。
例如,company2(企业别名)下的RAM用户zhangsan登录控制台之后,控制台右上角会显示该用户的身份信息,如下图所示:
用户点击“切换身份”操作,进入角色切换的页面,此时用户需要选择相应的企业别名和角色名(假设当前用户已被授权允许扮演company1(企业别名)下的ecs-admin角色):
切换成功后,将以角色身份访问控制台。此时控制台右上角将显示角色身份(即当前身份)和登录身份。
最后更新:2016-11-23 16:04:01
上一篇:
组__身份管理_用户指南_访问控制-阿里云
下一篇:
权限__授权管理_用户指南_访问控制-阿里云
配置负载均衡实例的攻击防护能力__实例管理_用户指南_负载均衡-阿里云
设置页面优化__配置操作接口_API 手册_CDN-阿里云
DTS支持RAM主子账号__访问控制_用户指南_数据传输-阿里云
查询可配置的系统参数__其他接口_API_API 网关-阿里云
安全组使用FAQ__ECS常见问题_产品使用问题_云服务器 ECS-阿里云
CDN访问异常时候,测试问题出现在CDN节点还是本地网络__故障检测_产品使用问题_CDN-阿里云
设置跨域访问__安全管理_开发人员指南_对象存储 OSS-阿里云
Dubbo 注解兼容情况__EDAS 中的 Dubbo 开发_开发者指南_企业级分布式应用服务 EDAS-阿里云
查询域名截图配置__直播流操作接口_API 手册_CDN-阿里云
消费者订阅服务__服务开发_开发者指南_企业级分布式应用服务 EDAS-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云