暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CDH6.3.2启用Sentry服务

闵栋 2023-02-22
1925


是新朋友吗?记得点击下面名片,关注我哦



听段舒缓的音乐,咱们一起开启阅读之旅。



1、Sentry简介

1.1、sentry简介

    Apache Sentry是一个Hadoop开源组件,它提供了细粒度级、
    基于角色的授权以及多租户的管理模式 。


    Sentry当前可以和Hive/Hcatalog、Aapache Solr 和Cloudera impala集成,
    为这些组件提供权限管理服务


    基于角色的管理(role-based access control)通过创建角色,将每个组件的权限授予
    给此角色,然后在用户(组)中添加此角色,用户便具备此角色访问组件的权限


    使用sentry对hive进行权限管理时,这里的组件可以是整个server,也可以是单个db,
    或者单张table



    1.2、要求

    使用beenline 连接hive,进行权限管理,hive cli不支持Sentry 管理。


    1.3、Sentry权限分配模式


    角色------>用户组-------->用户

    备注:权限赋予角色,角色分配给用户组,之后该用户组所有用户都具有该角色权限



    2、安装sentry服务

    登陆CM,点击下拉按钮:

    点击添加服务 

    选中sentry,点击继续

    配置好sentry sever 和gateway,点击继续

    在node2 服务器(cdh 元数据库mysql服务器)上需要提前创建好Sentry 元数据库

      mysql -uroot -pexample@2022
      create user cdh@'%' identified by 'example@2022';
      create database Sentry default character set utf8;
      grant all on Sentry.* to 'cdh'@'%';
      flush privileges;


      如上图,配置好元数据库信息,点击继续

      等待命令运行完毕,点击继续

      点击完成




      3、hive启用sentry

      3.0 Hive启用Sentry服务


      3.0.1、取消HiveServer2 启用模拟



      取消勾选,点击保存更改


      3.0.2、Hive启用Sentry服务


      【注意】:如果不执行2.0.1步骤,会报如下错误:

      已为 Hive Server2 角色“HiveServer2 (master)”启用

      Hive Impersonation。应禁用 Hive Impersonation 以

      启用使用 Sentry 的 Hive 授权。


      3.1、HDFS配置

      3.1.1、开启“启用访问控制列表”



      3.1.2、开启“检查HDFS权限”

      3.1.3、开启“启用 Sentry 同步”


      【备注】:如果不按照本文顺序可能会报一些依赖关系的错误。如下:如果提示 "启用 HDFS/Sentry 同步时,必须正好有一个依赖 Sentry 的 Hive 服务,但是存在 0 个依赖性 Hive 服务" 表示 hive 组件需要启用 "Sentry" 权限控制,即 在 hive 组件,选 "Sentry 服务"=Sentry ( 默认为 none )

      如果提示 "已为 Hive Server2 角色“HiveServer2 (cdh-master-v01)”启用 Hive Impersonation。应禁用 Hive Impersonation 以启用使用 Sentry 的 Hive 授权。" 则配置 hive.server2.enable.doAs=false 并且 勾选 "Hive Metastore Server Group 1"

      3.2、Hive配置

      3.2.1、启用数据库中的存储通知


      3.2.2、高级配置代码段添加配置项

      sentry.hive.testing.mode=true


      在“sentry-site.xml 的 Hive 服务高级配置代码段(安全阀)”添加一个配置

      名称:sentry.hive.testing.mode

      值:true



      3.3、impala配置

      sentry开启

      3.4、集中处理CM过期配置

      处理过期配置



      4、验证

      4.1、设置超管角色、超管用户组

      在beeline中登录hive

        beeline -u jdbc:hive2://YOUR_HIVE_HOST:10000/default -n hive
        实例:
        beeline -u jdbc:hive2://master:10000/default -n hive
        【备注】:
        开启kerberos认证后,会报错


        备注:初始化状态所有用户都没有权限,第一步要给系统用户组hive赋予所有权限,

        这里连接beeline 要用系统用户hive

        执行:

          授权(权限控制链路):角色-->用户组-->用户


          #创建系统角色
          create role admin_role;
          #赋予所有权限给该系统角色
          grant all on server server1 to role admin_role;
          #将角色赋予给用户组hive
          grant role admin_role to group hive;

          备注:

          server1 为用于Sentry授权的服务器名称,默认为server1


          这样就可以通过hive用户管理sentry权限


          4.2、赋权用户超管角色

          在hive用户组下创建新用户example 进行测试(所有节点都要添加example用户)

            #新建用户
            useradd example
            #设置密码
            passwd example
            #将用户添加到hive组中
            gpasswd -a example hive


            以example用户登录测试权限 ,正常访问库表信息

              #使用用户example登录beeline
              beeline -u jdbc:hive2://YOUR_HIVE_HOST:10000/default example example
              show roles;
              备注:可以看到该用户有角色 admin_role ---hive用户组的系统角色
              use xxx;
              select * from xxx limit 10;


              4.3、新建角色测试查询权限

              #创建一个新的用户组,只给查询权限,并添加一个测试用户

                #建立一个新组,并设置组ID加入系统


                groupadd -g 888 hive_test_select


                --此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。


                useradd hive_test


                passwd hive_test


                gpasswd -a monica hive_test_select


                ##赋予权限

                  create  role  select_test;
                  grant select on database test to role select_test;
                  grant role select_test to group hive_test_select


                  ##测试权限

                    #使用用户example登录beeline
                    beeline -u jdbc:hive2://YOUR_HIVE_HOST:10000 hive_test hive_test
                    show roles;
                    备注:可以看到该用户有角色 admin_role ---hive用户组的系统角色
                    use test;
                    select * from xxx limit 10;
                    drop table test.xxxx;
                    备注:用户hive_test 所在的组hive_test_select只有角色select_test权限。
                    只有查询权限没有删除权限,执行上面语句会提示没有权限








                    兴趣是最好的老师,唯有热爱不可辜负!

                    Have fun!




                    少侠,请留步,欢迎点赞关注转发




                    文章转载自闵栋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论