阿里云大数据实战记录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 "项目名称"
,一开始搞错了,点了云命令行输入以上命令一直报错说命令不存在,哈哈哈。
点击命令行之后选择对应的项目,便可以开启一个窗口,输入以上命令,返回结果说我没有安全操作。
Authorization Failed [4003], You have NO privilege to do the PROJECT SECURITY OPERATION for {acs:odps:*:projects/xxx/authorization/users}.
通过搜索错误提示,找到了一篇解决文档:https://help.aliyun.com/zh/maxcompute/user-guide/odps-0420095?#pAFKK
从解决文档提示看,需要授权,授权方式有两种:
- 可以是项目的 admin 或者 super_administrator 角色
- 也可以是项目管理类权限一览表。
表单提供了一种方法,可以通过新增策略动作给用户授权,我所需要的动作是SetDataLabel
。
于是编辑了相关的权限策略:
{"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
所以,第二条路是走不通的,没有管理权限,根本无法进入配置用户权限。
结论就是:只能由项目的 admin 或者 super_administrator 角色处理了。
衍生问题1:怎么知道自己的等级和表单的等级
这个其实用表的时候,如果有权限问题,会报错提示:
The sensitive label of column ‘xxx’ is 1, but your effective label from package is 0.
如果想直接查询,也可以通过以下命令查询:
# 查看自己的等级信息,第一条是当前用户,第二条是指定用户
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 首页打开全部产品找到它。
然后在【敏感数据识别】中新增规则识别敏感数据,在此之前可能需要先在【数据分类分级】中新增分类和分级的类别和层数。
配置好之后,还可以在【用户组管理】添加用户组,并在【数据脱敏管理】中新增白名单,但这并不能覆盖用户等级的限制,低等级依旧无法访问高等级的数据。
小结
本次探索过程,发现了一个问题,阿里云产品,可能每一个都会有自己的控制台,有自己的一套权限管理,配置权限前,需要先思考,这个权限是在哪一个平台上使用,然后针对性去对应的文档和对应的控制台中寻找解决方案。
就如本次,处理的内容其实是 MaxCompute 项目级别的问题,需要到项目中去寻找解决方案,一开始我配置了 RAM 用户相关权限,也在数据保护伞和 DataWorks 用户管理上面也尝试了解决方案,不过都是无用功,无法最终解决问题,只是更加清晰地了解了阿里云的权限管理逻辑。
相关文章:
阿里云大数据实战记录9:MaxCompute RAM 用户与授权
文章目录 问题来源:maxcompute 管理员无法访问敏感列?主线问题:如何提高用户等级衍生问题1:怎么知道自己的等级和表单的等级衍生问题2:为什么 dataworks 空间管理员也没有设置等级的权限?衍生问题3…...
JavaScript基础07——变量拓展-数组
哈喽,大家好,我是雷工! 每天打卡学习一点点,今天继续学习JavaScript基础知识,以下是学习笔记。 一、数组的基本介绍 数组 (Array)——一种将一组数据存储在单个变量名下的优雅方式。 数组的作用和变量一样…...
go-zerogo web集成redis实战
前言 上一篇:go-zero&go web集成JWT和cobra命令行工具实战 从零开始基于go-zero搭建go web项目实战-03集成redis实战 源码仓库地址 源码 https://gitee.com/li_zheng/treasure-box golang redis 客户端 Go-Redis 地址: GitHub: https://github.…...
油猴浏览器(安卓)
油猴浏览器页面设计非常简约,在主页上还为小伙伴们推荐了很多的常用书签,像油猴脚本,常用导航,新闻,热搜类的,快递查询等等,可以设置快捷访问,把常用到的一些网站设置在主页上。 浏览…...
Redis 6.0多线程模型比单线程优化在哪里了
推荐阅读 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 史上最全文档AI绘画stablediffusion资料分享 AI绘画关于SD,MJ,GPT,SDXL百科全书 AI绘画 stable…...
[hello,world]这个如何将[ ] 去掉
[hello,world]这个如何将[ ] 去掉? 你可以使用编程语言中的字符串处理函数来去掉方括号。以下是一个示例代码,使用Python的strip()函数去掉方括号: text "[hello,world]" text text.strip("[]") print(text)输出为&a…...
机器学习_个人笔记_周志华(更新中......)
第1章 绪论 1.1 引言 形成优秀的心理表征,自然能成为领域内的专家。 系统1 & 系统2。 机器学习:致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。主要研究计算机从数据中产生model的算法,即“learning algori…...
嵌入式Linux驱动开发(LCD屏幕专题)(二)
一、结合APP分析LCD驱动程序 1、open app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0 -------------------------------------------------------------- kernel:fb_open // fbmem.cstruct fb_info *info;info get_fb_info(fbidx);if (info->fbop…...
React的jsx的用法
React是一个流行的JavaScript库,用于构建用户界面。它使用一种名为JSX的语法扩展来描述组件的结构和样式。JSX是React的核心语言之一,它允许开发人员在JavaScript中编写HTML,从而使代码更加简洁和易于阅读。 JSX是一种语法扩展,它…...
Ei Scopus检索 | 2024年第四届能源与环境工程国际会议(CoEEE 2024)
会议简介 Brief Introduction 2024年第四届能源与环境工程国际会议(CoEEE 2024) 会议时间:2023年5月22日-24日 召开地点:意大利米兰 大会官网:www.coeee.org CoEEE 2024将围绕“能源与环境工程”的最新研究领域而展开,为研究人员、…...
习题练习 C语言(暑期第四弹)
自我小提升! 前言一、数组二、指针运算三、统计每个月兔子的总数四、双指针的应用五、判断指针六、珠玑妙算七、两数之和八、数组下标九、指针十、寻找峰值十一、二级指针十二、大端小端十三、无符号参数十四、数对十五、截取字符串总结 前言 重要的事说三遍&#…...
【docker快速部署微服务若依管理系统(RuoYi-Cloud)】
工作原因,需要一个比较完整的开源项目测试本公司产品。偶然发现RuoYi-Cloud非常适合,它有足够多的中间件,而且官方提供docker安装,但我本人在安装过程中遇到了很多坑,在这里记录一下防止下次会再次遇到。 项目地址 ht…...
面试求职-简历编写技巧
没有高水平简历 只有高匹配的简历 试问一下:如果一个非常牛逼的软件工程的硕士,投递市场营销岗位,结果会是什么样呢? 这位同学大概率没办法通过简历。 不是因为他不够优秀,而是因为简历和岗位不够匹配。 在公司的招…...
云原生安全性:构建可信任的云应用的最佳实践
文章目录 云原生安全性的重要性1. 数据隐私2. 恶意攻击3. 合规性要求4. 业务连续性 构建可信任的云应用的最佳实践1. 安全开发2. 身份验证与授权3. 容器安全性4. 监控与审计5. 持续集成与持续交付(CI/CD)6. 安全培训和教育 未来趋势:服务网格…...
第一章 数据库SQL-Server(及安装管理详细)
❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 21 世纪,人类迈入了“信息爆炸时代”,…...
chrome extension无法获取window对象
背景见上一篇博客修改网页内容的方法 上一篇博客之后,我要修改的网页有一个新改版,然后有个数据存在了window中,我直接在js中使用window.xxx发现无法获取。所以有本文。 https://juejin.cn/post/7145749643316428830 https://onelinerhub.com…...
在linux虚拟机上安装docker(我的实践)
参考文章: https://blog.csdn.net/qq_29479041/article/details/82659218 步骤: 1.安装docker 参考文章: https://blog.csdn.net/qq_29479041/article/details/82659218 https://blog.csdn.net/qq_38345468/article/details/110128659 2.…...
Spring之事务开发
什么是事务? 事务是指数据库管理系统中的一个执行单位或一个逻辑工作单元,它由一个或多个数据库操作序列组成。事务具有以下四个特性,通常被称为ACID特性: 原子性(Atomicity):事务是一个不可分…...
干了三年的功能测试,让我女朋友跑了,太难受了...
简单概括一下 先说一下自己的情况,普通本科,19年通过校招进入深圳某软件公司,干了3年多的功能测试,21年的那会,因为大环境不好,我整个人心惊胆战的,怕自己卷铺盖走人了,我感觉自己不…...
JavaScript函数的使用
前言 程序中的foo、bar、baz 在学习编程的过程中,你可能会经常看到foo、bar、baz这些名词: 它们通常被用来作为函数、变量、文件的名词;目前已经编程了计算机编程的术语一部分;但是它们本身并没有特别的用途和意义;…...
【算法】Java-使用数组模拟单向链表,双向链表
目录 试题1:实现一个单链表,并实现以下功能: 试题2:实现一个双链表,并实现以下功能 思路总结: 什么情况下可能涉及到用数组实现链表呢? 在学习时了解到了可以用数组模拟链表,使其…...
Nessus简单介绍与安装
Nessus简单介绍与安装 1.Nessus简介 Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥…...
【每天一道算法题】day2-认识时间复杂度
认识时间复杂度: O:读作big O,在数学上指的是上限的意思 常数时间的操作 一个操作如果和样本的数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的一…...
前端报错合集
error Component name “index“ should always be multi-word vue/multi-word-component-names 的解决办法 原因组件命名是 没有采用驼峰 error Component name “index“ should always be multi-word vue/multi-word-component-names 的解决办法_error component name &qu…...
Milvus以及Web UI 安装
向量数据库懂的都懂 版本数据 [rootiZ7xv7q4im4c48qen2do2bZ project]# cat /etc/redhat-release CentOS Stream release 9 [rootiZ7xv7q4im4c48qen2do2bZ project]# docker version Client: Docker Engine - CommunityVersion: 24.0.5API version: 1.43Go v…...
Go for循环中的defer
背景 写个后台程序,定时抓取服务器指标,代码逻辑如下,使用一段时间后内存不断增加 func CollectInfo() {for {// 获取服务器信息代码// ...............resp, err : http.Post("http://server", "application/json", str…...
创建开机自启的脚本
在启动许多ros节点时有多种方式,我推荐使用launch来启动所有的节点,这也是一种规范的方式。以后会慢慢向这个方向靠。 除此之外还可以通过创建的脚本来启动: 脚本位置不限,只需要: sudo gedit xxx.sh在里面添加相应的…...
学生信息系统(python实现)
#codingutf-8 import os.path filenamestudent.txtdef menm():#菜单界面print(学生管理系统)print(-----------------------------功能菜单-----------------------------)print(\t\t\t\t\t\t1.录入学生信息)print(\t\t\t\t\t\t2.查找学生信息)print(\t\t\t\t\t\t3.删除学生信息…...
管理类联考——数学——汇总篇——知识点突破——数据分析——1. 计数原理——排列组合——公式
排列组合 排列与组合的推导: 从n个不同的元素中取出m(m≤n)个元素做排列为 A n m A_n^m An...
C#,《小白学程序》第十六课:随机数(Random)第三,正态分布的随机数的计算方法与代码
1 随机数的问题 用 C# Random 类生成的随机数是平均分布的。也就是各数据段的出现的次数差不多。彩票号码属于这种随机数。 而很多很多常见的随机数,比如:成绩,却是符合正态分布的。 因而很多时候需要生成符合正态分布规律的随机数。 2 文…...
佛山网站建设方案/百度广告推广怎么做
1057 数零壹 (20 分) 题目链接 算法分析 从字符串第一位开始到最后一位,如果是小写或大写的字母,依次更新sum的值,然后转化为二进制数,统计0和1的个数 代码实现 #include<bits/stdc.h> using namespace std;int main()…...
南昌网站建设推广专家/企业seo顾问
最近开始学习php,安装了wamp集成环境,mysql可以使用phpMyAdmin打开,但是想要使用mysql 控制台却报错:MySQL服务无法启动(2003 - Cant connect to MySQL server on‘localhost (10061). 在网上搜了很多方法经验包括&…...
秦淮网站建设/提高百度快速排名
01-求一个整数存储在内存中的二进制中1的个数 法一:循环遍历 问题引入以在十进制中,求某一个数字n中的某个数字m的数量,来引入二进制中求1的个数。 要求一个十进制数n中某一位数字m的个数,只需要让n对10取模与m比较、再让n n /…...
做app模板下载网站/seo查询百科
定义和用法 <audio> 标签定义声音,比如音乐或其他音频流。 示例代码:<audio src"someaudio.wav">您的浏览器不支持 audio 标签。</audio> 提示和注释 提示:可以在开始标签和结束标签之间放置文本内容,这样老的浏…...
网站内的链接怎么做的/5118
postgresql按照日期范围进行查询 按照日期查询通常有好几种方法: 按照日期范围查询有好几种方法,日期字段类型一般为: Timestamp without timezone 方法一: select * from user_info where create_date > 2015-07-01 and c…...
江苏省建设协会网站/竞彩足球最新比赛
下午要用Matlab做图像处理,下载了Matlab 2016b的安装包之后,开始安装,“sudo ./install” 无论如何都失败,找了一些文章,方法都有问题。运行install之后,Terminal中闪过以下几个代码之后:Prepar…...