阿里云大数据实战记录9:MaxCompute RAM 用户与授权


文章目录

  • 问题来源:maxcompute 管理员无法访问敏感列?
  • 主线问题:如何提高用户等级
  • 衍生问题1:怎么知道自己的等级和表单的等级
  • 衍生问题2:为什么 dataworks 空间管理员也没有设置等级的权限?
  • 衍生问题3:敏感列从哪里来
  • 小结

问题来源:maxcompute 管理员无法访问敏感列?

先抛一个问题:作为 maxcompute 的管理员,拥有较高的权限,为什么访问不了设置了敏感列的数据?
这个问题是我最近遇到的一个难题之一。

一开始我以为作为 maxcompute 管理员,应该可以“畅通无阻”,却没想到,敏感列迟迟无法访问,中间做了很多功夫,读了很多官方文档,最终的结论是需要 maxcompute 项目的 owner 或超级管理员给我设置用户等级(Label)或者给我管理员权限,我自己配置。

注意,以上涉及了好些概念,我不知道我这么命名是否合理,不过在我看来是合理的。如果你已经很了解阿里云大数据服务的权限问题,那可能很轻松能理解我的意思,但如果是新手,可能会有一些疑惑。没事,待我细细说来。

首先 maxcompute 和 maxcompute 项目是两个不同的东西,切忌混为一谈!
你可以把 maxcompute 看做是一个服务器,而 maxcompute 项目是一个数据库,然后敏感表、敏感列则是库里的表和表的字段。

但作为数据库的管理员不应该是可以访问数据库里的所有数据吗?这就涉及到另外一个概念:用户等级,官方定义为 User Label。由于我的账号等级是 0 级,而敏感列等级高于 0 级,等级可以高级访问低级,但是无法逆向低级访问高级,所以访问不了。

这样子理解应该就能明白为什么作为 maxcompute 的管理员,却访问不了敏感列的数据。

Label 策略是一个比较重要的参考标准,即使在数据保护伞已经设置了白名单,还是无法访问敏感数据。

主线问题:如何提高用户等级

那么,如何提高用户等级呢?

从下面这篇官方文档可以得知,提高用户等级需要通过终端执行命令来实现。

Label权限控制:https://help.aliyun.com/zh/maxcompute/user-guide/label-based-access-control?#section-4ha-2x9-h5i

修改 RAM 用户等级的命令如下:

set Label 3 to USER RAM$Bob@aliyun.com:Allen;

其中,数字3是目标等级,即要升到哪一个级别,RAM指代 RAM 用户,Bob@aliyun.com是主账号的邮箱,Allen是 RAM 用户名。如果是给主账号调整,则把RAM$Bob@aliyun.com:Allen改为ALIYUN$Bob@aliyun.com

执行命令的地方有多个(相关链接可以再文档中查找到):

  • MaxCompute客户端
  • 使用SQL分析连接
  • MaxCompute Studio
  • 使用DataWorks连接

这里以 MaxCompute 为例,做个示例,比如我的账号是:xindata,主账号是:123456@qq.com,目标等级是 1 级,那么命令如下:

set Label 1 to USER RAM$123456@qq.com:xindata;

浏览器打开 maxcompute 控制台:https://maxcompute.console.aliyun.com/,然后点击下图的【命令行】,这个才是 ODPS CMD,上面的那个是云命令行,使用云命令行也可以,不过需要切换下路径,进入 ODPS CMD,命令为cloudshell-odpscmd -p "项目名称",一开始搞错了,点了云命令行输入以上命令一直报错说命令不存在,哈哈哈。

image.png

点击命令行之后选择对应的项目,便可以开启一个窗口,输入以上命令,返回结果说我没有安全操作。

Authorization Failed [4003], You have NO privilege to do the PROJECT SECURITY OPERATION for {acs:odps:*:projects/xxx/authorization/users}.

image.png

通过搜索错误提示,找到了一篇解决文档:https://help.aliyun.com/zh/maxcompute/user-guide/odps-0420095?#pAFKK
image.png

从解决文档提示看,需要授权,授权方式有两种:

  • 可以是项目的 admin 或者 super_administrator 角色
  • 也可以是项目管理类权限一览表。

表单提供了一种方法,可以通过新增策略动作给用户授权,我所需要的动作是SetDataLabel

image.png
于是编辑了相关的权限策略:

