数据权限概述

数据权限支持配置数据目录、数据库、数据表、数据列、函数五种维度细粒度权限。下面针对不同的数据操作,对所需要配置的权限进行说明,并对Owner权限的定义和权限鉴定方式进行详细说明。

权限设置

权限设置主要功能是为数据目录(Catalog)开启和关闭权限,详情请参见权限设置

背景信息

配置权限时需要包含如下三个要素。

权限要素

说明

主体

被授予权限的用户或角色。用户必须为阿里云RAM用户或RAM Role;角色为数据湖角色管理中创建的角色。

主体具有如下几种格式:

  • 阿里云主账户:acs:ram::<阿里云账号uid>:root,例如acs:ram::123456:root

  • 阿里云RAM子账户:acs:ram::<阿里云账号uid>:user/<RAM用户名>,例如acs:ram::123456:user/user_a

  • 阿里云RAM Role:acs:ram::<阿里云账号uid>:role/<RAM Role名称>,例如acs:ram::123456:role/role_a

资源

数据湖中管理的资源:

  • 数据目录(Catalog):数据湖元数据最上层实体,它可以包含多个数据库。

  • 库(Database):数据湖元数据中管理的库。

  • 表(Table):数据湖元数据中管理的表。

  • 列(Column):数据湖元数据中管理的列。

  • 函数(Function):数据湖元数据中管理的函数。

访问资源的方式

访问资源的方式与资源类型有关,不同资源类型支持的访问方式各不相同。如库支持CreateTable、List等权限,表支持Select、Update等权限,列只支持Select权限。

权限总览

数据湖权限支持的权限列表如下:

资源

访问资源的方式

说明

Catalog

Alter

修改Catalog。例如,alter catalog <catalog_name> set ...等。

Drop

删除Catalog。例如,drop catalog <catalog_name>

Grant

对Catalog进行授权操作。例如,grant drop on catalog <catalog_name> to ...

Create Database

在Catalog中创建Database。例如,create database <catalog_name>.<database_name> ...

Database

Describe

查看Database的元数据信息或切换Database。例如desc database <database_name>use <database_name>等。

Alter

修改Database。例如alter database <database_name> set location '<path>'等。

Drop

删除Database。例如drop database <database>

Create Table

在Database中创建Table。例如create table <database_name>.<table_name> ...

List

查看Database下资源列表。例如show tables

重要
  • E-MapReduce Spark引擎不支持List权限的鉴定。

  • 资源列表暂不支持根据用户权限进行过滤展示,所有资源都将显示出来。

Table

Describe

查看Table的元数据信息。例如desc formatted <table_name>等。

Alter

修改Table。例如alter table <table_name> add columns ...alter table <table_name> drop partition ...等。

Drop

删除Table。例如drop table <table_name>

Select

查看Table的数据。例如select * from <table_name>

Update

更新Table的数据。例如insert into table <table_name>delete from <table_name> where ...等。

Column

Select

查看Column的数据。例如select <column_name1>, <column_name2> from <table_name>

Function

Describe

查看Function的元数据信息。

Alter

修改Function的信息。

Drop

删除Function。

Execute

使用或执行Function。

Owner权限

Owner定义

资源(Resource)的创建者称为资源的Owner。您可以在数据库或数据表基本信息中,查看到数据库或数据表的Owner信息。

image

image

  • 使用阿里云RAM用户在数据湖元数据管理中新建数据库或数据表时,该RAM用户即为数据库或数据表资源的Owner,Owner以用户对应的主体格式表示。

  • 在E-MapReduce引擎中使用Linux或LDAP用户执行SQL命令创建资源时,该Linux或LDAP用户为资源的Owner。

  • Databricks引擎暂不支持资源Owner。

重要
  • 为了打通阿里云RAM用户与开源大数据用户体系,数据湖权限定义了当RAM用户与Linux或LDAP用户具有相同用户名时,两者作为Owner是等价的,例如Owner=acs:ram::<阿里云账号uid>:user/user_a与Owner=user_a等价。

  • 阿里云主账户作为资源Owner时,没有等价的Linux或LDAP用户。需要特别注意的是Owner=acs:ram::<阿里云账号uid>:root与Owner=root不等价。

  • 您可以在数据湖构建控制台的数据权限 > 用户中单击RAM用户查看用户名信息。在使用E-MapReduce引擎时,建议使用管理用户添加与RAM用户同名的Linux或LDAP用户。

Owner权限的定义

资源Owner拥有对应资源的所有权限。例如数据库的Owner为RAM用户user_a时,user_a能够有权限执行Alter Database、Drop Database等操作。

重要

资源的Owner权限不能向子资源扩展,例如数据库的Owner只能获取数据库的Owner权限,没有该数据库下所有数据表的Owner权限。

Owner权限的鉴定

  • 使用阿里云RAM用户登录数据湖构建控制台时,用户身份为RAM用户,可以获取当前用户身份(或等价身份)相应资源的Owner权限。

  • 使用E-MapReduce引擎访问数据湖元数据资源时,用户身份为Linux或LDAP用户,可以获取当前用户身份(或等价身份)相应资源的Owner权限。

  • Databricks引擎暂不支持Owner权限的鉴定。

支持的计算引擎

支持E-MapReduce产品,支持信息如下:

EMR 主版本

Hive

Spark

Presto

Impala

EMR 3.x版本

EMR-3.39.0及以前版本

不支持

不支持

不支持

不支持

EMR-3.40.0

支持

支持

支持

不支持

EMR-3.41.0 至 EMR-3.43.1

支持

支持

不支持

不支持

EMR-3.44.0 及以上版本(规划中)

支持

支持

支持

支持

EMR 5.x版本

EMR-5.5.0及以前版本

不支持

不支持

不支持

不支持

EMR-5.6.0

支持

支持

支持

不支持

EMR-5.7.0 至 EMR-5.9.1

支持

支持

不支持

不支持

EMR-5.10.0 及以上版本(规划中)

支持

支持

支持

支持