Sentry 授权

自己系统发生了异常丢失事故,就详细了解了sentry 与hdfs acl 关系,看到这篇文章不错,自己又进行了补充,如果结合cloueramanager 官网更好。

文章目录

一、架构概述 

1.Sentry 组件 

2.主要概念 

3.User身份和Group映射 

 4.基于roles的访问控制 

 5.统一授权 

 二、Sentry与Hadoop生态系统的集成 

1.Hive and Sentry 

2.Impala and Sentry 

3.Sentry-HDFS同步 

4.Search and Sentry 

5.Authorization Administration 


前言 


sentry是Hadoop的基于角色的进行授权,Sentry为Hadoop集群上经过身份验证的用户和应用程序提供了控制和实施数据权限分级的功能。Sentry可以与Apache Hive,Hive Metastore / HCatalog,Apache Solr,Impala和HDFS(仅限于Hive表数据)一起使用。有关配置和管理Sentry服务的信息,请参阅Apache Sentry Guide。  
 
提示:本章节信息参考Authorization With Apache Sentry 


一、架构概述 


1.Sentry 组件 


 Sentry 授权_第1张图片
授权过程涉及三个组件: 
Sentry Server:Sentry RPC server管理授权元数据。它支持安全检索和操作元数据的接口。 在CDH 5.13及更高版本中,您可以配置多个Sentry服务器以实现高可用性。Data Engine:这是一个数据处理应用程序,例如Hive或Impala,需要授权访问数据或元数据资源。数据引擎将加载Sentry Plugin,并且所有客户端访问资源的请求都会被拦截并路由到Sentry插件进行验证。Sentry Plugin:它提供了在Sentry Server操作存储授权元数据的接口。并包括授权policy engine ,该engine 会从服务器获取的授权元数据来评估访问请求授权等级。 


2.主要概念 


Authentication -验证凭据去认定是可靠可辨识的用户Authorization -限制用户资源访问权限User - 在认证系统中可以识别的用户Group - 是一批用户集合,维运在认证系统Privilege - 指令或规则,建立指令或规则去允许访问对象时,可对访问对象进行写或读等动作。Role - 是一批指令或规则集合; 组合多个访问规则的模板。Authorization models - 定义要遵守授权规则和允许的操作的对象。例如,在SQL模型中,对象可以是数据库或表,而操作是SELECT,INSERT和CREATE。在搜寻模型中.对象是索引,configs,集合,文档; 访问方式包括查询和更新。 


3.User身份和Group映射 


Sentry 依赖底层的验证系统(例如Kerberos或LDAP)来识别用户。它还使用Hadoop中配置的Group映射机制来确保Sentry看到与Hadoop生态系统其他组件是相同的Group映射。也就是说Sentry看到Group和其他Hadoop生态系统其他组件的Group会是一致。 例如Alice 和 Bob 是属于为“财务部门”的Active Directory (AD) group,然后Bob 也隶属于财务经理。在Sentry中,您首先创建roles,然后向这些角色授予特权。 例如,您可以创建一个名为Analyst的roles,并在表Customer和Sales上将SELECT授予该角色。下一步是将这些身份验证实体(User和Group)加入授权实体(roles)。这可以通过授予财务部门组Analyst 的role来完成。现在,属于财务部门组的Bob和Alice获得了对Customer和Sales表的SELECT特权。

 
4.基于roles的访问控制 


Role-based access control (RBAC).基于roles的访问控制是一种强大的机制,用于管理企业中的大量用户集和数据对象的授权。新的数据对象可以随时进行added 或removed,users 加入,move或离开组织。RBAC使管理起来更加容易。在沿用上述范例,如果有新员工Carol加入财务部门,您要做的就是将她添加到AD财务部门的group中。这将使Carol访问Sales和Customer表中的数据。

 
5.统一授权 


Sentry还有一个重要功能就是统一授权。一旦设定好访问控制roles,便可以工作在多个数据访问的工具来对数据对象访问。例如,在上一个示例中被授予分析师角色,Bob,Alice和财务部门组中的其他人员可以透过SQL引擎(如Hive和Impala)访问其中的表数据,以及使用MapReduce,Pig或使用HCatalog访问元数据。

 
二、Sentry与Hadoop生态系统的集成 

Sentry 授权_第2张图片
 如上所示,Apache Sentry与多个Hadoop组件一起使用。 从本质来说,Sentry Server有存储授权元数据并提供用于安全检索和修改此metadata 的API工具。 请注意,实际的授权决定由运行在数据处理应用程序(例如Hive或Impala)中的policy engine做出。每个组件都加载Sentry插件,该插件包括用于处理客户端的Sentry服务和验证授权请求的policy engine。 


1.Hive and Sentry 


范例,其中Hive收到客户端以某种方式访问对象的请求。 如果Bob提交以下Hive查询: 

select * from production.sales


Hive将识别出用户Bob正在请求对Sales表做SELECT的访问。此时,Hive将要求Sentry plugin 验证Bob的访问请求。该plugin 将检索Bob是否与Sales表有相关的特权,并且policy engine将确定这个请求是否有效。  

Sentry 授权_第3张图片

