前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0633-6.2.0-什么是Apache Sentry

0633-6.2.0-什么是Apache Sentry

作者头像
Fayson
发布2019-05-21 16:43:56
9840
发布2019-05-21 16:43:56
举报
文章被收录于专栏:Hadoop实操Hadoop实操

Apache Sentry是Hadoop中的一个基于角色的细粒度授权组件。Sentry可以在Hadoop集群上对通过身份认证的用户和应用程序控制数据访问权限。Sentry开箱即用的支持Hive,Hive Metastore/HCatalog,Solr,Impala,HDFS(仅限Hive表数据),Kafka和Kudu(通过Impala)。

Sentry旨在成为Hadoop各组件的可插拔授权引擎。它允许您定义授权规则以验证用户或应用程序对Hadoop资源的访问请求。Sentry是高度模块化的,可以支持Hadoop中各种数据模型的授权。

1

架构概述

1.1

Sentry组件

授权过程涉及三个组件:

  • Sentry Server

Sentry的RPC服务管理授权元数据。它支持安全检索和操作元数据的接口。在CDH5.13及更高版本中,您可以配置多个Sentry服务以实现高可用性。

  • Data Engine

这是一个数据处理应用程序,比如Hive或Impala,它们需要授权访问数据或元数据资源。数据引擎(data engine)加载Sentry插件,拦截所有客户端访问资源的请求并将其路由到Sentry插件进行验证。

  • Sentry Plugin

Sentry plugin在data engine中运行。它提供了操作存储在Sentry Server中的授权元数据的接口,包括授权策略引擎,该引擎使用从服务器检索的授权元数据来评估访问请求。

1.2

关键概念

  • Authentication - 验证凭据以识别用户
  • Authorization - 限制用户访问指定的资源
  • User - 由认证系统识别的用户
  • Group - 由认证系统维护的一组用户
  • Privilege - 允许访问对象的指令或规则
  • Role - 一组privilege,用于组合多个访问规则的模板
  • Authorization models - 定义要受授权规则约束的对象以及允许的操作粒度。例如,在SQL中,对象可以是数据库或表,操作是SELECT,INSERT和CREATE。在Solr中,对象是indexes,configs,collections和documents;访问模式包括query和update。

1.3

用户身份和组映射

Sentry依赖底层的身份认证系统,比如Kerberos或LDAP来识别用户。它还使用Hadoop中配置的组映射(group mapping)机制来确保Sentry看到与Hadoop生态系统的其他组件相同的组映射(group mapping)。

假设有一个组织机构,用户Alice和Bob属于名为finance-department的Active Directory(AD)组。Bob同时也属于一个名为finance-managers的组。在Sentry中,首先创建角色,然后为这些角色授予权限。例如,您可以创建一个名为Analyst的角色,并将表Customer和Sales上的SELECT授予此角色。

1.4

基于角色的访问控制

基于角色的访问控制(Role-based access control, RBAC)是一种典型的用于管理企业中大量用户和数据对象授权的强大机制。经常发生的新数据对象添加或删除,用户加入,移动或离开。RBAC可以使这些管理更加容易。我们继续继续上章提到的例子,如果新员工Carol加入财务部门,您需要做的就是将她添加到AD中的finance-managers组。这就可以实现Carol访问Sales和Customer表中的数据。

2

Sentry与Hadoop生态系统的集成

如上图所示,Apache Sentry可以与多个Hadoop组件一起工作。从本质上讲,您拥有存储授权元数据的Sentry Server,并提供API工具以安全地检索和修改此元数据。

请注意,Sentry Server主要用于管理元数据。实际的授权决策由在Hive或Impala等数据处理应用程序中运行的策略引擎判断。每个组件都加载Sentry插件,其中包括用于处理Sentry服务的客户端和用于验证授权请求的策略引擎。

2.1

Hive和Sentry

