CDH6.3.2集群启用授权

本文描述CDH6.3.2集群安装Sentry及配置。

参考:https://docs.cloudera.com/documentation/enterprise/6/latest/topics/sentry.html

操作系统:Centos7.8。

安装Sentry

Sentry是一个集中授权管理服务,可以对多服务统一授权管理,其下的角色名是唯一的。
用Hive和Solr两个服务举例,如果在Hive中创建了admin角色,那么这个角色在Solr中也会出现,但是角色的权限还是由各自的服务定义的,只是角色名是同一个。
在生产环境中,为了避免服务角色混乱,可以在角色名前加上服务前缀用一区分,例如Hive服务的管理员角色名为 hive_admin ,Solr服务的管理员角色名为 solr_admin

安装要求

集群实现Kerberso认证。当然不启用Kerberos也能用,不过不建议。

安装

使用mysql作为Sentry数据库,确保已执行以下命令:

CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry';

开始安装:

1、使用管理员用户进入Cloudera Manager Web UI,按照进入目标集群,依次点击 操作 -> 添加服务

2、选择 Sentry,点击 继续

3、按照向导添加服务即可。其中数据库设置,按照上面创建的sentry数据库和用户信息填写即可。

配置

用管理员用户进入Cloudera Manager Web UI。

配置参考:https://docs.cloudera.com/documentation/enterprise/6/latest/topics/sg_sentry_service_config.html#concept_z5b_42s_p4

启用Sentry服务之前

关闭Hive Server2模拟

修改Hive配置如下:

配置
HiveServer2 启用模拟 false

启用Hive用户提交YARN任务

修改YARN配置如下:

配置
允许的系统用户 默认已有hive 用户,如果没有,增加进去。

拦截外部应用访问Hive元数据

修改Hive配置如下:

配置
Hive Metastore 访问控制和代理用户组覆盖 增加 hive,hue,sentry 用户组。

关闭Sentry策略文件选项

CDH6.3.2中没有相关选项,跳过。

Hive启用Sentry

同步HDFS ACL和Sentry权限

修改HDFS配置如下:

配置 备注
检查 HDFS 权限 true
启用 Sentry 同步 true
Sentry 同步路径前缀 /user/hive/warehouse 保证hive warehouse路径在此配置中
HDFS 访问控制列表 true

修改Hive配置如下:

配置 备注
Sentry 服务 Sentry
启用数据库中的存储通知 true

重启服务。

关闭Hive CLI

在所有包含Hive Metastore或HiveServer2服务的节点执行以下命令:

setfacl -m u:hive:rx /opt/cloudera/parcels/CDH/bin/hive
chmod 754 /opt/cloudera/parcels/CDH/bin/hive

初始化管理员

以启用了Kerberos为前提

在HiveServer2服务节点进行操作,并假设其主机名为:master1.bigdata.com

创建管理员角色

切换到kerberos的hive主体,登入beeline

连接Hive:

!connect jdbc:hive2://master1.bigdata.com:10000/default;principal=hive/[email protected]

创建管理员角色:

CREATE ROLE hive_admin;
GRANT ALL ON SERVER server1 TO ROLE hive_admin WITH GRANT OPTION;

其中有个server1,需要注意,这个值参考自hive配置hive.sentry.server。
这是一个别名,Sentry用其关联Hive服务。

参考:https://docs.cloudera.com/documentation/enterprise/6/latest/topics/cm_sg_sentry_service.html#privilege_model__section_y2b_5wv_ls

Hive组

将hive组设置为超级管理员组

GRANT ROLE hive_admin TO GROUP hive;

自定义组

在生产环境中,最好创建一个自定义组用作超级管理员组,这样可以集成多个服务的超级管理员角色,方便管理。
假设定义超级管理员组为authorizers。按照如下步骤进行操作。
1、在操作系统级别创建用户组。如果使用FreeIPA,在FreeIPA中创建即可,否则需要保证每个节点上都有这个用户组。
2、Sentry的sentry.service.admin.group配置中增加authorizers
3、授权hive管理员角色给authorizers组。

GRANT ROLE hive_admin TO GROUP authorizers;

使用的时候,只需要将作为管理员的用户添加到authorizers组即可。

在Hue中使用时,需要在Hue中添加authorizers组,并把管理员用户分配到该组,确保Hue中的用户和组映射与操作系统一致。

其他参考 通过HiveServer2使用UDF

Impala启用Sentry

修改impala配置如下:

配置 备注
Sentry 服务 Sentry

重启服务。

Solr启用Sentry

修改solr配置如下:

配置 备注
Sentry 服务 Sentry

重启服务。

初始化管理员

以启用了Kerberos为前提

在Solr集群的其中一个节点进行操作。切换到kerberos的solr主体。

创建管理员角色

solrctl sentry --create-role solr_admin
solrctl sentry --grant-privilege solr_admin 'collection=*->action=*'
solrctl sentry --grant-privilege solr_admin 'config=*->action=*'

授权到用户组

首先授权管理员角色到solr组:

solrctl sentry --add-role-group solr_admin solr

为了集群统一管理方便,我在上文的Hive授权部分使用了超级管理员组authorizers,这里也将solr服务的管理员角色授权给超级管理员组:

solrctl sentry --add-role-group solr_admin authorizers

这样,在Hue中,就可以使用authorizers组下的超级管理员用户进行多服务的授权管理。

其他参考 Solr Collection启用Sentry

Hue启用Sentry

修改hue配置如下:

配置 备注
Sentry 服务 Sentry

重启服务。

配置Sentry Admin Groups

修改sentry配置如下:

配置 备注
管理员组 保证 hive,spark,hue 存在

HBase

hbase授权需要单独配置。

修改配置如下:

配置 备注
HBase 安全授权 true

找到 hbase-site.xml 的 HBase 服务高级配置代码段(安全阀),添加如下配置:


  hbase.security.exec.permission.checks
  true


重启服务。

你可能感兴趣的:(大数据,大数据,运维,cloudera)