hadoop大数据安全管理:ldap、keberos、ranger

hadoop大数据中认证一般用keberos,授权用ranger,kerberos和Ldap组件共同组成整个集群的安全鉴权体系,Ldap负责用户数据存储。

kerberos
Kerberos 是一种网络认证协议,用于在不安全的网络中以安全的方式对用户和服务进行身份验证。它通过使用密钥加密技术来防止数据被窃听或篡改,确保了认证过程的安全性。kerberos所管理的一个用户或者服务叫Principal,其格式通常如下:primary/instance@realm

默认情况下,Hadoop 集群是没有启用安全认证的,我们可以直接连接。然而,在生产环境中,Hadoop 集群通常会启用安全认证,例如 Kerberos 认证。在TBDS产品中创建hadoop集群时,可以选择是否开启kerberos认证,并且每个用户创建时,系统会生成一个keytab文件。

Kerberos中的用户认证,可通过密码或者密钥文件证明身份,keytab指密钥文件。Keytab文件作为向Kerberos系统提供服务的凭证,在不需要用户提供用户名和密码的情况下进行身份验证。
生成keytab文件:

#登录
kadmin -p your_principal@YOUR_REALM -r YOUR_REALM#添加用户:
addprinc new_principal
#生成keytab
ktadd -k /home/user01/user01.keytab -norandkey user01
#认证
kinit -kt /home/user01/user01.keytab user01

