背景信息:

本文以如下场景为基准进行编写,如下:

  1. 用户通过DataWorks-简单模式使用MaxCompute;
  2. 用户具有DataWorks默认角色,如DataWorks开发者角色;
  3. 用户通过console提交policy配置精细化权限管控,

本案例以禁止某一些用户群体(role)可以删除以tb_开头的表为例来展开讨论。

解决方案:

通过policy进行deny某个role禁止删除以tb_开头的表,同时将属于这一部分的user都添加到该角色中。
具体如下:

  1. create role denydroprole;
  2. put policy t_policy.json on role ``denydroprole;
  3. grant ``denydroprole to user RAM$..;

t_policy.json配置文件如下:

{
"Version": "1",
"Statement": [{
"Effect": "Deny",
"Action": "odps:Drop",
"Resource": "acs:odps:*:projects/sz_mc/tables/tb_*"
}]
}

查看上述配置的子账号权限:

针对上图的说明:

  1. [roles]该子账号同事隶属与两个角色,一个是新建的denydroprole,一个是DataWorks的开发者角色role_project_dev。
  2. [Authorization Type: Policy]其中A代表Allow,D代表Deny,当两者同事存在时,deny优先原则。

是否符合预期:

(1)在DataWorks上进行测试:

居然删除成功了!!!纳尼,是我们配置策略不对嘛???

(2)再在console上进行验证:

在MaxCompute console上测试策略生效了,删除以tb_开头的表直接被拒绝并且返回错误。

这是为什么呢??为什么呢??
其实在这一块需要注意的是,在DataWorks-工作空间配置-计算引擎信息-访问身份()配置情况。

访问身份大科普:

这个要看下我们在项目管理里面的账号设置是个人账号还是系统账号。两个最大的区别如下:
dataworks这里的角色,会有两种权限,一种是dataworks界面操作权限,一种是MaxCompute数据相关权限(建表、查询等)。

然后有两种情况:

1)如果MaxCompute访问身份为 个人账号,那么角色的“MaxCompute数据相关权限”就会生效,这个子账号用其他客户端操作MaxCompute都可以有这个project的相关权限。

2)如果MaxCompute访问身份为 系统账号,那么角色的“MaxCompute数据相关权限”就不会生效,这个子账号在dataworks上提交的MaxCompute任务因为是通过系统账号提交所以只要系统账号有权限就可以。但是子账号用非dataworks的客户端提交MaxCompute就会没权限。
详情可以参考:https://yq.aliyun.com/articles/686800

对应如下逻辑示意图:

那么,到这里亲们应该明白了,为什么在DataWorks中测试发现policy策略没有生效么?是因为配置的访问身份为系统账号,那么通过DataWorks提交的Query都会用系统账号来执行(project owner拥有最大权限且并没有受到该policy限制)。

你只需要在这里设置为【个人账号】即可满足上述需求。


本文作者:祎休

原文链接

本文为云栖社区原创内容,未经允许不得转载。

在MaxCompute中配置Policy策略遇到结果不一致的问题的更多相关文章

  1. 1.4 配置备份策略(Policy)

    1.1 配置备份策略(Policy) 一个备份策略由四部分组成. Attributes(属性) Policy是否Active Policy类型 由此Policy产生的任务的优先级 使用的Storage ...

  2. 1.4 NBU配置备份策略(Policy)

    1.4 配置备份策略(Policy) 一个备份策略由四部分组成. Attributes(属性) Policy是否Active Policy类型 由此Policy产生的任务的优先级 使用的Storage ...

  3. 配置网络策略中的 NAP 条件

    TechNet 库 Windows Server Windows Server 2008 R2 und Windows Server 2008 按类别提供的 Windows Server 内容 Win ...

  4. 一劳永逸:域名支持通配符,ASP.NET Core中配置CORS更轻松

    ASP.NET Core 内置了对 CORS 的支持,使用很简单,只需先在 Startup 的 ConfigureServices() 中添加 CORS 策略: public void Configu ...

  5. 一劳永逸:域名支持通配符,ASP.NET Core中配置CORS

    ASP.NET Core 内置了对 CORS 的支持,使用很简单,只需先在 Startup 的 ConfigureServices() 中添加 CORS 策略: public void Configu ...

  6. 2008R2域控环境中 应用组策略 实现禁用USB设备使用

    本文介绍如何在Windows Server 2008 AD中禁用客户端USB端口.本文使用的系统:Windows Server 2008 R2 企业版.域功能级别:Windows Server 200 ...

  7. wstngfw中配置snort

    wstngfw中配置snort 概述 Snort是入侵检测和预防系统.它可以将检测到的网络事件记录到日志并阻止它们.Snort使用称为规则的检测签名进行操作. Snort规则可以由用户自定义创建,或者 ...

  8. 【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token

    问题描述 在APIM中配置对传入的Token进行预验证,确保传入后端被保护的API的Authorization信息正确有效,可以使用validate-jwt策略.validate-jwt 策略强制要求 ...

  9. 在工作组的环境中配置Windows 2012 R2的远程桌面服务

    在工作组的环境中配置Windows 2012 R2的远程桌面服务 How to configure Remote Desktop Service in Windows 2012 R2 workgrou ...

随机推荐

  1. pyd打包补充

    网上说的将python代码,通过Cython打包成pyd的教程挺多,好处也多,主要有两个: 1.隐藏代码 2.加速运行速度 补充两点: 1.打包脚本配置 __build__.py from distu ...

  2. PAT甲级——A1048 Find Coins

    Eva loves to collect coins from all over the universe, including some other planets like Mars. One d ...

  3. python初学小记

    使用PyCharm向世界打招呼! print (“Hello world!”) 介绍自己的基本信息的方法 name = input("name:")age = int(input( ...

  4. 通过url方式传递中文参数时出现的中文乱码问题的处理

    1.通过url将参数[会有中文的情况]传递到另外一个页面: window.location.href = "/XXXX/XXXX?searchcontent=" + Content ...

  5. centos 6.8 搭建禅道 Linux一件安装、进程自起

    禅道官网:http://www.zentao.net/ linux一键安装包内置了apache, php, mysql这些应用程序,只需要下载解压缩即可运行禅道.Linux 64位一键安装包(适用于L ...

  6. tensorflow使用CPU可以跑(运行),但是使用GPU却不能用的情况

    在跑的时候可以让加些选项: with tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement= ...

  7. 2019-10-11-VisualStudio-配置多进程调试快捷键启动项目

    title author date CreateTime categories VisualStudio 配置多进程调试快捷键启动项目 lindexi 2019-10-11 15:33:32 +080 ...

  8. 对比Model前后数据保存不同值

    1.示例代码 public class SysLogBLL<T,W> : BLLBase where T : new() { #region 比较方法 /// <summary> ...

  9. Linq 之 Where操作

    适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式 ...

  10. 弹性盒布局(flex)

    一.Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 Flex 布局. .box ...