kerberos互信详细步骤

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/using_trusts

效果:用TESTA集群的keytab,能访问TESTB集群的服务。

一、KDC互信步骤:
准备工作:/etc/hosts 主机名映射及网络策略打通。

1、首先在两台kdc都添加2个pricipals:
krbtgt/TESTA.COM@TESTB.COM
krbtgt/TESTB.COM@TESTA.COM

    这2个同样的pricipal分别于两台kdc上的密码、密钥版本号kvno、加密方式必须一致。
      <c69ef79dd773df7bb50e26e5e322ca28.png>
      <fd91413e349ec593533c5a9f79d928ea.png>

举例:密码、密钥版本号kvno、加密方式必须一致。
addprinc -e aes256-cts-hmac-sha1-96:normal,aes128-cts-hmac-sha1-96:normal -kvno 2 krbtgt/HADOOP.COM@ASIAINFO
addprinc -e aes256-cts-hmac-sha1-96:normal,aes128-cts-hmac-sha1-96:normal -kvno 2 krbtgt/ASIAINFO@HADOOP.COM
根据提示输入密码: Admin@123Huawei@2020

说明:
密钥版本号(kvno):当用户更改principal的密码或管理员更新应用程序服务器的密钥(提取新的keytab)时,会自动递增该值来记录每次更改。标识密钥版本的计数器的当前值被称为密钥版本号,简称为kvno。
关于加密方式:normal和special的区别:keyslot密码盐不同。
注意:华为的kdc仅支持normal。https://support.huawei.com/enterprise/zh/doc/EDOC1100074567/300a6b1
<7a9d0b944d1a064afb7c4959f239931b.png>
<f9b874833edfd8a42122ed251aaa1d03.png>

/etc/krb5.conf中也必须配置为支持normal加密。
   supported_enctypes = aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal

2、验证这两个entries是否具有匹配的kvno和加密type(非常重要):
查看命令 getprinc <principal_name> ,如:
getprinc krbtgt/HADOOP.COM@ASIAINFO
getprinc krbtgt/ASIAINFO@HADOOP.COM
<1f15f4757c352186539350ff3f5b10c4.png>

3、分别在这两台kdc中,执行以下命令,验证密码是否一致(非常重要):
kinit krbtgt/HADOOP.COM@ASIAINFO 输入密码 Admin@123Huawei@2020 验证密码是否正确。
kinit krbtgt/ASIAINFO@HADOOP.COM

4、 两个集群内的所有主机,均需修改/etc/krb5.conf 配置信任关系,这样才能找到对方。
<6b7f38c22dea215b2c4fd4ffc9344fea.png>
<0861f837f065bdcbcb4113684f87d7e3.png>
在集群1上 TESTA.COM 29.@@@.53(sy@@@)上修改:

udp_preference_limit = 1

[realms]
TESTA.COM = {
kdc = sy@@@
admin_server = sy@@@
master_kdc = sy@@@
default_domain = .TESTA.COM
}

TESTB.COM = {
kdc = s@@@8
admin_server = s@@@8
master_kdc = s@@@8
default_domain = .TESTB.COM
}

[domain_realm]
.testa.com = TESTA.COM
testa.com = TESTA.COM
.testb.com = TESTB.COM
testb.com = TESTB.COM
sy@@@ = TESTA.COM #kdc主机
s@@@8 = TESTB.COM #kdc主机
sy@@@ = TESTA.COM #nn active主机 最好把standby也加上!!! 必须要配置!!!
s@@@8 = TESTB.COM #nn active主机
[capaths]
TESTA.COM = {
TESTB.COM = .
}
TESTB.COM = {
TESTA.COM = .
}

在集群2上 TESTB.COM 29.@@@.54(s@@@8)上修改/ec/krb5.conf:

[realms]
TESTA.COM = {
kdc = sy@@@
admin_server = sy@@@
master_kdc = sy@@@
default_domain = .TESTA.COM
}

TESTB.COM = {
kdc = s@@@8
admin_server = s@@@8
master_kdc = s@@@8
default_domain = .TESTB.COM
}

[domain_realm]
.testb.com = TESTB.COM
testb.com = TESTB.COM
.testa.com = TESTA.COM
testa.com = TESTA.COM
sy@@@ = TESTA.COM #kdc主机
s@@@8 = TESTB.COM #kdc主机
sy@@@ = TESTA.COM #nn active主机 最好把standby也加上!!!
s@@@8 = TESTB.COM #nn active主机

[capaths]
TESTB.COM = {
TESTA.COM = .
}
TESTA.COM = {
TESTB.COM = .
}

