使用Docker创建Kerberos认证中心

本文介绍如何使用Docker快速构建Kerberos KDC中心及客户端,并配置相关参数以实现Hadoop等集群的认证需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Docker创建Kerberos认证中心

使用Docker构建Kerberos KDC中心以及客户端,此中心可供Hadoop等集群使用。

1、构建KDC中心

我们此处使用Dockerfile文件直接构建需要的镜像:

FROM centos:7

RUN yum install -y krb5-server krb5-libs krb5-auth-dialog krb5-workstation

RUN echo -e "[kdcdefaults]\n"\
" kdc_ports = 88\n"\
"  kdc_tcp_ports = 88\n"\
"\n"\
"[realms]\n"\
" KRBKDC.COM = {\n"\
"  #master_key_type = aes256-cts\n"\
"  acl_file = /var/kerberos/krb5kdc/kadm5.acl\n"\
"  dict_file = /usr/share/dict/words\n"\
"  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab\n"\
"  max_renewable_life = 7d\n"\
"  supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal\n"\
" }\n"\
 > /var/kerberos/krb5kdc/kdc.conf

RUN echo -e "includedir /etc/krb5.conf.d/\n"\
"\n"\
"[logging]\n"\
" default = FILE:/var/log/krb5libs.log\n"\
" kdc = FILE:/var/log/krb5kdc.log\n"\
" admin_server = FILE:/var/log/kadmind.log\n"\
"\n"\
"[libdefaults]\n"\
" dns_lookup_kdc = false\n"\
" dns_lookup_realm = false\n"\
" ticket_lifetime = 24h\n"\
" renew_lifetime = 7d\n"\
" forwardable = true\n"\
" default_realm = KRBKDC.COM\n"\
" udp_preference_limit = 1\n"\
"[realms]\n"\
" KRBKDC.COM = {\n"\
"  kdc = kdc1\n"\
"  admin_server = kdc1\n"\
" }\n"\
"[domain_realm]\n"\
" .krbkdc.com = KRBKDC.COM\n"\
" krbkdc.com = KRBKDC.COM\n"\
> /etc/krb5.conf

RUN sh -c '/bin/echo -e "kdcAdmin\nkdcAdmin\n" | /usr/sbin/kdb5_util create -s '
RUN sh -c '/bin/echo -e "kdcAdmin\nkdcAdmin\n" | /usr/sbin/kadmin.local -q "addprinc admin/admin" '
RUN echo -e "admin/admin@KRBKDC.COM    *" > /var/kerberos/krb5kdc/kadm5.acl
RUN chkconfig krb5kdc on
RUN chkconfig kadmin on

其中default_realm可以根据需要改成自己的名字。

  1. [realms]内,KRBKDC.COM可根据需要修改。kdc1需要添加到/etc/hosts文件中,
    hosts文件
  2. RUN sh -c '/bin/echo -e “kdcAdmin\nkdcAdmin\n” | /usr/sbin/kdb5_util create -s ’
    RUN sh -c '/bin/echo -e “kdcAdmin\nkdcAdmin\n” | /usr/sbin/kadmin.local -q “addprinc admin/admin” ’
    此两句中,kdcAdmin是后面要创建的密码,用户可自定义。
    第一句是为了创建数据库,第二句为了创建管理员用户。
  3. RUN echo -e “admin/admin@KRBKDC.COM *” > /var/kerberos/krb5kdc/kadm5.acl
    此句是给admin管理员用户赋权,让它可以创建其它用户

以上内容写入Dockerfile后,构建镜像:

docker build -t krb-kdc:1.0 .

创建容器:

docker run --privileged=true  -d  --name="my_kdc" krb-kdc:1.0  

启动完成后,进入容器:

docker exec -it my_kdc bash

在容器内启动kerberos相关:

systemctl start kadmin krb5kdc 

使用kadmin进入KDC:

kadmin.local

之后,创建用户:

addprinc -randkey hadoopone/master@KRBKDC.COM

生成keytab文件:

xst -k hadoopone.keytab hadoopone/master@KRBKDC.COM

当然,创建用户这一步也可以放到客户端去完成,只要能使用admin连接并进入KDC即可。

2、创建Kerberos客户端client

FROM centos:7

RUN yum install -y krb5-workstation krb5-libs krb5-auth-dialog

RUN echo -e "includedir /etc/krb5.conf.d/\n"\
"\n"\
"[logging]\n"\
" default = FILE:/var/log/krb5libs.log\n"\
" kdc = FILE:/var/log/krb5kdc.log\n"\
" admin_server = FILE:/var/log/kadmind.log\n"\
"\n"\
"[libdefaults]\n"\
" dns_lookup_kdc = false\n"\
" dns_lookup_realm = false\n"\
" ticket_lifetime = 24h\n"\
" renew_lifetime = 7d\n"\
" forwardable = true\n"\
" default_realm = KRBKDC.COM\n"\
" udp_preference_limit = 1\n"\
"[realms]\n"\
" KRBKDC.COM = {\n"\
"  kdc = kdc1\n"\
"  admin_server = kdc1\n"\
" }\n"\
"[domain_realm]\n"\
" .krbkdc.com = KRBKDC.COM\n"\
" krbkdc.com = KRBKDC.COM\n"\
> /etc/krb5.conf


CMD ["/usr/sbin/init"]

将内容写入Dockerfile,注意以下几项:

  1. realms与domain_realm 内需要与KDC相对应
  2. 创建并启动容器后,需要将kdc的hostname写入/etc/hosts
    在这里插入图片描述
    创建容器:
docker run --privileged=true -d  --name="my_krb_agent" krb-agent:1.0

进入容器后,可以将KDC的keytab文件取过来使用(可以使用挂卷、docker cp 等方式,此处不再赘述),也可以直接尝试直接使用admin进入KDC,在客户端容器内生成

客户端认证方式举例:

  • kinit admin/admin
  • kinit -kt /xx/xx/admin.keytab admin/admin
    使用以上任一一种方式认证之后,可使用kadmin进入管理员界面。

删除当前的认证的缓存
kdestroy

查看ticket是否是renewable
klist

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值