Hadoop总体架构设计建议安全Word下载.docx

上传人:b****1 文档编号:1077966 上传时间:2023-04-30 格式:DOCX 页数:22 大小:913.74KB
下载 相关 举报
Hadoop总体架构设计建议安全Word下载.docx_第1页
第1页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第2页
第2页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第3页
第3页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第4页
第4页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第5页
第5页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第6页
第6页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第7页
第7页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第8页
第8页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第9页
第9页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第10页
第10页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第11页
第11页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第12页
第12页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第13页
第13页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第14页
第14页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第15页
第15页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第16页
第16页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第17页
第17页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第18页
第18页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第19页
第19页 / 共22页
Hadoop总体架构设计建议安全Word下载.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Hadoop总体架构设计建议安全Word下载.docx

《Hadoop总体架构设计建议安全Word下载.docx》由会员分享,可在线阅读,更多相关《Hadoop总体架构设计建议安全Word下载.docx(22页珍藏版)》请在冰点文库上搜索。

Hadoop总体架构设计建议安全Word下载.docx

1.3实施战略技术路线

平台架构路线可以分为三步骤:

离线期:

根据当前情况,实现HDFS的离线处理就能够满足业务需求,这一期间需要把Hadoop基本平台构建完备(安全、规范、流程这个很重要),数据采集系统构建。

以需求驱动架构,根据本人经验大概需要一个季度的时间可以将离线期架构的模块稳定运行。

实时期:

在离线期结束后,我们对大数据处理的轮廓也有了,以及遇到的一些问题也相应的解决,这时期主要针对具体的某个实时应用场景,将实时计算模块构建出来,storm+hbase,简单会应用这些技术难度不会太大,最主要是要制定相应的使用流程与规范,为后续运营铺垫

综合期:

该时期主要是针对前两个计算模块开始搭建相应的监控系统、使得系统稳定、易用、好用,这个时期的工作要根据具体出现的问题与情况灵活调配。

2.存储平台

存储平台:

底层主要采用HDFS分布式文件系统来支撑,HortonworksCTOEric在2012全球大数据峰会上指出未来90%的数据都将存储在HDFS上。

各大厂商的计算框架在设计上都要以支持HDFS为第一前提。

数据平台在实施中需要考虑到几大问题:

安全问题、平台规范、平台监控。

2.1平台安全

通常数据平台的构建都着重于可扩展性、高可用性等,在设计上忽略了对数据安全的考虑。

在hadoop0.20x的版本上,Hadoop并没对安全做过多的考虑与设计,所以在先前的Hadoop版本中存在诸多安全问题。

2.1.1安全问题

2.1.1.1Linux终端的随意连接

Hadoop集群并没对连接其服务的Linux终端做任何的身份认证,所以任何知道其服务地址的用户都可以配置任务的Linux客户端连接Hadoop集群,直接在其拥有root权限的终端操作集群。

Hadoop的默认用户权限是基于Linux终端的用户组信息,假设HDFS的超级管理员是Hadoop用户,本来我们分配出来的终端,每个用户在终端上只有自己的一个特定账户,而且该账户对应了HDFS上的账户,这样在操作上就能够给控制到用户相关的权限。

现在如果某用户A通过另一台未知的Linux终端连接到我们的集群(这个只要用户知道我们的集群地址就可以配置),并且该用户拥有这个终端的root账户,那么该用户就可以通过这个终端操作任何HDFS用户的数据,这个对开放的数据平台来说是极度的不安全。

所以我们在研究解决这个问题需要达到的目标是连接集群的Linux终端是我们可控制的,不能通过用户随意添加。

2.1.1.2非法应用的连接

一般我们都可以开发一些应用连接Hadoop的HDFS服务,比如日志采集系统将外部的业务系统采集过来的日志直接上传到HDFS上。

在之前的数据平台并没对第三方应用做一些身份认证,任何APP只要知道其服务地址就可以往HDFS上存储数据,修改数据,这样对现有的数据是极其的不安全。

同时还可以开发一些私有的应用程序用来过度的消耗数据平台的计算资源,导致日常的业务计算得不到足够的计算资源影响正常的业务报表。