以Java为例,使用kerberos生成的keytab文件认证进行登录hadoop的主要api和代码如下:

 import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.fs.FileSystem;public static void main(String[] args) throws Exception {System.setProperty("java.security.krb5.conf", "/path/to/krb5.conf");Configuration configuration = new Configuration();configuration.set("hadoop.security.authentication", "Kerberos");// 使用UserGroupInformation登录UserGroupInformation.setConfiguration(configuration);UserGroupInformation.loginUserFromKeytab("kerberos_user_principal", "/path/to/kerberos_user.keytab");// 获取认证后的UserGroupInformation实例UserGroupInformation ugi = UserGroupInformation.getLoginUser();// 使用doAs方法执行需要认证的操作ugi.doAs(new PrivilegedExceptionAction<Void>() {public Void run() throws Exception {FileSystem fileSystem = FileSystem.get(configuration);// 执行文件系统操作return null;}}

如果将kerberos与LDAP集成通常采用以下架构:
客户通过kerberos获取票据,然后使用LDAP进行用户身份验证。LDAP服务器作为用户身份信息的存储库,使用kerberos票据进行身份验证。流程如下:

在这里插入图片描述

ldap

https://cloud.tencent.com/developer/article/2040490
Ldap是一种轻量级目录访问协议,数据被组织成树状目录,访问速度非常快,但是写性能差,且不支持事务。适用于数据量少,一次写多次读的场景,基本局限于用户、账户数据存储。Linux系统开源Ldap软件是OpenLDAP,Windows系统则是AD(Active Directory)。Ldap目录数据库中数据组织结构实例如下:
在这里插入图片描述
数据的最小粒度是Entry(条目),每个条目用户唯一标识名(例如admin用户的标识名就是User=admin: Group:干部:OU=人事部:O=A公司)。每个Entry可以有多个属性(Attribute)(例如邮箱、地址等)。条目相当于关系https://cloud.tencent.com/solution/database?from_column=20065&from=20065中表的记录;条目是具有区别名DN(Distinguished Name)的属性(Attribute)集合,DN相当于关系数据库表中的关键字(Primary Key);属性由类型(Type)和多个值(Values)组成,相当于关系数据库中的域(Field)由域名和数据类型组成,只是为了方便检索的需要,LDAP中的Type可以有多个Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。LDAP把数据存放在文件中,为提高效率使用基于索引的文件数据库,而不是关系数据库。

大数据各服务组件不会直接去访问操作系统Ldap去获取用户数据,避免大量客户端连接造成认证服务器负载过高,客户端访问操作系统sssd服务(操作系统缓存服务守护进程)去获取用户数据(执行id命令),而sssd会从Ldap中获取用户信息。
LDAP是一个存储静态相关信息的服务,适合“一次记录多次读取”。LDAP对查询进行了优化,与写性能相比LDAP的读性能要优秀很多。
LDAP目录和UNIX文件系统之间有三点不同:
第一是LDAP模型没有真正的根条目。文件系统有一个根目录,它是所有文件和目录的祖先。在LDAP目录中,根条目是概念性的,不作为一个可以存放数据的条目存在。
第二是目录的每个节点都可以包含数据,任何节点都可能作为一个容器,即LDAP条目允许在他的下面有子节点。文件系统的每个节点或者是文件或者是目录,但不能同时是二者。在文件系统中,只有目录可以有子节点,而且只有文件可以包含数据。LDAP中的条目既可以是数据同时也可以兼任目录的角色。
第三是节点命名方式的不同。LDAP名称与文件系统名称的方向是相反的。文件系统的表示方法是从根目录到深层目录一层一层表示,而LDAP则相反,将叶子节点放在前面逐层目录向上推导,最后写出根目录
LDAP中记录的表示方法,首先确认以下几个概念:
dn :Distinguished Name;唯一可区别的名称,记录了一条记录的位置,相当于主键
dc :domain component一条记录所属区域(域名)
ou :Organization Unit;一条记录所属组织(组织机构,部门)
cn/uid:Common Name;可用来区分身份的属性,等同于一条记录的名字/ID
一个完整的dn如下所示,以此查询得到一条完整的记录,然后再根据需要取出其中的指定的属性(Attribute)的值。
dn:cn=cc,ou=imcuser-test-ld,dc=zhjdtest,dc=com
dn是从树的叶子节点逐层向根节点推导出的一条唯一路径,表明了这个数据结构中的唯一一条记录。

ranger

ranger允许用户使用一个管理工具对hadoop中的组件和工具进行细粒度的授权,支持对hadoop组件所有设计安全的审计行为集中化管理,它支持的框架包括hadoop、hive、hbase、knox、kafka、yarn,比如对于hive来说,安装ranger hive-plugin插件,通过页面可以用ranger来授予用户对于库、表、函数的权限。对于hdfs,可以为hdfs用户配置hdfs文件或目录的读写执行权限。
总的来说ranger可以设置对于各个资源的读、写、执行权限,Raner是由三个部分组件:Ranger Admin 、Ranger Usersync 与Ranger plugin组成

组件名称 说明
Admin Ranger Admin Portal是安全管理的中心接口。 用户可以创建和更新策略,这些策略存储在策略数据库中。 每个组件内的Plugins会定期轮询这些策略。Portal还包括一个审计服务器,它发送从插件收集的审计数据,以便存储在HDFS或关系数据库中
UserSync 同步实用工具来从Unix或LDAP或Active Directory中拉取用户和组。 用户或组信息存储在Ranger门户中,用于策略定义。
PlugIn 插件是嵌入每个集群组件进程的轻量级Java程序。 例如,Apache Hive的Apache Ranger插件嵌入在Hiveserver2中。 这些插件从中央服务器提取策略,并将它们本地存储在一个文件中。 当用户请求通过组件时,这些插件拦截请求并根据安全策略进行评估。 插件还可以从用户请求中收集数据,并按照单独的线程将此数据发送回审计服务器
在ranger部署好后,可以直接通过ui界面进行授权:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】Ubuntu22.04 安装 MySQL8 数据库详解

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》《MySQL》《Qt》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 一、安装目录 1.1 更新软件源 sheepAron:/root$ sudo apt update1.2 安装mysql_ser…

Spring之Spring Bean的生命周期

Spring Bean的生命周期 通过BeanDefinition获取bean的定义信息调用构造函数实例化beanBean的依赖注入处理Aware接口&#xff08;BeanNameAware、BeanFactoryAware、ApplicationContextAware&#xff09;Bean的后置处理器BeanPostProcessor-前置初始化方法&#xff08;Initiali…

UE4 自动换行——按排序关键字1.2.3.

要自动换行的字符串举例&#xff1a;“有效节点为:1.demo-worker-02 2.demo-worker-01 3.demo-master-01” 1.获取相邻两位字符串&#xff0c;组合后与关键字比较 2.当两位字符串与关键字相等&#xff0c;附加一次换行 3.其他例如 1)2)3)、(1)(2)(3)、<1><2><…

springboot配置文件如何读取pom.xml的值

比如想读取profile.active的值&#xff0c;默认属性为pro 在maven中加入以下插件&#xff1a; <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version>&l…

goenv丝滑控制多版本go

安装 先装下goenv brew install goenv去 ~/.bash_profile 添加一下 export GOENV_ROOT"$HOME/.goenv" export PATH"$GOENV_ROOT/bin:$PATH" eval "$(goenv init -)"执行一下让配置生效 source ~/.bash_profile插一嘴&#xff0c;如果之前是在…

保持形态真实性的大脑生成建模| 文献速递-基于人工智能(AI base)的医学影像研究与疾病诊断

Title 题目 Realistic morphology-preserving generative modelling of the brain 保持形态真实性的大脑生成建模 01 文献速递介绍 医学影像研究通常受到数据稀缺和可用性的限制。治理、隐私问题和获取成本都限制了医学影像数据的访问&#xff0c;加上深度学习算法对数据的…

(十九)原生js案例之h5地里位置信息与高德地图的初使用

h5 地里位置信息 1. 获取当前位置信息 window.onload function () {const oBtn document.querySelector("#btn");const oBox document.querySelector("#box");oBtn.onclick function () {window.navigator.geolocation.getCurrentPosition(function (…

SQL每日一题:游戏玩法分析 I

题干 活动表 Activity&#xff1a; --------------------- | Column Name | Type | --------------------- | player_id | int | | device_id | int | | event_date | date | | games_played | int | --------------------- 在 SQL 中&#xff0c;表的主键是 (player_id, eve…

49 IRF 经典案例

49 IRF 经典案例 一 H3C-FWW-RF 脚本 <IRF-MATER-FW1000>display current-configuration #version 7.1.064, Alpha 7164 #sysname IRF-MATER-FW1000 # context Admin id 1 #telnet server enable #irf mac-address persistent timerirf auto-update enableundo irf l…

案例研究|柯尼卡美能达软件开发(大连)有限公司基于DataEase构筑内部数据可视化体系

柯尼卡美能达软件开发&#xff08;大连&#xff09;有限公司于2007年5月25日注册成立。公司以“洞悉在工作的人们真实情况&#xff0c;探寻他们的愿望&#xff0c;持续提供使人们更加幸福的服务”为使命&#xff0c;致力于系统品质测试服务、软件开发服务、IT安全服务、高级BPO…

2024最新手机软件APP下载排行网站源码 软件下载站PHP源码

源码介绍 这是一款简洁蓝色的手机软件下载应用排行、平台和最新发布网站源码&#xff0c;主要包括主页、APP列表页、APP详情介绍页、新闻资讯列表、新闻详情页、关于我们等模块页面。 软件下载站PHP网站源码&#xff0c;简单的部署上线&#xff0c;访问首页安装程序&#xff…

小程序收银视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

【测开能力提升-Javascript】JavaScript运算符流程结构

1. 递增递减运算符 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script>// 前置递增运算符var age10age //类似于ageage1&#xff0c; 先加1后返回值alert(age)// 后置…

总结一些vue3小知识3

1.限制时间选择器只能选择后面的日期 说明&#xff1a;disabled-date属性是一个用来判断该日期是否被禁用的函数&#xff0c;接受一个 Date 对象作为参数。 应该返回一个 Boolean 值。 <el-date-picker class"w180" v-model"datas.form.timeDate[0]" …

Shiro安全框架(上)

目录 第一章 权限概述 1、什么是权限 2、身份认证概念-Authentication 【1】什么是认证 【2】对象 2、用户授权概念-Authorization 【1】什么是授权 【2】授权流程 第二章 Shiro概述 1、Shiro简介 【1】什么是Shiro? 【2】Shiro 的特点 2、核心组件 第三章 Shiro…

HormonyOs之 路由简单跳转

Navigation路由相关的操作都是基于页面栈NavPathStack提供的方法进行&#xff0c;每个Navigation都需要创建并传入一个NavPathStack对象&#xff0c;用于管理页面。主要涉及页面跳转、页面返回、页面替换、页面删除、参数获取、路由拦截等功能。 Entry Component struct Index …

八月超市营销活动规划

八月骄阳似火&#xff0c;尽管多地仍笼罩在炎热的夏意之中&#xff0c;但随着立秋节气的到来&#xff0c;以及七夕节、中元节等传统节日的相继而至&#xff0c;为商家们提供了极佳的营销契机。巧妙地根据这些节日节气规划每一周期的营销活动&#xff0c;不仅能营造浓厚的节日氛…

Java面试篇类加载过程详解(吊打面试官)

类加载过程详解 文章目录 类加载过程详解类的生命周期类加载过程1.加载2.验证3.准备4.解析5.初始化6.类卸载 类的生命周期 类从被加载到虚拟机内存中开始到卸载内存为止&#xff0c;它的整个生命周期简单概括加载-验证-准备-解析-初始化-使用-卸载 验证、准备、解析这三个阶段…

使用ESP32搭建简单的WiFi控制LED的Web服务器

在这篇博客中&#xff0c;我将展示如何使用ESP32或ESP8266开发板通过WiFi搭建一个简单的Web服务器&#xff0c;并使用它来控制一个LED的开关。首先确保esp32与自己的手机或者电脑在同一WiFi环境下 效果展示 led 项目准备 在开始之前&#xff0c;请确保你已经准备好以下材料&a…

【HarmonyOS】关于鸿蒙消息推送的心得体会(二)

【HarmonyOS】关于鸿蒙消息推送的心得体会&#xff08;二&#xff09; 前言 推送功能的开发与传统功能开发还是有很大区别。首先最大的区别点就在于需要多部门之间的协同&#xff0c;作为鸿蒙客户端开发&#xff0c;你需要和产品&#xff0c;运营&#xff0c;以及后台开发一起…