Hadoop Sentry怎么使用

38次阅读
没有评论

这篇文章主要介绍“Hadoop Sentry 怎么使用”,在日常操作中,相信很多人在 Hadoop Sentry 怎么使用问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hadoop Sentry 怎么使用”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

什么是 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 架构

 Hadoop 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 要保证以下条件:

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

 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 怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!