所以我们针对这个问题的研究重点是对第三方的应用程序需要设计一套认证方案,使得任何应用程序要连接数据平台的应用都要事先申请一个token,这个token可以是永久的也可以的临时,然后才能使用数据平台的服务。

2.1.1.3用户身份的冒充

在我们提交的MapReduce客户端程序中,只需要将user.name的属性设置成你期望冒充的身份你就可以以该身份进行作业提交。

这个将导致其一:

A用户冒充B用户提交作业,访问本来A用户并没有权限访问的数据,其二:

在平台做成本估算报表会将A消耗的计算资源都算到B用户身上,这样导致估算的结果不准确。

所以我们在研究解决这个问题的时候需要提供一种用户身份识别的token,这样保证每个用户不会被其他用户所冒充,保证用户的权益以及数据的安全。

2.1.1.4Web界面的任意访问

数据平台默认提供两个web界面用来供用户查询操作。

其中HDFS界面主要用来给用户查询及下载相关存储的数据,MapReduce界面主要用来用户查看其提交作业的进度,以及相关的配置文件。

但是在之前的数据平台这两个界面的访问并没有进行用户身份的控制,任何用户都可以对HDFS上的任何数据进行访问下载,这样对一些私有数据的安全性是极其没有保证。

此外任何用户都可以查看到每个作业的一些进度以及相关配置文件,有些时候我们会将一些数据库配置的账号密码存储到配置文件中,这样就会通过web界面暴露出来,会带来一些其他安全问题[16]。

所以我们在研究解决这个问题的目标就是要达到对web界面的访问达到对用户身份的控制,特定的用户通过web界面只能查看到他有权限访问的数据,以及他自己提交的作业配置信息。

2.1.1.5slave节点随意添加

Hadoop两个主要部分HDFS、MapReduce都是master/slave结构,所以在master节点确定以后,slave节点在之前的数据平台是可以随意添加到master中,这样一些不确定的slave添加有可能导致数据的丢失以及作业的失败。

假设我们每一份文件都是三个备份存储,然后我们添加三个未知的slave节点到集群中,恰好某个文件的三个备份都存储在这新添加的三个slave节点上,随后如果非法用户恶意将这三个节点同时下架,那么将导致这个文件的丢失。

此外,在MapReduce框架中我们设置了某个task尝试4次如果不成功则将被视为失败,如果新添加的这些slave节点环境配置以及扩展包配置与集群中的其他节点不一致,很可能导致task的多次失败最终将导致作业的失败。

所以我们在研究解决这个问题的时候需要严格的控制slave节点的添加。

2.1.1.6SecondNameNode节点添加

SecondNameNode主要是用于定时备份NameNode的目录树文件,同时对NameNode的日志文件与fsimage进行合并,如果不对SecondNameNode服务进行认证,那么可以任意的启动SecondNameNode,如果启动过多的话这将对NameNode的fsimage合并造成冲突。

所以在研究解决这个问题我们需要解决SecondNameNode添加的身份认证。

2.1.2身份认证

2.1.2.1Kerberos介绍

Kerberos是由MIT大学研发出来网络认证协议,其设计目标是通过一套自带的密匙认证系统为客户端及服务端做认证。

目前在Linux操作系统中都默认安装了其客户端工具。

图2.1kerberos主体结构图

如上图2.1所示,Kerberos包含两个重要部分,一个是密匙数据库,主要存储针对每个服务及相关用户的密匙,另一个是密匙分发服务器,主要提供密匙分发的服务。

客户端请求某个具体的业务前需要先请求密匙分发服务器予以获得一个票证,密匙分发服务器根据客户端请求的身份信息以及密匙数据库存储的信息进行匹配,如果匹配成功则返回一个带用户信息的票证,客户端再持有该票证向服务端请求具体的业务操作。

如果密匙分发服务器不能认证客户端的身份,那么将不能给客户端分发相关的票证。

所以在整个kerberos认证过程中实际上包含了4个主体,客户端、服务端、密匙分发服务器、密匙数据库,其中如果密匙分发服务器宕机或者密匙数据库损坏将影响整个认证过程。

