EasyMR如何为服务开启Kerberos

雅泽7个月前技术文章163


一、Hadoop为什么需要安全

最早部署Hadoop集群时并没有考虑安全问题,未开启安全认证时,Hadoop 是以客户端提供的用户名作为用户凭证, 一般即是发起任务的Unix 用户。一般线上机器部署服务会采用统一账号,当以统一账号部署集群时,所有执行 Hadoop 任务的用户都是集群的超级管理员,容易发生误操作。即便是以管理员账号部署集群,恶意用户在客户端仍然可以冒充管理员账号执行。随着集群的不断扩大, 各部门对集群的使用需求增加,集群安全问题就显得颇为重要。说到安全问题,一般包括如下方面:

  • 用户认证(Authentication) 即是对用户身份进行核对, 确认用户即是其声明的身份, 这里包括用户和服务的认证。

  • 用户授权(Authorization) 即是权限控制,对特定资源, 特定访问用户进行授权或拒绝访问。用户授权是建立再用户认证的基础上, 没有可靠的用户认证谈不上用户授权。

二、EMR是如何接管Hadoop安全

EMR Hadoop 的安全认证是基于 Kerberos 实现的,集成LDAP用户体系。 Kerberos 是一个网络身份验证协议,用户只需输入身份验证信息,验证通过获取票据即可访问多个接入 Kerberos 的服务, 机器的单点登录也可以基于此协议完成的。 Hadoop 本身并不创建用户账号,而是使用 Kerberos 协议来进行用户身份验证,从Kerberos凭证中的用户信息获取用户账号, 这样一来跟实际用户运行的账号也无关。


1、集群账号管理

原先我们使用单一账号作为集群管理员,且这一账号为线上统一登录账号, 这存在极大的安全隐患。我们需要使用特殊账号来管理集群。这里涉及的问题是,我们需要几个运维账号呢? 一种简单的做法是使用一个特殊运维账号, CDHApache官方也都推荐按服务划分分账号来启动集群。

考虑到精细化控制可以有效避免误操作,EMR遵循官方的建议使用多账号,使用Hadoop作为同一用户组,每个组件使用单独的用户。如果是从单一运维账号迁移到多个账号部署时,则需要考虑相关文件权限问题,包括本地以及hdfs两部分,这可以在安全部署上线时完成相应改动。

EMR 组件服务运行的用户信息可以配置在产品包服务层级下,以服务hdfs_namenode为例:

schema.png

hdfs schema

User

Group

Service

hdfs

hadoop

hdfs_namenode,hdfs_datanode,hdfs_journalnode

yarn

hadoop

hadoop,yarn_resourcemanager,yarn_nodemanager,jobhistory

spark

hadoop

thriftserver,spark

hive

hadoop

hive,hivemetastore,hiveserver2

hbase

hadoop

hbase,hbase_master,hbase_regionserver

大数据服务集群用户

2、用户账号管理

考虑到每个团队下会有不同的小组,每个小组都有使用 Hadoop 来进行大数据处理需求,故需要一定程度的多租户环境, 这里主要考虑其中的数据和操作的权限问题,EMR集成了LdapServer目录服务系统,其功能优势具体如下:

1、LdapServer能够减少用户账户管理人员在面对用户数量大、增长快的情况下对账号的创建、回收、权限管理、安全审计等一系列复杂而繁琐工作的压力。

2、LdapServer能够解决多层次、多类型系统、数据库的安全访问难题,所有与账号相关的管理策略均配置在服务端,实现了账号的集中维护和管理。

3、LdapServer能够充分继承和利用平台组织中现有的账户管理系统的身份认证功能,并实现了账户管理与访问控制管理的分离,提高了大数据平台访问认证的安全性

三、EMR如何部署Hadoop安全

EMR可以支持Hadoop,Hive,Spark,Ranger组件开启Kerberos功能,每个组件的开启操作基本一致。下面以开启Hadoop Kerberos功能为例

1、准备产品包

组件名

版本号

服务名称

DTBase

2.1.22-1

mysql,zookeeper

Openldap

2.4.44-1

berkeleydb,nslcd,openldap

Hadoop

3.2.1_3-KB

hadoop_pkg,hdfs_journalnode,hdfs_namenode,hdfs_zkfc,hdfs_datanode,hdfs_datanode,jobhistory,yarn_resourcemanager,yarn_nodemanager,timelineserver

Kerberos

1.15.1_1

kerberos_pkg,kdcserver,kadminserver

2、安装产品包

  • 安装zookeeper、openldap、kdc、hadoop服务

以安装hadoop服务为例,选中需要安装的服务,点击下一步

1.png

指定每个服务要要部署的节点,点击执行部署

2.png

部署完成后,可以在节点检查目录的权限及组件的启动用户

3.png

3、开启Kerberos安全

部署完服务后,需要按照Kerberos开启顺序依次开启

  • zookeeper 开关

首先在服务页面,选择zookeeper服务,在部署配置里面找到Switch开关项,切换开关状态,等待开关开启结果

4.png

  • hadoop 开关

在服务页面,选择hadoop pkg服务,在部署配置里面找到Switch开关项,切换开关状态,等待开关开启结果。开启成功后,hadoop Kerberos功能就成功启用了。

5.png

4、应用授权

授权一般来说是由应用来决定的,通过在 LDAP 数据库中配置一些属性可以让应用程序来进行授权判断。EMR在部署完LdapServer后,平台管理里面将会自动关联LdapServer的连接信息,用户只需选中对应的LdapServer连接,在对应的用户下点击下载票据即可。

6.png




相关文章

MySQL性能优化(六)优化or条件

MySQL性能优化(六)优化or条件

优化器是数据库中非常核心,又非常复杂的一个组件。有的SQL,优化器选择的执行计划并不是最优的,通过改写SQL,可以帮助优化器找到最优的执行计划。where条件中的or子句,是比较容易出问题的一个场景。...

bind服务-2

bind服务-2

五、部署一个正向解析5.1)教学案例对zutuanxue.com域名做解析,解析要求如下:www 解析为A记录 IP地址为 192.168.11.88news 做别名解析CNAME 解析为 www1)...

使用 systemd 管理 MySQL 服务

前言systemd 是 Linux 系统推出的初始化(init)系统,MySQL 使用 RPM 或者 Debian 包安装 MySQL 会默认使用 systemd 来管理 MySQL 服务,不需要额外...

Doris部署介绍

标准部署该文档主要介绍了部署 Doris 所需软硬件环境、建议的部署方式、集群扩容缩容,以及集群搭建到运行过程中的常见问题。在阅读本文档前,请先根据编译文档编译 Doris。软硬件需求概述Doris...

MySQL 通过 MTS 多线程恢复增量日志备份

MySQL 通过 MTS 多线程恢复增量日志备份

一、前言当发生 DDL 误删数据时,只能通过 备份 + 增量日志 来恢复,备份恢复到新实例后,将增量日志备份进行应用,此时只能单线程效率不高,我们可以使用 MySQL 5.7 推出的 MTS 多线程复...

Python 实现 Prometheus 自定义指标暴露

Python 实现 Prometheus 自定义指标暴露

虽然 Prometheus 已经拥有可直接使用的 exporter 可供使用,以满足收集不同的监控指标的需要。然而,如果我们需要收集一些自定义指标项,还是需要我们编写程序去暴露相关接口(/metric...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。