{"Version": "1","Statement": [{"Effect": "Allow","Action": ["odps:SetDataLabel"],"Resource": [*  // 开始使用:"acs:odps:*:projects/xxx/authorization/users" 但提示格式有误,改 *],"Condition": {}}]
}

但是这个策略放哪里呢?

一开始我不清楚 maxcompute 和 maxcompute 项目的差异的时候,我在 RAM 控制台的权限策略中新建了一个策略进行授权,可想而知,这是无效的!其实在 RAM 控制台,我已经是有了 maxcompute 的管理权限,所以并不需要再一次这么配置。

实际上配置的位置是在 maxcompute 项目中,具体路径是在 maxcompute 控制台的项目管理中,选择对应的项目列表,点击右侧的管理。在项目详情中,点击角色权限,如果没有权限,会有报错提示。由于我没有权限,所以是空的(报错已关闭)。

参考通过控制台(新版)管理用户权限:https://help.aliyun.com/zh/maxcompute/user-guide/manage-user-permissions-in-the-maxcompute-console

image.png

所以,第二条路是走不通的,没有管理权限,根本无法进入配置用户权限。

结论就是:只能由项目的 admin 或者 super_administrator 角色处理了。

衍生问题1:怎么知道自己的等级和表单的等级

这个其实用表的时候,如果有权限问题,会报错提示:

The sensitive label of column ‘xxx’ is 1, but your effective label from package is 0.

image.png

如果想直接查询,也可以通过以下命令查询:

# 查看自己的等级信息,第一条是当前用户,第二条是指定用户
show label grants;
show label grants for RAM$123456@qq.com:xindata;
# 查看表的等级信息,注意,如果提示没有 odps:describe 权限,去安全中心申请表单权限,获取 describe 权限。
desc 项目名.表名称;

衍生问题2:为什么 dataworks 空间管理员也没有设置等级的权限?

DataWorks 是阿里云提供的一站式大数据开发治理平台,可以在 DataWorks 上进行 MaxCompute 作业开发、周期性调度、作业运维、数据治理等一站式数据开发治理操作。可在 DataWorks 控制台创建 DataWorks 工作空间,并在这过程中直接创建并绑定 MaxCompute 项目,后续即可在 DataWorks 工作空间中开发 MaxCompute 作业。
DataWorks 和 maxcompute 二者的权限有相通之处,但也有不同点,具体差异如下:

参考MaxCompute和DataWorks的权限关系:https://help.aliyun.com/zh/maxcompute/user-guide/permissions?#section-u7s-ys0-vv0



可以看到 MaxCompute 的管理员角色不能通过 DataWorks 设置,即使是 DataWorks 空间管理员,再 MaxCompute 的映射也只是一个 Role_Project_Admin 角色,对应的权限仅仅是 当前项目下project/table/fuction/resource/instance/job的所有权限,以及 package 的 read 权限,并非管理员。
所以 DataWorks 空间管理员也没有设置等级的权限。

衍生问题3:敏感列从哪里来

首先是项目的设置,在 MaxCompute 项目的详情中,我们可以看到项目的配置信息,里面会限制一栏:启动Label访问控制,如果启动,就可以配置敏感列。
敏感列的配置地方在数据保护伞,可以在 DataWorks 首页打开全部产品找到它。

image.png

然后在【敏感数据识别】中新增规则识别敏感数据,在此之前可能需要先在【数据分类分级】中新增分类和分级的类别和层数。

image.png

配置好之后,还可以在【用户组管理】添加用户组,并在【数据脱敏管理】中新增白名单,但这并不能覆盖用户等级的限制,低等级依旧无法访问高等级的数据。

小结

本次探索过程,发现了一个问题,阿里云产品,可能每一个都会有自己的控制台,有自己的一套权限管理,配置权限前,需要先思考,这个权限是在哪一个平台上使用,然后针对性去对应的文档和对应的控制台中寻找解决方案。

就如本次,处理的内容其实是 MaxCompute 项目级别的问题,需要到项目中去寻找解决方案,一开始我配置了 RAM 用户相关权限,也在数据保护伞和 DataWorks 用户管理上面也尝试了解决方案,不过都是无用功,无法最终解决问题,只是更加清晰地了解了阿里云的权限管理逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/120417.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模板和STL简介

模板和STL简介 一、泛型编程1、通用交换函数的实现(1)代码(2)总结 2、泛型编程的概念3、模板的概念 二、函数模板1、概念2、格式3、代码4、原理 三、函数模板实例化1、概念2、隐式实例化(1)概念&#xff08…

[unity]三角形顶点顺序

序 详见官方文档:Unity - Manual: Mesh data (unity3d.com) Topology:拓扑结构 翻译: 拓扑描述网格具有的面类型。 网格的拓扑定义了索引缓冲区的结构,索引缓冲区又描述了顶点位置如何组合成面。每种类型的拓扑都使用索引数组中…

医院安全(不良)事件上报系统源码 不良事件报告平台源码 前后端分离,支持二开

医院安全(不良)事件上报系统源码 系统定义: 规范医院安全(不良)事件的主动报告,增强风险防范意识,及时发现医院不良事件和安全隐患,将获取的医院安全信息进行分析反馈,…

Nacos 开源版的使用测评

文章目录 一、Nacos的使用二、Nacos和Eureka在性能、功能、控制台体验、上下游生态和社区体验的对比:三、记使使用Nacos中容易犯的错误四、对Nacos开源提出的一些需求 一、Nacos的使用 这里配置mysql的连接方式,spring.datasource.platformmysql是老版本…

Web前端开发概述

Web(World Wide Web,全球广域网)是指一种基于互联网的信息系统,通过超文本链接将全球各地的文档、图像、视频等资源相互关联起来,并通过Web浏览器进行交互浏览和访问。Web的发展使得人们可以方便地获取和共享各种类型的…

规避【虚拟专线技术】使用风险实现业务系统安全

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 一、技战法描述 VPN是利用Internet等公共网络基础设施,通过隧道加密通信技 术,为用…

js+vue,前端关于页面滚动让头部菜单淡入淡出实现原理

今天遇到个需求:我这里借用小米商城的详情页做个比喻吧。 刚开始其商品详情页是这样的: 当滚动到一定高度时,是这样的: 可以看到当滚动到轮播图底下的时候,详情页的菜单完全显现出来。 以下上代码: HTML…

大数据组件-Flink环境搭建

🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持…

电脑硬盘数据恢复一般需要收费多少钱

随着电子信息时代的发展,个人和企业对电脑硬盘中存储的数据越发重视。然而,由于各种原因,硬盘数据丢失的情况屡见不鲜。如果您正陷入这样的困境,您可能会好奇恢复失去的数据需要花费多少钱。本文将为您介绍电脑硬盘数据恢复的一般…

【内网穿透】使用Nodejs搭建简单的HTTP服务器 ,并实现公网远程访问

目录 前言 1.安装Node.js环境 2.创建node.js服务 3. 访问node.js 服务 4.内网穿透 4.1 安装配置cpolar内网穿透 4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation…

hadoop3.3.1单机版环境搭建详细流程记录

1、在centos7中创建必要的目录; 2、上传JDK安装包到tools目录; 3、解压JDK到/opt/server/目录; tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt/server/ 4、“vim:未找到命令”的解决办法; 安装vim即可; …

Vue-router路由

配置路由 相当于SpringMVC的Controller 路径然后,跳转到对应的组件 一键生成前端项目文档

手写Mybatis:第7章-SQL执行器的定义和实现

文章目录 一、目标:SQL执行的定义和实现二、设计:SQL执行的定义和实现三、实现:SQL执行的定义和实现3.1 工程结构3.2 SQL执行实现的关系图3.3 执行器的定义和实现3.3.1 Executor 接口3.3.2 BaseExecutor 抽象基类3.3.3 SimpleExecutor 简单执…

机器学习---预剪枝、后剪枝(REP、CCP、PEP、)

1. 为什么要进行剪枝 横轴表示在决策树创建过程中树的结点总数,纵轴表示决策树的预测精度。 实线显示的是决策树 在训练集上的精度,虚线显示的则是在⼀个独⽴的测试集上测量出来的精度。 随着树的增⻓,在 训练样集上的精度是单调上升的&…

【前端demo】动态赋值CSS

文章目录 效果过程html实现oninput与onchange事件统一配置CSS 代码HTMLCSSJS 其他demo 效果 动态显示CSS样式,由:root统一配置。 效果预览:https://codepen.io/karshey/pen/BavLrwy 参考: Dynamic CSS Variables(codepen.io) 漫谈document…

Vue 2 nextTick方法|异步更新|事件循环

1 nextTick的用处 vm.$netTick的作用是将回调延迟到下次DOM更新周期之后执行。 它接受一个回调函数作为参数。 其实&#xff0c;在我们更新数据状态后&#xff0c;是不会立马渲染的&#xff0c;你不能即刻获取到新的DOM&#xff1a; <!DOCTYPE html> <html><…

NPM 常用命令(三)

目录 1、npm compltion 1.1 描述 2、npm config 2.1 常用命令 2.2 描述 set get list delete edit fix 2.3 配置 json global editor location long 3、npm dedupe 3.1 描述 3.2 配置 4、npm deprecate 4.1 命令使用 4.2 描述 4.3 配置 registry ot…

CentOS7 Hadoop3.3.0 安装与配置

一、安装JDK 1、创建文件夹tools和training用于存放压缩包和解压使用&#xff0c;tools存放压缩包&#xff0c;training用于解压后安装jdk和hadoop的路径。 1&#xff09;回到路径为 / 的位置 cd /2) 创建 tools 和 training mkdir toolsmkdir training3) 进入tools文件夹 …

RHCA之路---EX280(4)

RHCA之路—EX280(4) 1. 题目 Use the S2I functionality of your OpenShift instance to build an application in the rome project Use the Git repository at http://services.lab.example.com/php-helloworld for the application source Use the Docker image labeled re…

Three.js开发中遇到的常见问题总结和性能优化

关于Three.js开发中遇到的一些问题总结 1.加载外部模型文件无法在场景中显示: (1) 确保当前文件内容是否能被读取&#xff0c;在Javascript的console中查找错误&#xff0c;并确定当你调用.load()的时候&#xff0c;使用了onError回调函数来输出结果, 如果err 输出则表示当前…