图2.2客户端一次认证过程

下面我们来看看kerberos进行一次服务端认证的详细过程。

如图2.2所示。

首先客户端向KDC服务器发送TicketRequest,KDC认证客户端身份,如果认证通过则返回一个ServiceTicket,如果认证不通过则提示不能从密匙服务器中获取任何与用户相关的密匙。

当客户端获取到了ServiceTicket,将该ServiceTicket与本地身份发送到服务端,服务端根据发送过来的ServiceTicket进行效验,效验通过以后直接回应给客户端。

整个过程需要获取两次票证,第一次是用户来识别用户身份的票证,第二次是用来识别服务许可的票证。

2.1.2.2集成Kerberos

一.系统搭建:

环境以及软件包(实践环境)操作系统centos5.8

JDK1.7.0_07(根据需要下载32位或者64位)Hadoop-1.0.3(可用最新稳定版1.1.2)Kerberos(krb5-1.10.3.tar.gz)将krb5-1.10.3.tar.gz、jdk、Hadoop-1.0.3都拷贝到/opt下,/opt作为我们的安装空间,解压相关文件,规范的目录结构是良好的开端,并且将安装包备份到其他目录,以备后续不

时之需。

解压完的目录结构如下ll/opt

其中JDK1.7.0_07解压到java目录中并且建default目录用来做软链接后续好升级版本,

具体java目录的结构如下:

ll/opt/java

可以看出目前使用的版本为jdk1.7.0_07_x64

二.Kerberos安装

1.编译安装kerberos包

cd/opt/krb5-1.10.3/src执行./configure执行make&

makeinstall如果遇到错误根据错误安装gcc等依赖包(yum-installxx)默认会将相关依赖安装到/usr/local/lib下,相应的命令也拷贝到/usr/local/sbin默认会创建/usr/local/var/krb5kdc这个目录做为kerberos的工作空间

验证是否安装成功可执行whichkdb5_util能够得到正确的路径

2.确认kerberos工作空间

Centeros5.8默认安装了kerberos客户端工具,所以会存在/user/kerberos目录,目录结构为:

同时将/usr/local/var/krb5kdc目录创建软链接到/user/kerberos/var

ln-s/usr/local/var/krb5kdc/user/kerberos/var此刻/user/kerberos目录结构为:

3.修改krb5.conf此刻工作空间/usr/kerberos/var/krb5kdc/若没有任何文件,这个属于正常,首先我们需要

配置一下/etc/krb5.conf为kerberos服务端配置默认参数,系统默认的/etc/krb5.conf是一个

example数据库的配置,我们需要在这上面做修改:

[logging]default=

kdc=(kdc日志保存地址)admin_server=(kadmin日志保存地址)

[libdefaults]default_realm=HADOOP(想要创建的realm名称,一般大写)dns_lookup_realm=falsedns_lookup_kdc=false

ticket_lifetime=24h(票证的有效期)

forwardable=yes

[kdc]profile=/usr/kerberos/var/krb5kdc/kdc.conf(kdc的默认配置文件)

[realms]HADOOP={kdc=主机hostname:

88

admin_server=主机hostname:

749

default_domain=---与下面的domain_realm对应

}

[domain_realm]---domain到realm的映射

=HADOOP

[appdefaults]---客户端应用参数

