首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
技术百科首页 >Hadoop安全 >Hadoop安全如何实现服务端到客户端的双向认证?

Hadoop安全如何实现服务端到客户端的双向认证?

词条归属:Hadoop安全

Hadoop安全实现服务端到客户端的双向认证,​核心依赖Kerberos协议​(默认且主流方案),辅以SSL/TLS双向认证​(补充场景,如Web UI)。两者均通过“票据/证书交换+相互验证”机制,确保服务端与客户端的身份真实性,以下是详细实现逻辑与步骤:

一、核心机制:Kerberos协议实现双向认证

Kerberos是Hadoop生态的标准认证协议,通过“票据授予票据(TGT)+服务票据(ST)”的交换,实现客户端与服务端的双向身份验证,彻底杜绝明文密码传输,是Hadoop安全的基础。

1. Kerberos双向认证的核心流程

Kerberos的认证过程涉及客户端(Client)​认证服务器(AS)​票据授权服务器(TGS)​三方,流程如下(以客户端访问HDFS NameNode为例):

步骤1:客户端获取TGT(初始认证)​​ 客户端向AS发送KRB_AS_REQ请求(包含预认证数据,如时间戳),AS验证客户端身份(如密码)后,返回TGT​(加密,仅KDC可解密)和Session Key​(用于后续通信)。

步骤2:客户端获取ST(服务票据)​​ 客户端用TGT向TGS发送KRB_TGS_REQ请求(包含目标服务名称,如hdfs/namenode@EXAMPLE.COM),TGS验证TGT有效性后,返回ST​(加密,仅目标服务可解密)和Service Session Key​(用于客户端与服务端通信)。

步骤3:客户端访问服务(双向验证)​​ 客户端携带ST向目标服务(如NameNode)发送KRB_AP_REQ请求,服务端用自身密钥解密ST,验证客户端身份;随后,服务端返回响应票据​(用Service Session Key加密),客户端解密后确认服务端身份。至此,​客户端与服务端完成双向认证

2. Hadoop中Kerberos的配置步骤

要在Hadoop中启用Kerberos双向认证,需完成以下配置:

​(1)部署KDC(Key Distribution Center)​​ 在独立节点安装Kerberos服务(如MIT Kerberos),配置krb5.conf(定义KDC地址、Realm、加密类型)和kdc.conf(定义KDC数据库路径、加密策略)。

​(2)创建Kerberos主体(Principal)​​ 为Hadoop组件(如NameNode、DataNode、ResourceManager)创建服务主体,格式为服务名/主机名@REALM(如hdfs/hadoop01@EXAMPLE.COM),并生成Keytab文件(存储主体密钥,用于自动认证)。 示例命令: kadmin.local -q "addprinc -randkey hdfs/hadoop01@EXAMPLE.COM" # 创建主体 kadmin.local -q "xst -k /etc/security/keytab/hdfs.service.keytab hdfs/hadoop01@EXAMPLE.COM" # 生成Keytab

​(3)配置Hadoop启用Kerberos​ 修改Hadoop核心配置文件,关联Kerberos主体与Keytab:

  • core-site.xml​(全局启用Kerberos): <configuration> <property> <name>hadoop.security.authentication</name> <value>kerberos</value> <!-- 启用Kerberos认证 --> </property> <property> <name>hadoop.security.authorization</name> <value>true</value> <!-- 启用授权 --> </property> </configuration>
  • hdfs-site.xml​(HDFS组件配置): <configuration> <property> <name>dfs.namenode.kerberos.principal</name> <value>hdfs/_HOST@EXAMPLE.COM</value> <!-- NameNode服务主体 --> </property> <property> <name>dfs.namenode.keytab.file</name> <value>/etc/security/keytab/hdfs.service.keytab</value> <!-- Keytab路径 --> </property> <property> <name>dfs.datanode.kerberos.principal</name> <value>dn/_HOST@EXAMPLE.COM</value> <!-- DataNode服务主体 --> </property> <property> <name>dfs.datanode.keytab.file</name> <value>/etc/security/keytab/dn.service.keytab</value> <!-- DataNode Keytab路径 --> </property> </configuration>

​(4)分发Keytab与重启集群​ 将Keytab文件分发至各节点(如通过scp),设置权限(仅服务用户可读取),然后重启Hadoop集群(如start-dfs.sh、start-yarn.sh)。

3. Kerberos双向认证的优势
  • 防身份伪造​:票据由KDC加密,服务端无法伪造客户端身份,客户端也无法伪造服务端身份。
  • 无明文传输​:密码不通过网络传输,避免密码泄露。
  • 单点登录(SSO)​​:用户获取TGT后,可访问多个服务(如HDFS、YARN)无需重复认证。

二、补充机制:SSL/TLS双向认证(Web UI场景)​

SSL/TLS双向认证主要用于Web UI​(如NameNode的50070端口、ResourceManager的8088端口),确保客户端与Web服务之间的双向身份验证,防止非法用户访问Web界面。

1. SSL/TLS双向认证的核心流程

步骤1:客户端验证服务端证书​ 客户端向服务端发送连接请求,服务端返回数字证书​(包含公钥、域名等信息),客户端验证证书的有效性(如是否由信任的CA颁发、域名是否匹配)。

步骤2:服务端验证客户端证书​ 服务端要求客户端提供数字证书​(客户端需提前从CA获取),服务端验证客户端证书的有效性(如是否由信任的CA颁发、是否在允许的列表中)。

