详情页标题前

阿里云云原生大数据计算服务 MaxCompute基于Policy对具备内置角色的用户进行权限管理-云淘科技

详情页1

用户被赋予MaxCompute内置的角色后,会具备内置角色相应的权限,例如用户被赋予开发角色则具备表、资源等的操作权限。但实际业务场景中,需要对此类用户的操作权限进行更精细化的管理,例如不允许删除重要表。本文基于案例为您介绍如何通过Policy对具备内置角色权限的用户进行权限管理。

前提条件

已安装MaxCompute客户端。更多安装MaxCompute客户端操作,请参见安装并配置MaxCompute客户端。

背景信息

当用户已经被赋予内置角色,且需要对用户的权限进行更精细化管理时,推荐您使用Policy权限管控机制,来解决ACL权限管控机制无法精细化管理此类权限的问题。

Policy权限管控机制是一种基于角色的权限管理方式,允许或禁止角色操作(例如读、写)项目中的对象(例如表),将角色赋予用户后,即可管控用户权限。更多Policy授权或撤销授权语法信息,请参见Policy权限管控。

Policy授权

假设RAM用户Alice已具备MaxCompute项目的开发角色,现需要禁止Alice删除以tb_开头的所有表。Alice账号名为Alice,所属阿里云账号为Bob@aliyun.com。