5、重启Namdnode及KDC服务
重启kerberos服务之后,会利用kvno工具获取对方域的ticket。

6、注意:
即便不做kdc互信,只在krb5.conf中融合多个realm,也可以直接使用kinit 认证不同的principal,会根据realm自动匹配不同的kdc。故只是kinit成功,并不代表互信成功。

A A集群 hdfs权限。A-principal --> A A集群权限
A-principal B集群。追加A集群解析RULE,–A B集群权限

二、KDC互信后,还需要对每种要访问的服务配置principal和本地系统用户的映射关系

(一)、如果是hadoop集群的互信,则配置hadoop集群的两个kdc中租户principal的映射关系。
1、修改core-site.xml(两个域都要配置)配置principal和user的映射RULES

hadoop.security.auth_to_local

RULE:1:$1@$0s/./ocdp/ 对端集群的smoker转换为ocdp
RULE:[1:$1@ 0 ] ( . ∗ @ T E S T A C ˙ O M 0](^.*@TESTA\.COM 0](.@TESTAC˙OM)s/^(.
)@TESTA.COM$/$1/g
RULE:[2:$1@ 0 ] ( . ∗ @ T E S T A C ˙ O M 0](^.*@TESTA\.COM 0](.@TESTAC˙OM)s/^(.)@TESTA.COM$/$1/g
RULE:[1:$1@ 0 ] ( . ∗ @ T E S T B C ˙ O M 0](^.*@TESTB\.COM 0](.@TESTBC˙OM)s/^(.
)@TESTB.COM$/$1/g
RULE:[2:$1@ 0 ] ( . ∗ @ T E S T B C ˙ O M 0](^.*@TESTB\.COM 0](.@TESTBC˙OM)s/^(.*)@TESTB.COM$/$1/g
DEFAULT

2、修改hdfs-site.xml(两个域都要配置)
在hdfs-site.xml,设置允许的realms
在hdfs-site.xml中设置dfs.namenode.kerberos.principal.pattern为""

dfs.namenode.kerberos.principal.pattern

3、测试
TESTA上使用hdfs/sy@@@@TESTA.COM访问两个集群的文件 hdfs dfs -ls hdfs://domainB.com:8020
TESTB上使用hdfs/s@@@8@TESTB.COM访问两个集群的文件 hdfs dfs -ls hdfs://domainA.com:8020

(二)、如果要消费kafka,则需修改kafka中principal和user的映射RULES
kdc互信成功后,修改kafka的配置信息, 修改server.properties中的sasl.kerberos.principal.to.local.rules属性:
<56f8fa0b24af4ca31a6d15ff2a19c46f.png>

其原来的默认值是:
<13789abf22ec703759e7a2cd11b2dcdf.png>

增加:
RULE:1:$1@$0s/@.*//,

原值:
RULE:1:$1@$0s/./ocdp/,
RULE:1:$1@$0s/@.
//,
RULE:2:$1@$0s/./ocdp/,
RULE:2:$1@$0s/.
/ocdp/,
RULE:2:$1@$0s/./ocdp/,
RULE:2:$1@$0s/.
/ocdp/,
RULE:2:$1@$0s/./rangertagsync/,
RULE:2:$1@$0s/.
/rangerusersync/,
DEFAULT

验证该规则是否正确:
该规则配置好以后,使用以下命令验证:
hadoop org.apache.hadoop.security.HadoopKerberosName FlinkUser@hadoop.com

三、附录:sasl.kerberos.principal.to.local.rules配置说明
参考文档:https://community.cloudera.com/t5/Community-Articles/Auth-to-local-Rules-Syntax/ta-p/245316
参阅kerberos文档:https://web.mit.edu/Kerberos/krb5-latest/doc/admin/conf_files/krb5_conf.html#realms。

sasl.kerberos.principal.to.local.rules的格式是一个列表,其中每个规则的工作方式与Kerberos 配置文件 (krb5.conf)中的auth_to_local相同。
该规则也支持小写规则,可通过在规则的末尾添加“/L”,强制转移全部结果为小写。
每个规则都以RULE开头:并包含一个表达式,格式如下。
RULE:n:strings/pattern/replacement/
RULE:n:strings/pattern/replacement/g
RULE:n:strings/pattern/replacement//L
RULE:n:strings/pattern/replacement/g/L