步骤3:建立加密通道​ 双方验证通过后,使用对方的公钥加密会话密钥,建立SSL/TLS加密通道,后续通信均通过该通道传输。

2. Hadoop中SSL/TLS双向认证的配置步骤

要在Hadoop中启用SSL/TLS双向认证,需完成以下配置:

​(1)生成证书与私钥​ 使用OpenSSL生成服务端证书(如server.crt)和私钥(如server.key),并为每个客户端生成证书(如client.crt)和私钥(如client.key)。 示例命令(服务端): openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes # 生成服务端证书 openssl req -x509 -newkey rsa:2048 -keyout client.key -out client.crt -days 365 -nodes # 生成客户端证书

​(2)配置Hadoop SSL​ 修改Hadoop的SSL配置文件(如ssl-server.xml、ssl-client.xml),指定证书与私钥路径:

  • ssl-server.xml​(服务端配置): <configuration> <property> <name>ssl.server.keystore.location</name> <value>/etc/hadoop/ssl/server.jks</value> <!-- 服务端密钥库(包含服务端证书) --> </property> <property> <name>ssl.server.keystore.password</name> <value>server_keystore_password</value> <!-- 密钥库密码 --> </property> <property> <name>ssl.server.truststore.location</name> <value>/etc/hadoop/ssl/truststore.jks</value> <!-- 服务端信任库(包含客户端CA证书) --> </property> <property> <name>ssl.server.truststore.password</name> <value>truststore_password</value> <!-- 信任库密码 --> </property> <property> <name>ssl.client.auth</name> <value>true</value> <!-- 启用客户端证书验证(双向认证) --> </property> </configuration>
  • ssl-client.xml​(客户端配置): <configuration> <property> <name>ssl.client.keystore.location</name> <value>/etc/hadoop/ssl/client.jks</value> <!-- 客户端密钥库(包含客户端证书) --> </property> <property> <name>ssl.client.keystore.password</name> <value>client_keystore_password</value> <!-- 密钥库密码 --> </property> <property> <name>ssl.client.truststore.location</name> <value>/etc/hadoop/ssl/truststore.jks</value> <!-- 客户端信任库(包含服务端CA证书) --> </property> <property> <name>ssl.client.truststore.password</name> <value>truststore_password</value> <!-- 信任库密码 --> </property> </configuration>

​(3)启用SSL并重启集群​ 在core-site.xml中启用SSL: <configuration> <property> <name>hadoop.ssl.enabled</name> <value>true</value> <!-- 启用SSL --> </property> <property> <name>hadoop.ssl.server.conf</name> <value>/etc/hadoop/ssl/ssl-server.xml</value> <!-- 服务端SSL配置文件 --> </property> <property> <name>hadoop.ssl.client.conf</name> <value>/etc/hadoop/ssl/ssl-client.xml</value> <!-- 客户端SSL配置文件 --> </property> 重启Hadoop集群,使配置生效。

3. SSL/TLS双向认证的应用场景
  • Web UI访问​:防止非法用户通过浏览器访问Hadoop Web界面(如NameNode的50070端口),需客户端提供证书才能访问。
  • API调用​:防止非法应用通过Hadoop REST API(如YARN的ResourceManager API)调用集群服务,需客户端提供证书才能调用。

三、两种机制的选择与协同

  • Kerberos​:是Hadoop的默认认证机制,适用于所有Hadoop组件​(如HDFS、YARN、Hive)的内部通信,实现服务端与客户端的双向认证,是Hadoop安全的基础。
  • SSL/TLS双向认证​:是补充机制,适用于Web UIREST API等场景,实现客户端与服务端的双向认证,增强Web层面的安全性。

在实际部署中,​通常以Kerberos为主​(覆盖所有组件通信),​辅以SSL/TLS双向认证​(覆盖Web UI等场景),形成完整的安全防护体系。

相关文章
PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证
openssl采用C语言作为开发语言,这使得它具有优秀的跨平台性能。openssl支持Linux、UNIX、windows、Mac等平台。openssl目前最新的版本是0.9.8e.
小小工匠
2024-05-26
5770
大数据权限与安全
权限的管控,历来是大数据平台中最让人头疼的问题之一。管得严了,业务不流畅,用户不开心,放得宽了,安全没有底,你能放心?而且大数据平台组件,服务众多;架构,流程复杂,有时候,就是你想管,也未必能管得起来。
sparkle123
2018-12-05
3.6K0
Hadoop安全机制深度剖析:Kerberos认证与HDFS ACL细粒度权限控制
在大数据时代,Hadoop作为分布式计算框架的核心组件,其安全性直接关系到企业数据资产的保护。随着数据价值的不断提升,Hadoop安全机制已从早期的"简单信任模式"演进为包含多重防护措施的综合体系,其重要性主要体现在三个方面:防止未授权访问、保障数据完整性以及满足合规性要求。
用户6320865
2025-08-27
2710
一文读懂Https的安全性原理、数字证书、单项认证、双项认证等
本文引用了作者Smily(博客:blog.csdn.net/qq_20521573)的文章内容,感谢无私分享。
JackJiang
2018-08-29
3K0
你只知大数据的便利,却不知漏洞——hadoop安全完整解析
内容来源:2017 年 07 月 29 日,威客安全技术合伙人安琪在“CDAS 2017 中国数据分析师行业峰会”进行《大数据平台基础架构hadoop安全分析》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
IT大咖说
2018-07-30
2.5K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券