Sentry介绍

Posted by bluesky blog on November 1, 2016

目录



Sentry介绍

Sentry 服务是一个 RPC 服务器,它将授权元数据存储在基本关系数据库中,并提供 RPC 接口来检索和处理权限。它提供角色级别的数据权限访问,可以进行细粒度权限划分。

例如,在HIve和Impala中,Sentry的SQL权限控制select、insert等语句对服务器、数据库、数据表、视图甚至数据列的访问。

Apache Sentry为Hadoop使用者提供了以下便利:

  • 能够在Hadoop中存储更敏感的数据
  • 使更多的终端用户拥有Hadoop数据访问权
  • 创建更多的Hadoop使用案例
  • 构建多用户应用程序
  • 符合规范(例如SOX,PCI,HIPAA,EAL3)

Sentry 与Hadoop生态

例如,在Sentry模式下,使用Hive执行一条查询语句时:

select * from production.sales

其执行流程如下:

Sentry策略引擎通过hook的方式插入到hive中,hiveserver2在查询成功编译之后执行这个hook。

在Sentry中,授权包括以下几种角色:

  • 资源。可能是Server、Database、Table、或者URL(例如:HDFS或者本地路径)。Sentry1.5中支持对列进行授权。
  • 权限。授权访问某一个资源的规则。
  • 角色。角色是一系列权限的集合。
  • 用户和组。一个组是一系列用户的集合。Sentry 的组映射是可以扩展的。默认情况下,Sentry使用Hadoop的组映射(可以是操作系统组或者LDAP中的组)。Sentry允许你将用户和组进行关联,你可以将一系列的用户放入到一个组中。Sentry不能直接给一个用户或组授权,需要将权限授权给角色,角色可以授权给一个组而不是一个用户。

参考资料:

Apache Sentry architecture overview:https://blogs.apache.org/sentry/tags/architecture