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

news2024/11/18 15:46:59


文章目录

  • 问题来源: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.coloradmin.cn/o/972101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过IP地址和子网掩码与运算计算相关地址

通过IP地址和子网掩码与运算计算相关地址 知道ip地址和子网掩码后可以算出: 1、 网络地址 2、 广播地址 3、 地址范围 4、 本网有几台主机 例1:下面例子IP地址为1921681005 子网掩码是2552552550。算出网络地址、广播地址、地址范围、主机数。 一&…

Python 操作 Excel

之前看过一篇文章,说一个工作多年的老员工,处理数据时只会用复制粘贴到 Excel ,天天加班工作还完不成,后来公司就招了一个会 Python 的新人,结果分分钟就处理完成。所以工作中大家经常会使用 Excel 去处理以及展示数据…

SSRF漏洞复现(redis)

文章目录 启动环境漏洞复现探测存活IP和端口服务计划任务反弹shell 前提条件: 1.安装docker docker pull medicean/vulapps:j_joomla_22.安装docker-compose docker run -d -p 8000:80 medicean/vulapps:j_joomla_23.下载vulhub 安装环境已完成,故此省略…

C头文件只引用一次的方法

我们自己在写头文件的时候,如果不加入一些独特的方法,有可能造成重复引用的可能,造成代码的冗余,占用空间大,降低效率。所以要保证只引用一次就变的非常重要,此处介绍两种方法: 1、#pragma onc…

窗口函数-分组排序:row_number()、rank() 、dense_rank()、ntile()

窗口函数语法结构: 分析函数() over(partition by 分组列名 order by 排序列名 rows between 开始位置 and 结束位置) 开窗函数和聚合函数区别: 聚合函数会对一组值进行计算并返回一个值,常见的比如sum(),count(),ma…

在Cisco设备上配置接口速度和双工

默认情况下,思科交换机将自动协商速度和双工设置。将设备(交换机、路由器或工作站)连接到 Cisco 交换机上的端口时,将发生协商过程,设备将就传输参数达成一致,当今的大多数网络适配器都支持此功能。 在本文…

第三章 USB应用笔记之USB鼠标(以STM32 hal库为例)

第三章 USB应用笔记之USB鼠标(以STM32 hal库为例) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 第三章 USB应用笔记之USB鼠标(以STM32 hal库为例)前言一、STM32 U…

连接全球金融网络 探索SCF公链的多元价值

在当今数字时代,区块链技术正迅速演变成为驱动各行业创新的重要引擎。公链作为区块链技术的核心之一,正在逐步展现其在金融和技术领域的巨大潜力。与此同时,SCF金融公链作为这一领域的新秀,正以其独特的优势和前瞻性的技术构建起一…

Rasa 多轮对话机器人

Rasa 开源机器人 目录 Rasa 开源机器人 1. 学习资料 2. Rasa 安装 2.1. rasa 简介 2.2. Rasa系统结构 ​编辑 2.3. 项目的基本流程 ​编辑 2.4. Rasa安装 2.5. 组件介绍 3. Rasa NLU 3.0. NLU 推理输出格式 3.1. 训练数据 ./data/nlu.yml 数据文件 3.2. ./confi…

使用 Amazon SageMaker 微调和部署 ChatGLM 模型

本篇文章主要介绍如何使用 Amazon SageMaker 进行 ChatGLM 模型部署和微调的示例。 这个示例主要包括: ChatGLM 总体介绍ChatGLM 微调介绍ChatGLM 环境设置ChatGLM 微调训练ChatGLM 部署测试 前言 大语言模型是一种基于深度学习技术的人工智能模型,可以追溯到早期的…

Python使用pymysql三方库操作 mysql数据库

为什么要使用pymysql 在使用Python工作与学习中难免会使用到mysql数据库,使用pymysql三方库可以让我们轻松的对数据库的记录进行操作,如创建、修改,删除表,如增加、删除、修改、查询数据表中的记录,下边记录一下pymysq…

Hive 表注释乱码解决

文章目录 出现原因MySQL 字符集修改调整元数据库字符集测试 出现原因 一般 Hive 的元数据信息都存储在 MySQL 中,但 MySQL 数据库中的 character_set_server 和 character_set_database 参数,默认都为 latin1 字符集,这两个参数决定了服务器…

如何利用客户旅程打造好的用户体验?

在当今竞争激烈的市场中,提供卓越的用户体验已经成为企业脱颖而出的关键因素之一。客户旅程是实现出色用户体验的有力工具之一,而HubSpot的客户旅程规划功能为企业提供了强大的支持,帮助他们更好地理解、管理和改善客户的互动过程。今天运营坛…

【ubuntu22.04 文件管理器nautilus配置默认终端为alacritty】

前言 ubuntu默认的终端不能通过设置里的默认应用程序配置nautilus是ubuntu自带的文件管理器,包管理器里面只有nautilus-extension-gnome-terminal而没有提供大多终端update-alternatives工具可以修改系统的默认终端(ctrl-alt-t),但对nautilus文件管理器…

Slint学习文档

Slint学习文档 Slint Learn如何学习本文档学习顺序标志说明 Slint With VSCodeSlint With Rust依赖👎定义宏 Slint与Rust分离1.添加编译依赖(slint-build)2.编写slint文件3.编写build.rs4.编写main.rs 普通组件主窗体Windowexample 文本Texte…

MySQL - Left Join和Inner Join的效率对比,以及优化

最近在写代码的时候,遇到了需要多表连接的一个问题,初始sql类似于: select * from a left join b on a.id b.aid left join c on c.bid b.id left join d on d.cid c.id 这样的多个left join组合,总觉得这种写法是有问题…

借助AI分析哥斯拉木马原理与Tomcat回显链路挖掘

前言 本次分析使用了ChatGPT进行辅助分析&#xff0c;大大提升了工作效率&#xff0c;很快就分析出木马的工作流程和构造出利用方式。 分析 首先对该木马进行格式化,以增强代码的可读性。得到如下代码 <jsp:root xmlns:jsp"http://java.sun.com/JSP/Page" vers…

mac下配置JDK环境

一、下载安装 下载地址&#xff1a;Java Downloads | Oracle&#xff0c;选择适用于Mac OS的JDK版本&#xff0c;点击下载即可。 下载完之后&#xff0c;直接安装&#xff1a; 安装过程非常简单&#xff0c;按“继续”按钮一直下一步即可。 二、配置环境变量 上一步骤&#x…

建筑安全运行监测,预防建筑潜在风险

建筑物是人们生活和工作的场所&#xff0c;其安全性直接关系到人们的生命财产安全。建筑安全运行监测旨在及时发现和识别潜在的安全隐患&#xff0c;以确保建筑物的稳定运行&#xff0c;其重要性不可低估。 建筑安全运行监测可以帮助及早发现结构问题。随着时间的推移&#xff…

【模方ModelFun】实景三维建模和修模4.0.7最新版安装包以及图文安装教程

模方ModelFun 具有多种功能&#xff0c;旨在帮助用户进行实景三维建模和修模。以下是一些主要功能的简要介绍&#xff1a; 实景三维建模&#xff1a;【模方ModelFun】提供了自动化的实景三维重建功能&#xff0c;可以从实景图像中提取几何形状和纹理信息&#xff0c;生成高质量…