如何用好RAM访问控制中的角色

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 本文介绍了阿里云访问控制中角色的概念和不同的使用场景,提供了一些使用案例。

前言

RAM (Resource Access Management) 是阿里云为客户提供的用户身份管理与资源访问控制服务。每一个阿里云账号称为主账号,账号下面建的用户叫子账号。RAM 角色与 RAM 用户一样,都是 RAM 中定义的身份。RAM 角色是一种虚拟用户,没有确定的身份认证密钥,需要被一个受信的实体用户扮演才能正常使用。

下面给大家介绍一下角色的概念和不同的使用场景。

角色的概念

RAM访问控制

在理解角色这个概念之前,我们先看看RAM访问控制的几个概念。

  1. RAM用户。进入RAM访问控制管理控制台,在人员管理下面就有用户,新建用户时可以勾选不同的访问方式,有控制台密码登陆和编程访问,一个是账号密码登陆,另一个是生成AccessKeyID和AccessKeySecret,通过程序调用API使用。
  2. 用户组。即对用户进行分组授权管理。
  3. 权限策略。权限策略用于描述一组权限集,即允许或禁止对阿里云其它服务的访问许可。策略类型有系统策略和自定义策略,前者是访问控制服务预置的一些访问权限,比如AdministratorAccess,AliyunOSSFullAccess;后者是用户自定义的可以更细粒度的定义权限。
  4. 授权。授权是将已有的策略赋予用户或用户组,以及下面马上要讲的角色。

iam

上面示例里面就有用户/用户组RAM User,权限策略Policy,其它的服务比如ECS,OSS,RDS,MQ是举例的一些其它阿里云服务,Policy里面会定义访问这些服务的权限,比如FullAccess或者ReadOnlyAccess等。

注:本文示意图中IAM属于笔误,在阿里云里面是RAM。IAM是AWS里面的身份访问管理服务。

角色

角色跟用户的概念比较接近,即权限策略可以直接授权给一个角色。角色跟用户的关系跟演员在一部影视剧中饰演的角色是类似的。这里用户也可以扮演不同的角色进行阿里云服务的访问,当然不同的角色访问的权限也是不一样的。
role

如何使用角色

根据角色创建时选择不同的可信实例类型,角色也就有了不同的应用场景。我们分别对每一种应用场景做介绍。
createrole

可信实体为阿里云服务的角色

选择可信实体类型为阿里云服务时,同时选择授信服务,比如我们可以选择云服务器或者函数计算。
servicerole

以云服务器为例,在创建ECS实例时,可以在系统配置->高级选项中给当前的ECS实例选择RAM角色。比如我们先建一个角色叫test-role,然后添加权限AliyunOSSFullAccess,然后在创建ECS实例时指定角色test-role。

登陆进ECS,安装aliyun CLI。配置CLI 认证模式为 EcsRamRole。这里执行aliyun oss命令可以对OSS进行操作。

root@kyle:~# aliyun configure --mode EcsRamRole
root@kyle:~# aliyun oss ls

注:AWS CLI配置时不需要指定Access Key ID, Secret Access Key, 也不用指定role。

root@kyle:~# aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [ap-northeast-1]:
Default output format [json]:

从以上的例子可以看出,使用可信实体为阿里云服务的角色时,实际上是把此角色所拥有的权限转移给了相应的服务。这样访问阿里云服务的不只是用户,还有一些其它的服务(比如ECS,函数计算)也需要访问另外一些服务。这可以理解为授权的一种方式,从应用程序代码层面来看,避免了应用程序使用AK的方式访问阿里云服务,提高了安全性。

可信实体为当前阿里云账号的角色

这种场景大家不常用,但我个人通常这种模式来实现角色的分离,避免一些误操作,保障账户安全。创建可信实体为当前阿里云账号的角色后,也就只能将此角色分配给当前账号的RAM 用户,也就是子账号。

在下图中,我们创建了不同的角色,基于不同角色再授予相应的权限。比如Admin 角色行使管理员的职责,Develop 角色行使开发职责,Ops 角色行使运维管理。再对不同的用户分配权限使他们能够扮演某类或某几类角色。
account1