pam={debug=false

ticket_lifetime=36000

renew_lifetime=36000

forwardable=truekrb4_convert=false

4.创建kerberos的数据库

修改完/ect/krb5.conf以后所有该机器上的kerberos操作都会去读取该配置文件,就可以进

行数据库创建的操作:

kdb5_utilcreate-rhadoop-s(创建名为hadoop的库)

需要输入数据库密码,然后我们再来看下工作空间

ll/usr/kerberos/var/krb5kdc/

多了以上几个文件,运行kadmin.local如果报错则删除工作空间/usr/kerberos/var/krb5kdc/*重新执行kdb5_utilcreate-rhadoop–s

5.创建kerberos的管理员

执行kadmin.local

此次需要输入管理员密码

6.修改kdc.conf修改/usr/kerberos/var/krb5kdc/kdc.conf,若没有则新建该文件,编辑内容

[kdcdefaults]

acl_file=/usr/kerberos/var/krb5kdc/kadm5.acl(管理员权限配置)

dict_file=/usr/share/dict/words(加密字典,根据实际情况修改,可不改)

admin_keytab=/usr/kerberos/var/krb5kdc/kadm5.keytab

v4_mode=nopreauth

[realms]

HADOOP={

master_key_type=des3-hmac-sha1

supported_enctypes=des3-hmac-sha1:

normaldes-cbc-crc:

normal

#加密算法

7.配置kadmin的操作权限简单修改赋予所有权限

编辑/usr/kerberos/var/krb5kdc/kadm5.acl,若文件不存在则新建该文件,编辑内容如下:

*/*

8.配置/usr/kerberos/var/krb5kdc/kadm5.keytab

kadmin.local-q"

ktadd-k/usr/kerberos/var/krb5kdc/kadm5.keytabkadmin/admin"

kadmin.local-q"

ktadd-k/usr/kerberos/var/krb5kdc/kadm5.keytabkadmin/changepw"

9.启动kdc、kadmin

/etc/init.d/kadminstart

/etc/init.d/krb5kdcstart若没找到相关命令则用以下命令替换

/usr/kerberos/sbin/kadminstart

/usr/local/sbin/krb5kdcstart

10kerberos操作

kadmin.local:

addprinc-randkeyhost/域名//生产本机的host随机key用于鉴权https请求

addprinc-randkeyhadoop/本机域名//生产本机的hadoop随机key用户启动

datanodekadmin.local:

ktadd-k本地路径/hadoop.keytabhadoop/本机域名host/本机域名

Kinit-k-tkeytabprinciple申请principleKlist查看生成的principleKdestroy摧毁生成的principle

三.同步节点配置

同步所有节点的/etc/hosts、/etc/krb5.conf为各个节点生成相应的keytab文件

Hadoop.keytab包含hadoop/_HOST、host/_HOSTmapred.keytab包含mapred/_HOST、host/_HOST将keytab配置到统一的路径下/opt/keys/*.keytab

四.Hadoop配置

1.配置core-site.xml并同步到所有节点

<

property>

name>

hadoop.security.authorization<

/name>

value>

true<

/value>

description>

Isservice-levelauthorizationenabled?

/description>

/property>

hadoop.security.authentication<

kerberos<

Possiblevaluesaresimple(noauthentication),andkerberos<

2.配置NameNode

!

--kerberos-nameNode-config修改hdfs-site.xml-->

dfs.https.address<

namenodeHost:

50470<

dfs.https.port<

dfs.block.access.token.enable<

dfs.namenode.keytab.>

/opt/keys/hadoop.keytab<

dfs.namenode.kerberos.principal<

hadoop/<

dfs.namenode.kerberos.https.principal<

host/<

3.配置secondNameNode-hdfs-site.xml

<

dfs.secondary.http.address<

secnamenodeHost:

50090<

dfs.secondary.https.address<

0.0.0.0:

50495<

dfs.secondary.https.port<

dfs.secondary.namenode.keytab.>

dfs.secondary.namenode.kerberos.principal<

dfs.secondary.namenode.kerberos.https.principal<

4.configdatanode<

--kerberosDataNodeconfig-->

dfs.datanode.data.dir.perm<

700<

Permissionsforthedirectoriesononthelocalwhere

theDFSdatanodestoreitsblocks.Thepermissionscaneitherbeoctalorsymbolic.<

dfs.datanode.address<

1004<

dfs.datanode.http.address<

1006<

dfs.datanode.keytab.>

dfs.datanode.kerberos.principal<

dfs.datanode.kerberos.https.principal<

----------------------------------------------------------另外更改supergroup为hadoop

$HADOOP_HOME/conf/hadoop-env.sh新增一行

exportHADOOP_SECURE_DN_USER=hadoop指定以hadoop身份启动d

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2