Policy授权操作需要由项目所有者、具备Super_Administrator或Admin角色的用户执行。Policy授权操作流程如下:

  1. 登录MaxCompute客户端。
  2. 执行create role命令创建角色delete_test。命令示例如下。
    create role delete_test;

    更多创建角色信息,请参见创建角色。

  3. 基于Policy权限管控机制,执行grant命令为角色delete_test授权,禁止删除以tb_开头的所有表。命令示例如下。
    grant drop on table tb_* to role delete_test privilegeproperties("policy" = "true", "allow"="false");

    更多Policy授权语法格式信息,请参见Policy授权(Grant)。

  4. 执行grant命令将delete_test角色赋予Alice。命令示例如下。
    grant delete_test to ram$bob@aliyun.com:Alice;  

    如果不清楚账号名称,可以在MaxCompute客户端执行list users;命令获取。更多将角色赋予用户信息,请参见使用角色为用户授权。

  5. 执行show grants命令查看Alice的权限信息。命令示例如下。
    show grants for ram$bob@aliyun.com:Alice; 

    返回结果如下。

    [roles]
    role_project_admin, delete_test                                 --Alice已被赋予delete_test角色。
    
    Authorization Type: Policy                                      --授权方式为Policy。
    [role/delete_test]
    D       projects/mcproject_name/tables/tb_*: Drop               --不允许(D表示Deny)删除项目中以tb_开头的所有表。
    [role/role_project_admin]
    A       projects/mcproject_name: *
    A       projects/mcproject_name/instances/*: *
    A       projects/mcproject_name/jobs/*: *
    A       projects/mcproject_name/offlinemodels/*: *
    A       projects/mcproject_name/packages/*: *
    A       projects/mcproject_name/registration/functions/*: *
    A       projects/mcproject_name/resources/*: *
    A       projects/mcproject_name/tables/*: *
    A       projects/mcproject_name/volumes/*: *
    
    Authorization Type: ObjectCreator
    AG      projects/mcproject_name/tables/local_test: All
    AG      projects/mcproject_name/tables/mr_multiinout_out1: All
    AG      projects/mcproject_name/tables/mr_multiinout_out2: All
    AG      projects/mcproject_name/tables/ramtest: All
    AG      projects/mcproject_name/tables/wc_in: All
    AG      projects/mcproject_name/tables/wc_in1: All
    AG      projects/mcproject_name/tables/wc_in2: All
    AG      projects/mcproject_name/tables/wc_out: All

    更多查看用户权限信息,请参见查看用户的权限。

  6. 以Alice身份登录MaxCompute客户端,执行drop table命令尝试删除以tb_开头的表。命令示例如下。
    drop table tb_test;

    返回结果如下。表明权限控制生效。如果删除成功,表明权限控制不生效,请仔细确认是否已经正确执行上述步骤。

    FAILED: Catalog Service Failed, ErrorCode: 50, Error Message: ODPS-0130013:Authorization exception - Authorization Failed [4011],
    You have NO privilege 'odps:Drop' on {acs:odps:*:projects/mcproject_name/tables/tb_test}.
    Explicitly denied by policy.
    Context ID:85efa8e9-40da-4660-bbfd-b503dfa64c0a. --->Tips: Pricipal:RAM$bob@aliyun.com:Alice; Deny by policy

撤销Policy授权

基于Policy授权中的案例,假设以tb_开头的所有表在实际业务中已不再需要,允许Alice执行删除操作。

撤销Policy授权操作需要由项目所有者、具备Super_Administrator或Admin角色的用户执行。撤销Policy授权方式如下:

  • 撤销为角色授予的权限,保留角色

    操作流程如下:

    1. 登录MaxCompute客户端。
    2. 基于Policy权限管控机制,执行revoke命令撤销Policy授权,允许delete_test角色删除以tb_开头的所有表。
      命令示例如下。

      revoke drop on table tb_* from role delete_test privilegeproperties("policy" = "true", "allow"="false");

      更多撤销Policy授权语法格式信息,请参见撤销Policy授权(Revoke)。

    3. 执行show grants命令查看Alice的权限信息。命令示例如下。
      show grants for ram$bob@aliyun.com:Alice; 

      返回结果如下。

      [roles]
      role_project_admin, delete_test                                 --保留delete_test角色。
      
      Authorization Type: Policy                                      --Policy授权信息已撤销。
      [role/role_project_admin]
      A       projects/mcproject_name: *
      A       projects/mcproject_name/instances/*: *
      A       projects/mcproject_name/jobs/*: *
      A       projects/mcproject_name/offlinemodels/*: *
      A       projects/mcproject_name/packages/*: *
      A       projects/mcproject_name/registration/functions/*: *
      A       projects/mcproject_name/resources/*: *
      A       projects/mcproject_name/tables/*: *
      A       projects/mcproject_name/volumes/*: *
      
      Authorization Type: ObjectCreator
      AG      projects/mcproject_name/tables/local_test: All
      AG      projects/mcproject_name/tables/mr_multiinout_out1: All
      AG      projects/mcproject_name/tables/mr_multiinout_out2: All
      AG      projects/mcproject_name/tables/ramtest: All
      AG      projects/mcproject_name/tables/tb_test: All
      AG      projects/mcproject_name/tables/wc_in: All
      AG      projects/mcproject_name/tables/wc_in1: All
      AG      projects/mcproject_name/tables/wc_in2: All
      AG      projects/mcproject_name/tables/wc_out: All

      更多查看用户权限信息,请参见查看用户的权限。

    4. 以Alice身份登录MaxCompute客户端,执行drop table命令尝试删除以tb_开头的表。

      命令示例如下。

      drop table tb_test;

      返回OK,表明撤销Policy授权成功。

  • 收回赋予用户的角色,如果不再需要角色,可删除角色

    操作流程如下:

    1. 登录MaxCompute客户端。
    2. 执行revoke命令收回授予Alice的delete_test角色。
      命令示例如下。

      revoke delete_test from ram$bob@aliyun.com:Alice;

      更多收回赋予用户的角色信息,请参见收回授予用户的角色。

    3. 执行show grants命令查看Alice的权限信息。命令示例如下。
      show grants for ram$bob@aliyun.com:Alice; 

      返回结果如下。

      [roles]
      role_project_admin                                           --已删除delete_test角色。
      
      Authorization Type: Policy
      [role/role_project_admin]
      A       projects/mcproject_name: *
      A       projects/mcproject_name/instances/*: *
      A       projects/mcproject_name/jobs/*: *
      A       projects/mcproject_name/offlinemodels/*: *
      A       projects/mcproject_name/packages/*: *
      A       projects/mcproject_name/registration/functions/*: *
      A       projects/mcproject_name/resources/*: *
      A       projects/mcproject_name/tables/*: *
      A       projects/mcproject_name/volumes/*: *
      
      Authorization Type: ObjectCreator
      AG      projects/mcproject_name/tables/local_test: All
      AG      projects/mcproject_name/tables/mr_multiinout_out1: All
      AG      projects/mcproject_name/tables/mr_multiinout_out2: All
      AG      projects/mcproject_name/tables/ramtest: All
      AG      projects/mcproject_name/tables/wc_in: All
      AG      projects/mcproject_name/tables/wc_in1: All
      AG      projects/mcproject_name/tables/wc_in2: All
      AG      projects/mcproject_name/tables/wc_out: All
    4. 以Alice身份登录MaxCompute客户端,执行drop table命令尝试删除以tb_开头的表。

      命令示例如下。

      drop table tb_test;

      返回OK,表明撤销Policy授权成功。

    5. (可选)执行drop role命令删除delete_test角色。
      命令示例如下。

      drop role delete_test;

      返回OK,表明角色删除成功。更多删除角色信息,请参见删除角色。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:http://www.yunxiaoer.com/157674.html

(0)
上一篇 2023年12月10日 上午1:04
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云日志服务SLS配置自定义角色权限(同账号场景)-云淘科技

    日志服务定时SQL任务运行时,将在源Logstore中执行SQL分析操作,并将分析结果保存到目标存储中。您可以授予定时SQL任务使用自定义角色来完成以上操作。如果源Logstore和目标Logstore属于同一个阿里云账号,您可参考本文档完成授权操作。定时SQL任务支持Logstore和MetricStore,本文以Logstore为例进行说明。 前提条件 …

    阿里云日志服务SLS 2023年12月10日
  • 阿里云负载均衡DeleteAccessLogsDownloadAttribute – 删除访问日志下载任务-云淘科技

    删除指定传统型负载均衡实例的访问日志。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试调试授权信息下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:…

    阿里云负载均衡 2023年12月10日
  • 阿里云对象存储OSS0003-00000301-云淘科技

    问题描述 请求被STS Token Policy所拒绝。 问题原因 该报错是获取STS Token代码中的Policy参数的授权问题导致。 问题示例 比如下面Java获取Token的Demo代码所示,其中的Policy设置代表Token的Policy权限设置,最终的Token权限是用户角色的授权和代码中Policy权限的交集: 解决方案 请结合您调用的OSS…

    2023年12月10日
  • 阿里云RDS数据库DescribeDBInstanceIpHostname – 查询实例底层ECS实例的Hostname-云淘科技

    该接口用于查询RDS SQL Server实例底层ECS实例的Hostname。 接口说明 适用引擎 RDS SQL Server 前提条件 实例系列:基础版、高可用版(2012及以上版本)、集群版 实例规格:通用型、独享型(不支持共享型) 实例创建时间:基础版实例的创建时间需在2022年09月02日或之后。实例创建时间可在基本信息页内的运行状态中查看。 相…

    阿里云数据库 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云人工智能平台PAI灵骏常见问题-云淘科技

    本文为您介绍智能计算灵骏的常见问题。 如何创建、删除集群下的节点分组? 您有两种方式为灵骏集群创建分组。 创建集群时,为集群创建分组。更多信息,请参见集群和分组配置。 创建集群完成后,为已有的集群创建分组。 在左侧导航栏,选择资源与节点>集群管理。 单击相应的集群ID/名称。 单击节点分组页签。 单击新建分组。输入节点组的分组名称、默认机型等信息。 (…

    阿里云人工智能平台PAI 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。