比如针对企业别名为kyleliu的账号建不同的角色,和不同的用户。用户kyle不具有访问阿里云服务的权限,只可以用于登录。如果要做系统管理,需要切换至admin的角色来进行相应的管理操作。这样类似于Linux下一般不建议用root用户直接操作,在普通用户需要特定权限才用sudo临时提升权限是一样的。好处保证了系统的安全,即使用户kyle的AK泄露了,获得者用得到的这个AK仍然不能对系统进行任何操作,除非知道具体的角色名称。
console_role

此类角色的另一个使用场景是当给一用户进行临时授权时,不需要改变用户的权限,可以给他建一个角色并分配相应的权限,将此角色的扮演权限赋予用户就可以了。

可信实体为其它云账号的角色

可信实体为其它云账号的角色,跟前面的当前云账号角色类似,即是跨账号的授权。比如针对不同的产品环境,我们创建了不同的账号,比如我们有OPS账号,有DEV账号,有INT账号,有PROD账号。当OPS账号需要访问其它环境的资源时,就可以扮演其它账号中创建的角色,而不用在每个环境中重复创建相同的用户。

下图示例是对用户管理的一种优化,针对刚才提到的不同环境,我们单独使用一个账号来进行登录。登录到Account 1 - Login账号后,当前账号是没有任何访问权限的,此时需要用户根据使用的需要切换到不同环境的角色,从而使用和管理相应环境的资源。这样操作有一定的局限性,因为并不是所有的阿里云服务都提供基于角色的访问(比如切换了角色再访问云栖社区就会提示说不支持角色登录),目前来看大部分服务是支持的,具体请参考参考资料2,文档跟实际不完全一致,需要时可具体验证测试。
accountN

总结

本文介绍了角色的概念及使用方法,同时给出了一些使用案例。在掌握了基本原理后,可以在此基础上实现不同的应用模型,从而提高系统的安全性和管理上的便利性。

参考资料

  1. 访问控制 > 用户指南 > 身份管理 > RAM 角色身份 > 理解 RAM 角色
  2. 访问控制 > 产品简介 > 支持 RAM 的云服务
相关实践学习
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
28天前
|
弹性计算 安全 API
访问控制(RAM)|凭证安全管理与最佳实践
本文分享将为您介绍从访问云资源的人员/程序身份两种身份类型,介绍云上凭证的认证方式、安全风险及凭证管理的最佳实践。
102461 7
|
1月前
|
机器学习/深度学习 API 数据安全/隐私保护
视觉智能平台常见问题之一直提示ram没有权限但是我在角色中已经有添加相应的权限如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
23 0
|
8天前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
101820 2
|
1月前
|
云安全 弹性计算 安全
AK泄露了,怎么办?
AccessKey(包含AccessKey ID和Secret)是程序访问的凭证,无异于打开云上资源的大门钥匙,保管好AK是保障云上安全最重要的事情,甚至没有之一。
105580 7
|
4月前
|
数据库 数据安全/隐私保护
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
520 3
|
4月前
|
Kubernetes 数据安全/隐私保护 容器
k8s学习-CKA真题-基于角色的访问控制-RBAC
k8s学习-CKA真题-基于角色的访问控制-RBAC
181 0
|
4月前
阿里云RAM角色和自定义角色
阿里云RAM角色和自定义角色
74 1
|
安全 Java 数据安全/隐私保护
Spring Security-内置访问控制方法介绍和角色权限判断
Spring Security-内置访问控制方法介绍和角色权限判断
Spring Security-内置访问控制方法介绍和角色权限判断
|
数据安全/隐私保护
RBAC基于角色的访问控制权限的基本模型
RBAC基于角色的访问控制权限的基本模型
118 0
RBAC基于角色的访问控制权限的基本模型
|
弹性计算 数据安全/隐私保护
.Net Core实战之基于角色的访问控制的设计-
2年前开源了Sikiro.RBAC系统(https://github.com/SkyChenSky/Sikiro.RBAC)但是缺少了部署流程,这次通过申请免费的ECS,重新把流程梳理了下,并整理成改篇文章。 .Net Core实战之基于角色的访问控制的设计(https://www.cnblogs.com/skychen1218/p/13053878.html)