TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 魔改分享
  • 高阶玩法

    • 实战 Kerberos
    • 实战 Ranger
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 二开指导

    • 前端开发
    • 后端开发
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 优化增强

    • 组件配置调优
  • 支持&共建

    • 蓝图愿景
    • 合作共建
    • 服务说明
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 魔改分享
  • 高阶玩法

    • 实战 Kerberos
    • 实战 Ranger
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 二开指导

    • 前端开发
    • 后端开发
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 优化增强

    • 组件配置调优
  • 支持&共建

    • 蓝图愿景
    • 合作共建
    • 服务说明
GitHub (opens new window)
  • KDC服务初始化安装

    • 一、前置准备与安装 krb5 服务组件
      • 1. 安装核心包
    • 二、修改 krb5.conf —— 定义安全域与服务端信息
      • 1. 重点修改项
      • 2. 修改说明
      • 3. 完整配置示例
    • 三、创建 KDC 数据库(核心初始化)
      • 四、启动并设置服务自启
        • 五、创建管理员账号与访问控制
          • 六、编辑 ACL 权限规则
            • 七、确认 kdc.conf 与 ACL 路径一致
              • 八、重启并验证服务运行
              • 组件安装-Kerberos
              • 【方案一】自建 Kerberos 认证体系
              • KDC服务初始化安装
              JaneTTR
              2025-10-31
              目录

              KDC服务初始化安装Ubuntu篇

              温馨提示

              本文内容在 Ubuntu 22.04 系统 下完成测试,相关系列系统在配置路径与命令格式上基本一致。 如在部署中遇到问题,可联系作者共同探讨或反馈。 👉 联系入口在此页 (opens new window)

              # 一、前置准备与安装 krb5 服务组件

              Kerberos 的核心是 KDC(Key Distribution Center),相当于整个安全体系的“签发机构”。 任何服务、主机或用户要访问受保护的资源,都必须先通过它来获取凭证(Ticket)。

              为什么要先部署 KDC?

              Ambari 集群启用安全认证时,底层所有 Hadoop 组件(如 HDFS、YARN、Hive)都会与 KDC 通信。 如果 KDC 配置错误,后续 Ambari 的 Enable Kerberos Wizard 无法完成配置推送,整个集群会陷入半认证状态。

              # 1. 安装核心包

              sudo apt update
              sudo apt install -y krb5-kdc krb5-admin-server krb5-user
              
              1
              2

              ce91f4e3b017b9384e6aa9e58e11bb99

              这三个包的作用如下:

              软件包 作用说明
              krb5-kdc 提供 KDC 服务核心功能
              krb5-admin-server 提供管理端 kadmind 服务
              krb5-user 客户端命令行工具,如 kinit、klist、kdestroy 等

              小贴士:Rhel 系列的包名区别

              在 Rhel相关系统中,对应的安装命令为:

              yum install -y krb5-server krb5-libs krb5-workstation
              
              1

              路径相同,但配置文件位于 /var/kerberos/krb5kdc 。可以参考Step1-KDC服务初始化安装-RHEL

              # 二、修改 krb5.conf —— 定义安全域与服务端信息

              KDC 的核心配置位于 /etc/krb5.conf,它定义了客户端、服务端、日志等信息。 我们需要对默认模板进行自定义修改。

              vim /etc/krb5.conf
              
              1

              e75dacb7fc8837a38d04df47b5a9f21f

              # 1. 重点修改项

              [libdefaults]
              default_realm = TTBIGDATA.COM
              
              [realms]
               TTBIGDATA.COM = {
                kdc = dev1
                admin_server = dev1
               }
              
              1
              2
              3
              4
              5
              6
              7
              8

              # 2. 修改说明

              • default_realm 定义默认认证域(Realm),必须使用大写字母。 建议使用公司或团队的域名缩写,例如:TTBIGDATA.COM。

              • kdc 指定 KDC 服务器主机名。若使用 IP 地址,则必须与 /etc/hosts 一致。

              • admin_server 指定 Kerberos 管理服务(kadmind)所在主机,一般与 kdc 同机。

              注意

              不要保留示例配置 EXAMPLE.COM,否则后续 Ambari 推送配置时会报错: Cannot connect to KDC for realm EXAMPLE.COM

              # 3. 完整配置示例

              [libdefaults]
                #renew_lifetime = 7d
                forwardable = true
                default_realm = TTBIGDATA.COM
                ticket_lifetime = 24h
                dns_lookup_realm = false
                dns_lookup_kdc = false
                default_ccache_name = /tmp/krb5cc_%{uid}
                #default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
                #default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
              [logging]
                default = FILE:/var/log/krb5kdc.log
                admin_server = FILE:/var/log/kadmind.log
                kdc = FILE:/var/log/krb5kdc.log
              
              [realms]
                TTBIGDATA.COM = {
                  admin_server = dev1
                  kdc = dev1
                }
              
              1
              2
              3
              4
              5
              6
              7
              8
              9
              10
              11
              12
              13
              14
              15
              16
              17
              18
              19
              20

              建议

              1. 若集群中有多台 KDC,可在 realms 中添加多条 kdc = hostX。
              2. 若 DNS 配置完善,可使用 FQDN(我的主机名就叫 dev1 所以我填这个,可以自己 hostname 查看)以避免主机名解析问题。

              # 三、创建 KDC 数据库(核心初始化)

              执行以下命令以创建 KDC 主数据库:

              kdb5_util create -s
              
              1

              image-20251103112241400

              系统将提示你输入并确认密码,该密码为 KDC 主密钥(Master Key), 与后续登录管理员账户无关,但请务必妥善保存,丢失后数据库将无法恢复。

              常见问题

              1. 命令未找到:请确认 krb5-server 安装成功;
              2. 权限不足:需以 root 身份运行;
              3. 数据库路径不存在:默认路径 /etc/krb5kdc/。

              创建完成后,会生成以下文件:

              ccf3bf2f28e59bbc9aee3d7e577e7408

              drwx------   2 root root  4096 11月  4 06:39 ./
              drwxr-xr-x 132 root root 12288 11月  4 07:28 ../
              -rw-------   1 root root    78 11月  4 01:12 .k5.TTBIGDATA.COM
              -rw-r--r--   1 root root    26 11月  4 01:16 kadm5.acl
              -rw-------   1 root root   154 11月  4 02:52 kadm5.keytab
              -rw-r--r--   1 root root   508 11月  4 01:19 kdc.conf
              -rw-------   1 root root    78 11月  4 01:26 stash
              root@dev1:/etc/krb5kdc# pwd
              /etc/krb5kdc
              root@dev1:/etc/krb5kdc#
              
              1
              2
              3
              4
              5
              6
              7
              8
              9
              10

              # 四、启动并设置服务自启

              sudo systemctl start krb5-kdc
              sudo systemctl start krb5-admin-server
              sudo systemctl enable krb5-kdc
              sudo systemctl enable krb5-admin-server
              
              1
              2
              3
              4

              执行完成后,可通过以下命令检查状态:

              sudo systemctl status krb5-kdc
              sudo systemctl status krb5-admin-server
              
              1
              2

              若使用 Rhel

              服务名称略有不同:

              systemctl start krb5kdc kadmin
              
              1

              # 五、创建管理员账号与访问控制

              执行以下命令创建 KDC 管理员账户:

              kadmin.local -q "addprinc admin/admin"
              
              1

              image-20251103113227648

              输入密码后,系统会生成 Principal:

              Principal "admin/[email protected]" created.
              
              1

              此账户用于登录 kadmin 命令行工具,以管理后续服务账户和 keytab 文件。

              温馨提示

              我这里为了演示,我输入的密码是 admin,要与后续Ambari页面凭证保持统一

              • 凭证: admin/[email protected]
              • 密码: admin

              和 RHEL差异

              这里建议加一个 kadmin/[email protected] 不然会报错。这在Ubuntu上发生了,目前暂不清楚是哪个环节问题。 具体踩坑记录可参考 >> Failed to kinit as the KDC administrator user

              sudo kadmin.local -q "listprincs" | grep kadmin
              sudo kadmin.local -q "addprinc -randkey kadmin/[email protected]"
              sudo kadmin.local -q "ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/[email protected]"
              
              # 添加完再次查看
              sudo kadmin.local -q "listprincs" | grep kadmin
              
              /usr/bin/kinit -c FILE:/var/lib/ambari-server/data/tmp/ambari_krb_1690981287658684697cc -S kadmin/dev1 admin/[email protected]
              
              1
              2
              3
              4
              5
              6
              7
              8

              验证完毕后如下图所示

              image-20251104105350389

              # 六、编辑 ACL 权限规则

              KDC 使用 ACL 文件控制谁能执行管理操作。 默认文件路径:

              vim /etc/krb5kdc/kadm5.acl
              
              1

              修改内容为:

              */[email protected]   *
              
              1

              bcf2c721c795bf5e7ff4d258dda39797

              ACL 权限语法说明

              格式为:

              principal permissions [target_principal] [restrictions]
              
              1

              例如:

              admin/[email protected]  *
              
              1

              表示拥有所有权限。 若想只允许添加用户,可使用:

              */[email protected]   a
              
              1

              # 七、确认 kdc.conf 与 ACL 路径一致

              查看 kdc.conf:

              cat /etc/krb5kdc/kdc.conf
              
              1
              
              [kdcdefaults]
                  kdc_ports = 750,88
              [realms]
                TTBIGDATA.COM = {
                      database_name = /var/lib/krb5kdc/principal
                      admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
                      acl_file = /etc/krb5kdc/kadm5.acl
                      key_stash_file = /etc/krb5kdc/stash
                      kdc_ports = 750,88
                      max_life = 10h 0m 0s
                      max_renewable_life = 7d 0h 0m 0s
                      #master_key_type = aes256-cts
                      #supported_enctypes = aes256-cts:normal aes128-cts:normal
                      default_principal_flags = +preauth
                  }
              
              1
              2
              3
              4
              5
              6
              7
              8
              9
              10
              11
              12
              13
              14
              15
              16

              265267bd8dfa9466595311fe26490a81

              确认路径与 ACL 文件匹配,否则 kadmind 启动会报:

              Cannot open ACL file /etc/krb5kdc/kadm5.acl
              
              1

              # 八、重启并验证服务运行

              重启 KDC 与管理服务:

              sudo systemctl restart krb5-kdc
              sudo systemctl restart krb5-admin-server
              
              1
              2

              验证:

              kinit admin/[email protected]
              # 输入完密码后
              klist
              
              1
              2
              3

              若能看到下面内容,说明配置成功。

              89b6da3ac5e1f802d6733d4e0fcf1176

              #Ambari#Kerberos#KDC#安全认证#集群部署#大数据安全
              最近更新
              01
              更新日志 · v3.0.1 2026/06
              06-05
              02
              Step7—Mariadb初始化
              03-23
              03
              【Kylin V10】强力卸载脚本 aarch64
              03-22
              更多文章>
              Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
              • 跟随系统
              • 浅色模式
              • 深色模式
              • 阅读模式