Cloudera访问授权概述

2020-02-11 16:05:05 浏览数 (1)

01

Cloudera访问授权概述

授权是任何计算环境的基本安全要求之一。其目标是确保只有适当的人员或流程才能访问,查看,使用,控制或更改特定的资源,服务或数据。在使用各种CDH组件(Hive,HDFS,Impala等)部署来满足特定工作负载的任何集群中,不同的授权机制可以确保只有授权的用户或进程才能根据需要访问数据,系统和其他资源。理想情况下,授权机制可以利用身份验证机制,以便当用户登录系统(例如集群)时,将根据他们在系统中对应用程序,数据和其他资源的授权,对他们进行透明授权。。

例如,可以将Cloudera CDH集群配置为利用组织的Active Directory(或其他LDAP可访问目录)实例中存在的用户帐户和组帐户。

本指南后面将讨论各种可能的配置和集成。

02

Hadoop中的授权机制

Hadoop支持多种授权机制,包括:

  • 对文件和目录的传统POSIX样式权限。每个目录和文件都有一个具有基本权限的所有者和组,可以将其设置为读取,写入和执行(在文件级别)。目录具有附加权限,该权限允许访问子目录。
  • 访问控制列表(ACL),用于管理服务和资源。例如,Apache HBase使用ACL来授权各种操作(读,写,创建,管理)(按列,列族和列族限定符)。将HBase ACL授予并撤消给用户和组。可以使用Apache HDFS ACL将细粒度权限应用于HDFS文件,以设置特定命名用户和命名组的权限。
  • Apache Ranger通过管理访问控制,并确保跨集群服务进行一致的策略管理。
  • Apache Ranger还提供了一个集中式框架,用于收集访问审核历史记录和报告数据,包括过滤各种参数。

POSIX权限

在Hadoop集群上运行的大多数服务,例如命令行界面(CLI)或使用Hadoop API的客户端应用程序,都可以直接访问HDFS中存储的数据。HDFS对目录和文件使用POSIX样式的权限;每个目录和文件都分配有一个所有者和组。每个分配都有一组基本的可用权限。文件权限被读取,写入和执行,并且目录具有附加权限来确定对子目录的访问。

给定HDFS资产的所有权和组成员资格确定用户的特权。如果给定用户未通过这些条件之一,则将拒绝他们访问。对于可能尝试访问多个文件的服务(例如MapReduce,Cloudera Search等),将为每次文件访问尝试分别确定数据访问。HDFS中的文件权限由NameNode管理。

访问控制列表

除了每个服务内和HDFS中的数据外,Hadoop还为服务本身维护常规访问控制。服务访问控制列表(ACL)通常在全局hadoop-policy.xml文件中定义,范围从NameNode访问到客户端到DataNode通信。在MapReduce和YARN的上下文中,用户和组标识符构成确定作业提交或修改权限的基础。

此外,借助MapReduce和YARN,可以使用由调度程序控制的队列来提交作业,调度程序是组成集群内资源管理功能的组件之一。管理员使用ACL定义对各个队列的权限。ACL也可以按工作定义。像HDFS权限一样,本地用户帐户和组必须在每个执行服务器上都存在,否则,除超级用户帐户外,队列将无法使用。

Apache HBase还使用ACL进行数据级授权。HBase ACL按列,列族和列族限定符授权各种操作(读取,写入,创建,管理)。HBase ACL被授予和撤销给用户和组。类似于HDFS权限,本地用户帐户是正确授权所必需的。

Apache ZooKeeper还维护对存储在ZooKeeper数据树的DataNodes中的信息的ACL。

03

与身份验证机制的集成

像许多分布式系统一样,Hadoop项目和工作负载通常由协同工作的一系列流程组成。在某些情况下,初始用户流程会在整个工作负载或作业的整个生命周期中进行授权。但是对于产生其他流程的流程,授权可能会带来挑战。在这种情况下,将生成的进程设置为好像已通过身份验证的用户(即setuid)一样执行,因此仅具有该用户的特权。总体系统需要映射到已验证的主体,并且该用户帐户必须在本地主机系统上存在才能使setuid成功。

重要

  • Cloudera强烈建议您不要使用Hadoop的 LdapGroupsMapping提供程序。LdapGroupsMapping仅应在无法进行OS级集成的情况下使用。生产集群需要一个身份提供程序,该身份提供程序必须能够与所有应用程序(而不只是Hadoop)良好地配合使用。因此,通常首选的机制是使用SSSD,VAS或Centrify之类的工具来复制LDAP组。
  • Cloudera不支持在生产环境中使用Winbind。Winbind使用低效的方法来进行用户/组映射,这可能会导致性能下降或集群故障,因为集群的大小以及用户和组的数量会增加。

无论使用哪种机制,都必须在所有集群主机上一致地应用用户/组映射,以便于维护。

系统和服务授权 -某些Hadoop服务仅限于服务之间的交互,并不打算供最终用户访问。这些服务确实支持身份验证,以防止未经授权或恶意的用户。但是,任何具有登录凭据并可以向该服务进行身份验证的用户,或更通常是另一个服务,都有权执行目标服务允许的所有操作。例如,ZooKeeper(由YARN,Cloudera Search和HBase等内部系统使用)和Flume(由Hadoop管理员直接配置,因此不提供用户控件)。

每当这些“系统”服务访问其他服务(例如HDFS,HBase和MapReduce)时,都会对经过身份验证的Kerberos主体进行检查,因此必须授权使用这些资源。因此,Flume没有明确的授权模型这一事实并不意味着Flume可以不受限制地访问HDFS和其他服务。仍然必须对Flume服务主体进行HDFS文件系统特定位置的授权。Hadoop管理员可以为诸如Flume之类的服务建立单独的系统用户,以对特定Flume应用程序的文件系统的各个部分进行分段和施加访问权限。

04

Hadoop项目中的授权

项目

授权能力

HDFS

File Permissions, Ranger

MapReduce

File Permissions, Ranger

YARN

File Permissions, Ranger

Accumulo

Ranger

HBase

HBase ACLs, Ranger

HiveServer2

File Permissions, Ranger

Hue

Hue authorization mechanisms (assigning permissions to Hue apps)

Impala

Ranger

Oozie

ACLs

Pig

File Permissions

Search

File Permissions

Spark

File Permissions, Ranger

Sqoop

N/A

Sqoop2

None

ZooKeeper

ACLs

Cloudera Manager

Cloudera Manager roles

Backup and Disaster Recovery

N/A

来源:https://docs.cloudera.com/cloudera-manager/7.0.3/security-overview/topics/cm-security-authorization-overview.html

0 人点赞