hive读写ES集群及Role权限控制

2023-11-15 19:53:15 浏览数 (1)

hive读写ES

1.下载elasticsearch-hadoop-hive-xxx.jar包,版本要与ES集群对应

代码语言:javascript复制
add jar hdfs:///user/es/jars/elasticsearch-hadoop-hive-7.14.2.jar; 

create external table hive (id string)
    STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
    location '/user/es/hive_test'
    TBLPROPERTIES('es.nodes' = '172.16.48.53',
            'es.port'='9200',
            'es.index.auto.create' = 'true',
            'es.resource' ='hive/_doc',
            'es.net.http.auth.user'='elastic',
            'es.net.http.auth.pass'='passwd',
            'es.read.metadata' = 'true',
            'es.mapping.names' = 'id',
            'es.nodes.wan.only'='true',
            'es.index.read.missing.as.empty'='true',
            'es.input.use.sliced.partitions'='false',
            'es.input.max.docs.per.partition'='100000000'
);

select * from hive_test;

insert into table hive_test values('1','emr_ip','request','success');

问题:可以建表,查询,但是数据查询为空

原因:建表根本没关联到ES,所以查询数据为空。es.resource指定关联的ES索引名称

'es.resource' ='hive/_doc' 在ES源端创建hive index即成功关联

ES Roles权限控制hive读写

Roles是ES中具有若干种权限的角色,用于分配给某类用户固定权限。例如对于营销人员用户分配的Roles具有集群,索引级别上的读权限但没有写权限,管理权限,所有营销员工用户都被分配此Role,精确管控用户权限集。

读权限控制

ES具有集群,索引,字段,文档4种级别读权限。

1. hive绑定重新建表,用户更换为test

2. 配置Role,拥有集群的monitor权限,test和.ds-test-xxxx索引的读权限,没有hive 索引的任何权限。将Role分配给test用户

3. 查询hive表发现没有权限,符合预期

4. 为test的Role添加hive索引的读权限(需要包括元数据读权限)

5. 此时成功读取数据

6.没有delete权限但是删除表成功,原因是外部表仅有元数据

7. 重新建表,只给name的读权限,id无法读取符合预期

8. 设置仅授权访问值为1的name字段

写权限控制

1. 向hive表插入数据报错,由于没有写权限,符合预期

2. 写数据需要添加索引的write,create_doc和maintenance权限

注:不添加maintenance权限也能写入成功,但会写入多条相同数据。

写数据场景下权限无法细粒度到字段级别,只要有写权限即可写入,无论有没有字段访问权限。

Cluster privileges

1. 没有任何集群权限时,不影响test用户索引维度的权限。

2. monitor权限决定集群状态的读权限,hive读数据需要此权限。

3. manage_security决定所有与安全相关的操作,例如对用户和角色的 CRUD 操作以及缓存清除。

其他权限控制见Security privileges | Elasticsearch Guide [7.9] | Elastic

Space介绍

Space是ES中的相互独立的空间,用户可创建含有不同功能的Space供不同用户使用,例如提供给营销人员使用的Space只需有DashBoard, Monitor功能,他们无法访问含有开发,管理配置功能的Space。

下面是管理员用户使用的Default Space和test用户使用的test Space(管理员自定义)

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