sasl.kerberos.principal.to.local.rules,用于将principal的name与本地系统用户name的映射规则。
RULE:定义一个表达式。
格式为:RULE:n:strings/pattern/replacement/g
n表示:目标principal中(不含realm部分)共有几部分。如果principal的组成部分匹配该n值,则会将principal的realm替换为 0 ,并将 p r i n c i p a l 中的第 n 个组成部分替换为 0,并将principal中的第n个组成部分替换为 0,并将principal中的第n个组成部分替换为n。
通常第二部分可以忽略,因为第2部分通常为主机名。故配置为 RULE:[1:$1@$0] 即可。
RULE:[1:$1@$0] 会将ambari-qa@EXAMPLE.COM 转换为ambari-qa@EXAMPLE.COM。
RULE:[2:$1@$0] 会将nn/c6501.ambari.apache.org@EXAMPLE.COM 转换为nn@EXAMPLE.COM。
string部分:如果principal是john/admin,则[2:$2$1foo]意味着会将整个principal提取转换为字符串“adminjohnfoo”。
regexp部分:principal提取转换后的字符串,是否匹配该正则表达式。如果匹配,则进行后续的替换。
举例:正则表达式 (.*@EXAMPLE.COM)
匹配以下principal:ambari-qa@EXAMPLE.COM 、nn/c6501.ambari.apache.org@EXAMPLE.COM、any_name@EXAMPLE.COM
不匹配以下principal:ambari-qa@NOT.EXAMPLE.COM 、nn/c6501.ambari.apache.org@OTHER.REAM