举一个例子来说明Hive获取客户端以特定模式访问对象的请求。如果Bob提交以下Hive查询:

select * from production.sales

Hive将识别用户Bob正在请求对Sales表的SELECT访问。此时,Hive将要求Sentry插件验证Bob的访问请求。该插件将检索Bob与Sales表相关的权限,策略引擎将确定该请求是否有效。

Sentry服务和策略文件都可以管理Hive权限。Cloudera建议您使用Sentry服务,这样可以更轻松地管理用户权限。

2.2

Impala和Sentry

Impala中的授权处理与Hive中的授权处理类似。主要区别在于权限的缓存。Impala的Catalog服务管理缓存schema元数据并将其传播到所有Impala Daemon节点。此Catalog服务也缓存Sentry元数据。因此,Impala的授权在本地就可以实现,速度更快。

2.3

Sentry-HDFS同步

Sentry-HDFS授权主要针对Hive仓库数据 - 也即Hive或Impala中表的数据。Sentry与HDFS的集成的真正目标是将相同的授权检查扩展到从任何其他组件(如Pig,MapReduce或Spark)访问Hive仓库数据。基于这一点可以利用HDFS已有的ACL功能,但与Sentry无关的表将保留其旧ACL。

Sentry权限与HDFS ACL的映射关系如下:

  • SELECT -> 文件的Read权限
  • INSERT -> 文件的Write权限
  • ALL -> 文件的Read和Write权限

NameNode会加载一个Sentry插件,用于缓存Sentry权限以及Hive元数据。这有助于HDFS保持文件权限和Hive表权限同步。Sentry插件定期轮询Sentry以保持元数据更改同步。

例如,如果Bob运行从Sales表读取数据文件的Pig作业,Pig将尝试从HDFS获取文件句柄。此时,NameNode上的Sentry插件将确定该文件是Hive数据的一部分,并在文件ACL之上覆盖Sentry权限。因此,跟Hive执行SQL一样,HDFS会为该Pig客户端强制实施相同的权限检查。

2.4

Solr和Sentry

Sentry可以对各种Solr任务实施权限管控,包括访问数据和创建collection。无论用户尝试执行何种操作,Sentry都会进行权限管控。例如,不管查询是来自命令行,浏览器还是管理控制台,都会对collection中的数据进行相同的权限检查。

Sentry对Solr的权限控制信息可以保存到Sentry服务的数据库中,也可以以策略文件形式保存,该文件存储在HDFS中,比如:hdfs://ha-nn-uri/user/solr/sentry/sentry-provider.ini。

Solr集成Sentry不支持为多个服务配置同一个策略文件。如果选择使用策略文件而不是Sentry服务的数据库,则必须为每个启用Sentry的服务使用单独的策略文件。比如,如果Hive和Solr都使用策略文件授权,如果你把这2个服务的授权放到同一个策略文件中,将导致配置无效并且两个服务商的授权失败。

Sentry服务和策略文件都可以管理Solr权限。Cloudera建议您使用Sentry服务,这样可以更轻松地管理用户权限。

2.5

授权管理

Sentry Server支持API以安全地操纵角色和权限。Hive和Impala都支持SQL语句管理权限。Sentry会认为运行HiveServer2和Impala服务的用户为超级管理员,通常为hive和impala。如果要管理权限,必须使用超级管理员登录Sentry。您可以使用Beeline或Impala shell来执行以下示例语句:

GRANT ROLE Analyst TO GROUP finance_managers

2.5.1

禁用Hive CLI

要执行Hive查询,您必须使用Beeline。Sentry不支持Hive CLI,因此必须禁用其对Hive Metastore的访问权限。如果Hive Metastore中有敏感数据,尤其需要注意这一点。因此需要在Cloudera Manager配置Hive服务的Hive Metastore Access Control and Proxy User Groups Override属性。例如,让hive用户仅模拟hive和hue组成员的权限,请将该属性设置为:hive,hue。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档