什么是Sentry?

Sentry 是Cloudera 公司发布的一个Hadoop开源组件,它提供细粒度基于角色的安全控制

Sentry下的数据访问和授权

通过引进Sentry,Hadoop目前可在以下方面满足企业和政府用户的RBAC(role-based acess control)需求:

安全授权:Sentry可以控制数据访问,并对已通过验证的用户提供数据访问特权。

细粒度访问控制:Sentry支持细粒度的Hadoop数据和元数据访问控制。在Hive和Impala中Sentry的最初发行版本中,Sentry在服务器、数据库、表和视图范围提供了不同特权级别的访问控制,包括查找、插入等——允许管理员使用视图限制对行或列的访问。管理员也可以通过Sentry和带选择语句的视图或UDF,根据需要在文件内屏蔽数据。

基于角色的管理:Sentry通过基于角色的授权简化了管理,你可以轻易将访问同一数据集的不同特权级别授予多个组。例如,对于某特定数据集,你可以分配给反欺诈小组查看所有列的特权,给分析师查看非敏感或非PII(personally identifiable information)列的权限,给数据接收流插入新数据到HDFS的权限。

多租户管理:Sentry允许为委派给不同管理员的不同数据集设置权限。在Hive/Impala的情况下,Sentry可以在数据库/schema级别进行权限管理。

统一平台:Sentry为确保数据安全,提供了一个统一平台,使用现有的Hadoop Kerberos实现安全认证。同时,通过Hive或Impala访问数据时可以使用同样的Sentry协议。未来,Sentry协议会被扩展到其它组件。

Sentry 架构

图为Sentry的基本架构,目前Sentry支持 Hive(凭借HiveServer2的基于thrift 的RPC 接口) 和Impala 。但是Sentry 具有高度模块化和可扩展的机制,它可以扩展到其它基于Hadoop的应用中去。Sentry 的授权核心层主要分两部分,结合层(Hive bindings and Impala bindings)和 核心授权提供者(Policy engine and Policy abstractions )。结合层提供一个可插拔的接口,实现与协议引擎的对话 。Policy engine 与bingdings 合作,对访问请求进行评估检验,如果允许访问,通过 Policy abstractions 来访问底层数据。

目前已经实现了基于文件的提供者,可以理解具体协议文件格式。协议文件可被存储在本地文件系统或HDFS中,以便复制和审计。

Sentry在Hive 中的使用方法

CDH 4.4 以上版本Impala 1.1以上版本可以使用Sentry

注意:如果集群环境中Hive 和Impala 都存在, Sentry 生效的时候,必须保证 Hive 和Impala 都生效。

在Hive 中配置Sentry 要保证以下条件:

  1. Hive warehouse 路径 (/user/hive/warehouse 或者是配置的hive.metastore.warehouse.dir 的路径)用户和用户组必须是Hive

  2. warehouse 权限所有者必须满足

770 on the directory itself (for example, /user/hive/warehouse)

770 on all subdirectories (for example, /user/hive/warehouse/mysubdir)

All files and directories should be owned by hive:hive

例如:

   $ sudo -u hdfs hdfs dfs -chmod -R 770 /user/hive/warehouse
   $ sudo -u hdfs hdfs dfs -chown -R hive:hive /user/hive/warehouse
----------------------------------------------------------------------------------------------------------

Sentry 使用 Policy file 定义对Hive 访问权限的控制,创建 Policy file sentry-provider.ini 作为HDFS文件。

需要注意的是 这个文件用户和用户组必须为hive 权限为 640。

默认路径为  /user/hive/sentry

Policy file 例子:

Global policy file:

----------------------------------------------

[groups]
admin_group = admin_role
dep1_admin = uri_role
 
[roles]
admin_role = server=server1
uri_role = hdfs:///ha-nn-uri/data
 
[databases]
db1 = hdfs://ha-nn-uri/user/hive/sentry/db1.ini
----------------------------------------------------------------------
Per db policy file: (at hdfs://ha-nn-uri/user/hive/sentry/db1.ini):
[groups]
dep1_admin = db1_admin_role
dep1_analyst = db1_read_role
 
[roles]
db1_admin_role = server=server1->db=db1
db1_read_role = server=server1->db=db1->table=*->action=select
 

groups 选项匹配用户和角色;

roles 选项匹配角色和权限;

databases 是可选的, 提供数据库和per-database policy file 文件的匹配。

Hadoop Sentry 学习的更多相关文章

  1. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

  2. Hadoop入门学习笔记---part3

    2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...

  3. Hadoop入门学习笔记---part2

    在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...

  4. Hadoop入门学习笔记---part1

    随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...

  5. Hadoop家族学习路线图--转载

    原文地址:http://blog.fens.me/hadoop-family-roadmap/ Sep 6, 2013 Tags: Hadoophadoop familyroadmap Comment ...

  6. Hadoop家族学习路线图

    主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...

  7. [转]Hadoop家族学习路线图

    Hadoop家族学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, ...

  8. Hadoop家族学习路线图v

    主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...

  9. Hadoop家族学习路线、实践案例

    作者:Han Hsiao链接:https://www.zhihu.com/question/19795366/answer/24524910来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...

随机推荐

  1. UVALive 6261 Jewel heist

    题意:珠宝大盗Arsen Lupin偷珠宝.在展厅内,每颗珠宝有个一个坐标为(xi,yi)和颜色ci. Arsen Lupin发明了一种设备,可以抓取平行x轴的一条线段下的所有珠宝而不触发警报, 唯一 ...

  2. POJ 最小球覆盖 模拟退火

    最小球覆盖:用半径最小的球去覆盖所有点. 纯粹的退火算法,是搞不定的,精度不够,不然就会TLE,根本跑不出答案来. 任取一点为球心,然后一点点靠近最远点.其实这才是最主要的. 因为:4个点确定一个球, ...

  3. 2018.12.22 Spring学习02

    Spring学习02 1.使用注解配置Spring 1.1 为主配置文件引入新的命名空间(约束) 添加约束文件xxx-xxx-context.xml 添加到主配置文件中 选择刚才的context.xm ...

  4. 如何删除anaconda

    因为实验室电脑之前装tensorflow是用的anaconda装的,导致现在用pip装tensorflow1.0装上了却还是用的annaconda下的tensorflow0.8,所以想删除anacon ...

  5. 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用

    一,问题描述MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用 ...

  6. 【洛谷P2607】[ZJOI2008]骑士

    骑士 题目链接 这道题一看,似乎和舞会是一样的,然而它并没有保证是一棵树 但是,对于每个连通块,必有相同的点数和边数,这样的图一定是一棵树上加一条边 这条边一定回使图中形成一个环,这种图貌似叫“基环树 ...

  7. python logging—模块

    python logging模块 python logging提供了标准的日志接口,python logging日志分为5个等级: debug(), info(), warning(), error( ...

  8. centos7 安装 mysql5.7, 以及安装中遇到的问题

    # wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm# rpm -ivh mysql57-communi ...

  9. html基础用法(上)

    html的定义: html超文本标记语言,标准通用标记语言下的一个应用. “超文本”就是指页面内可以包含图片,链接,甚至音乐,程序等非文字语言. 超文本标记语言的结构包括“头”部分(head),和“主 ...

  10. mysql 复制A表 到B表;insert into select * from table

    情况一: INSERT INTO tb1 (a,b,c) select a1,b1,c1, from tb2 where .... --  案例 百度云 INSERT INTO l_biz_car_o ...