替换规则 s/pattern/replacement/ 和 s/pattern/replacement/g
如果principal转换后的字符串与正则表达式匹配,那么[s//[g]]的替换命令将会对生成的字符串上执行替换操作。
g为可选项,g是指替换字符串时是全局的,不是只替换第一个匹配项。
DEFAULT规则:principal的name即作为本地用户。如果principal只有1部分,则直接映射为本地用户。如果principal有2个组成部分或者不在默认的realm中,则此default规则并不适用,将会映射失败。
多个RULE的顺序,依次执行。

举例:
[realms]
ATHENA.MIT.EDU = {
auth_to_local = RULE:[2: 1 ] ( j o h n d o e ) s / . ∗ 1](johndoe)s/^.* 1](johndoe)s/./guest/
auth_to_local = RULE:[2:$1; 2 ] ( . ∗ ; a d m i n 2](^.*;admin 2](.;admin)s/;admin$//
auth_to_local = RULE:[2: 2 ] ( . ∗ ; r o o t ) s / . ∗ 2](^.*;root)s/^.* 2](.;root)s/./root/
auth_to_local = DEFAULT
}
该规则含义:
如果principal的第2部分,没有root或admin,那么会使用default规则进行转换。
如果principal的第2部分是admin,那么admin将会被替换为空串,principal只保留第一部分。
如果principal的第2部分是root,那么整个principal将会被替换为root。
另外,johndos/*的principal,将会被整个替换为guest。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全平台7合一自定义小程序源码系统功能强大 前后端分离 带完整的安装代码包以及搭建教程

系统概述 这款全平台 7 合一自定义小程序源码系统是专为满足各种业务需求而设计的。它整合了多种功能&#xff0c;能够在不同平台上运行&#xff0c;为用户提供了全方位的体验。无论你是企业主、开发者还是创业者&#xff0c;这款系统都能为你提供强大的支持。 代码示例 系统…

MATLAB code 生成C代码样式

Matlab code 生成C代码需要以下产品&#xff1a; MATLABMATLAB CoderC 编译器 MATLAB Coder 将查找并使用支持的已安装编译器。 可以使用 mex -setup 更改默认编译器。 在本地工作文件夹中创建文件 创建一个本地工作文件夹&#xff0c;例如 c:\ecoder\work。创建包含以下代…

【Python】Python的安装与环境搭建

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言Python下载环境配置测试环境变量是否配置成功配置环境变量 运行Python交互式解释器&#xff1a;命令行脚本集成开发环境&#xff08;IDE&#xff1a;Integrated Development E…

电脑IP地址自动获取:操作指南与优势分析

在数字化时代&#xff0c;网络连接已成为我们日常生活和工作中的重要组成部分。而在建立网络连接的过程中&#xff0c;IP地址的设置无疑是至关重要的一环。IP地址&#xff0c;作为网络设备的唯一标识&#xff0c;其设置方式直接影响到网络的稳定性和安全性。本文将详细介绍如何…

大数据、人工智能、云计算、物联网、区块链序言【大数据导论】

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 本篇序言前 必看 【大数据导论】—大数据序言 这是…

山东益康,聚焦绿葆医院场景媒体,用爱服务人类健康

山东益康集团创建于1983年&#xff0c;发展成为集药品研发生产、销售、特医功能食品、精细化工、医疗防护产品等多产业经营为一体的省级企业集团。益康集团紧跟国家发展战略&#xff0c;满足民众日益增长的健康需求&#xff0c;将食品生产向特医保健功能食品转型升级&#xff0…

校园兼职小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;商家管理&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;兼职管理&#xff0c;论坛管理&#xff0c;公告管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;公告&#xff0c;兼职&…

【TS】TypeScript 入门指南:强大的JavaScript超集

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 TypeScript 入门指南&#xff1a;强大的JavaScript超集一、TypeScript 简介1.1 …

【Python】已解决:ValueError: If using all scalar values, you must pass an index

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ValueError: If using all scalar values, you must pass an index 一、分析问题背景 在Python编程中&#xff0c;尤其是当使用pandas库进行数据分析和处理时&a…

技巧类题目

目录 技巧类题目 136 只出现一次的数字 191 位1的个数 231. 2 的幂 169 多数元素 75 颜色分类 &#xff08;双指针&#xff09; 287. 寻找重复数 136 只出现一次的数字 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均…

应急响应:应急响应流程,常见应急事件及处置思路

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这一章节我们需…

【PWN · ret2syscall | GoPwn】[2024CISCN · 华中赛区]go_note

一道GoPwn&#xff0c;此外便是ret2syscall的利用。然而过程有不小的曲折&#xff0c;参考 返璞归真 师傅的wp&#xff0c;堪堪完成了复现。复现过程中&#xff0c;师傅也灰常热情回答我菜菜的疑问&#xff0c;感谢&#xff01;2024全国大学生信息安全竞赛&#xff08;ciscn&am…

【U8+】供应链-库存管理-库存展望

知识点:库存展望可查询展望期内存货的预计库存、可用量情况。 分析步骤一:在库存管理-设置-选项-可用量检查页签库存展望可用量公式中预计入库和预计出库进行勾选和对应仓库档案需要勾选纳入可用量计算 步骤二:库存展望查询条件维护展望日期以及存货和选择

深度学习笔记: 最详尽解释混淆矩阵 Confusion Matrix

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家&#xff01; 混淆矩阵 假设我们有包含临床测量数据的医疗数据&#xff0c;例如胸痛、良好的血液循环、动脉阻塞和体重…

昇思25天学习打卡营第06天|网络构建

神经网络基础 神经网络是一种模拟人脑神经元工作方式的计算模型&#xff0c;它由多个层次的节点&#xff08;神经元&#xff09;组成&#xff0c;每个神经元接收输入、进行加权求和并经过非线性激活函数转换后输出到下一层或作为最终输出。 昇思模型中的mindspore.nn提供了常…

PHP商家来客宝小程序系统客户打卡赢霸王餐美食之旅嗨翻天

&#x1f389;商家来客宝大放送&#xff01;&#x1f37d;️ &#x1f525;开篇福利预警&#xff01; 嘿宝贝们&#xff0c;今天要给你们揭秘一个超级劲爆的吃货福利——“商家来客宝客户打卡吃霸王餐”活动&#xff01;&#x1f389; 是不是已经听到肚子咕咕叫了呢&#xff…

类和对象(提高)

类和对象&#xff08;提高&#xff09; 1、定义一个类 关键字class 6 class Data1 7 { 8 //类中 默认为私有 9 private: 10 int a;//不要给类中成员 初始化 11 protected://保护 12 int b; 13 public://公共 14 int c; 15 //在类的内部 不存在权限之分 16 void showData(void)…

Django + Vue 实现图片上传功能的全流程配置与详细操作指南

文章目录 前言图片上传步骤1. urls 配置2. settings 配置3. models 配置4. 安装Pillow 前言 在现代Web应用中&#xff0c;图片上传是一个常见且重要的功能。Django作为强大的Python Web框架&#xff0c;结合Vue.js这样的现代前端框架&#xff0c;能够高效地实现这一功能。本文将…

GraphPad Prism生物医学数据分析软件下载安装 GraphPad Prism轻松绘制各种图表

Prism软件作为一款功能强大的生物医学数据分析与可视化工具&#xff0c;其绘图功能尤为突出。该软件不仅支持绘制基础的图表类型&#xff0c;如直观明了的柱状图、展示数据分布的散点图&#xff0c;以及描绘变化趋势的曲线图&#xff0c;更能应对复杂的数据呈现需求&#xff0c…

【Python】已解决:urllib.error.HTTPError: HTTP Error 403: Forbidden

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;urllib.error.HTTPError: HTTP Error 403: Forbidden 一、分析问题背景 在使用Python的urllib库中的urlopen或urlretrieve函数下载文件时&#xff0c;有时会遇到…