Hive可与Sentry service 和policy files一起使用。 Cloudera建议您使用Sentry service,Sentry service可以更轻松地管理用户权限。有关更多管理权限详细信息和说明,请参阅Managing the Sentry Service。


2.Impala and Sentry 


Impala中的授权处理与Hive中的授权处理相似。主要区别在于特权的缓存。 Impala Catalog server管理缓存 schema metadata ,并将其传播到所有Impala服务器节点。此目录服务器也缓存Sentry metadata 。 结果,Impala中的授权验证在本地进行并且速度更快。  有关更多管理权限详细信息和说明,Sentry 授权_第4张图片

请参阅Enabling Sentry Authorization for Impala


3.Sentry-HDFS同步 


Sentry-HDFS授权专注于Hive warehouse即,作为Hive或Impala中表的一部分的任何数据。集成的真正目的是将任何的组件(例如Pig,MapReduce或Spark)在进行访问的Hive warehouse的数据,都采用相同的授权检查。在这一点上,此功能不能替代HDFS ACL。 与Sentry无关的表将保留其旧的ACL。意思就是指 在Hive warehouse下的数据可以受Sentry控管,非Hive warehouse 的 由HDFS ACL控制。 
 Sentry 授权_第5张图片
Sentry特权与HDFS ACL权限的映射如下: 
SELECT 权限-> 对文件有读取的权限INSERT 权限-> 对文件有写的权限ALL 权限-> 对文件有读取和写的权限 NameNode加载一个Sentry plugin,该插件缓存Sentry特权以及Hive metadata 。这有助于HDFS 文件权限和Hive表权限是同步。Sentry plugin会定期询问Sentry。也是保持metadata 是同步。 例如,Bob在Pig提交一个对Sales表做SELECT的命令,Pig会尝试在HDFS获取handle ,届时,NameNode上的Sentry plugin会发现该文件是Hive数据的一部分,在文件ACL的顶部覆盖上 Sentry 特权。因此,HDFS将对允许Pig这条对hive提交SQL查询命令。 为了使HDFS-Sentry同步正常运行,必须使用Sentry service,而不是 policy file授权。有关更多详细信息,请参见同步HDFS ACL和Sentry 权限。Synchronizing HDFS ACLs and Sentry Permissions


4.Search and Sentry 


Sentry可以将限制应用于各种搜索任务,包括访问数据和创建集合。无论用户尝试用什麼方式操作,都将始终收到这些限制。通过搜索,可以将Sentry限制存储在database-backed的Sentry service 中或policy file中(例如,sentry-provider.ini)。它存储在HDFS位置,例如hdfs://ha-nn-uri/user/solr/sentry/sentry-provider.ini。 Sentry with Search不支持多个数据库的多个policy file。果您选择使用策略文件而不是database-backed Sentry service,您必须为每个启用Sentry service使用单独的policy file。例如,如果Hive和Search使用policy file授权,则同时使用Hive和Search policy file将导致两个服务的配置无效和授权失败。搜索可与Sentry service和policy file一起使用。 Cloudera建议您使用Sentry service,该服务可以更轻松地管理用户权限。有关更多详细信息和说明,请参阅管理Sentry service。Managing the Sentry Service 
有关Search 详细文档,请参阅Configuring Sentry Authorization for Cloudera Search


5.Authorization Administration 


Sentry Server提供API可以安全地操纵角色和特权。 Hive和Impala均支持SQL语句以本地管理特权。Sentry假定HiveServer2和Impala以superusers身份运行,通常称为hive和impala。要启动Sentry的最高权限,管理员必须以superusers身份登录。 您可以使用Beeline或Impala shell执行以下示例语句: 

GRANT ROLE Analyst TO GROUP finance_manager


1.Disabling Hive CLI 
要执行Hive查询,必须使用Beeline,Sentry不支持Hive CLI,因此必须禁用对Hive Metastore的访问。如果metastore具有敏感的metastore,则这尤其必要。为此,请向Hive用户授予对Hive CLI文件的读/执行权限,然后至少在HIVE_HOME路径中删除对Hive CLI文件的全局执行权限。假设HIVE_HOME为/ opt / cloudera / parcels / CDH / bin / hive,请按以下方式禁用HIVE CLI: 

$ setfacl -m u:hive:rx /opt/cloudera/parcels/CDH/bin/hive $ chmod 754 /opt/cloudera/parcels/CDH/bin/hive


如果hive用户无权访问Hive CLI文件,将Hive 无法启动。 
2.使用Hue管理Sentry 权限 
Hue支持一个Security应用程序来管理Sentry授权。这使用户可以浏览和更改表权限。 这是一个视频Hue Security App,展示了其功能。 


 
总结 


在以上文章内容中提供相关联连接,如果有需要相同功能,则都可以参考酌量增加性能。

结合以下资料:

1、cloudera 管理资料

https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/sg_hdfs_sentry_sync.html

https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/sentry_howto_verify_hdfs_sync.html

2、apache getfacl资料 

https://hadoop.apache.org/docs/r3.3.1/hadoop-project-dist/hadoop-common/FileSystemShell.html#getfacl

你可能感兴趣的:(hadoop,big,data,hadoop,hive)