男人的av一区二区资源,亚洲日韩国产精品无码av,蜜桃久久久aaaa成人网一区,亚洲日韩中文字幕一区,在线观看国产亚洲视频免费

使用Docker快速搭建Kerberos環(huán)境

簡(jiǎn)介

Kerberos認證在大數據場(chǎng)景下用的比較多,特別是在Hadoop生態(tài)下,認證基本用的都是Kerberos認證。一般來(lái)講Kerberos認證相對于其他方式的認證安全很多,同樣的認證的時(shí)候性能應該差一點(diǎn)。

國內某著(zhù)名大數據平臺MapReduce服務(wù),也叫做云原生數據湖MRS(MapReduce Service),將大數據相關(guān)的軟件做了整合,其中有部分軟件,比如:Redis、Clickhouse等開(kāi)源社區并沒(méi)有支持Kerberos認證的軟件,華為自己做了Kerberos認證。

本文簡(jiǎn)單介紹怎快快速搭建Kerberos認證,做一些簡(jiǎn)單的測試。后續課程會(huì )說(shuō)明如何使用代碼進(jìn)行Kerberos認證。

前提條件

  • 需要在Linux環(huán)境上安裝Docker,對于怎么安裝Docker,本文不做介紹。
  • 準備好安裝目錄,比如:/home/zeekling/project/ling/dockerFiles/kerberos,

環(huán)境搭建

步驟一:添加服務(wù)端配置

在準備好的路徑下面新建子文件夾server用于存放Kerberos服務(wù)相關(guān)的配置文件。在server下面新建文件新建krb5.conf,在里面寫(xiě)入下面內容:

[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
TEST.COM = {
  #master_key_type = aes256-cts
  acl_file = /etc/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/krb5kdc/kadm5.keytab
  max_renewable_life = 7d 0h 0m 0s
  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}

其中TEST.COM為Kerberos的域名。kdc的端口為88,可以按照實(shí)際需要修改。

server下面新建文件新建kadm5.acl,在里面寫(xiě)入下面內容:

*/admin@TEST.COM    *

步驟二:新增客戶(hù)端配置

在準備好的路徑下面新增client文件夾,在client下面新建文件新建krb5.conf,在里面寫(xiě)入下面內容:

[[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = TEST.COM
default_ccache_name = FILE:/tmp/krb5cc_cli_%{uid}
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true

[realms]
TEST.COM = {
  kdc = krb5-kdc-server:88
  admin_server = krb5-kdc-server
}

其中TEST.COM為域名,krb5-kdc-server為kdc對應的域名,也可以使用ip。

步驟三:Docker啟動(dòng)腳本

在Docker啟動(dòng)的時(shí)候,需要同步創(chuàng )建admin以及需要使用的業(yè)務(wù)用戶(hù)。

在準備好的目錄下面新建文件start.sh,寫(xiě)入下面內容:

#!/bin/bash
FQDN="test.com"
ADMIN="admin"
PASS="Admin12!"
KRB5_KTNAME=/etc/admin.keytab
cat /etc/hosts
echo "hostname: ${FQDN}"
inited="/app/inited"
function init_user() {
	if [ -f "${inited}" ];then
		echo "user inited"
	        kadmin.local -q "xst -k /app/hadoop.keytab -norandkey server/hadoop.${FQDN}"
	        kadmin.local -q "xst -k /app/cli.keytab -norandkey cli"
		return;
	fi
	echo "begin init user"
	# create kerberos database
	echo -e "${PASS}\n${PASS}" | kdb5_util create -s
	# create admin
	echo -e "${PASS}\n${PASS}" | kadmin.local -q "addprinc ${ADMIN}/admin"
	# create hadoop
	echo -e "${PASS}\n${PASS}" | kadmin.local -q "addprinc cli"
	echo -e "${PASS}\n${PASS}" | kadmin.local -q "addprinc  server/hadoop.${FQDN}"
	kadmin.local -q "ktadd -norandkey -k ${KRB5_KTNAME} cli"
	kadmin.local -q "ktadd -norandkey -k ${KRB5_KTNAME} server/hadoop.${FQDN}"
	kadmin.local -q "xst -k /app/hadoop.keytab -norandkey server/hadoop.${FQDN}"
	kadmin.local -q "xst -k /app/cli.keytab -norandkey cli"
	touch "${inited}"
	echo "user inite success"
}
function main() {
	init_user
	/usr/local/bin/supervisord -n -c /etc/supervisord.conf
}

main

以上用戶(hù)創(chuàng )建了admin、cli、server/hadoop.test.com用戶(hù),并且將后面兩個(gè)用戶(hù)的keytab導出到/app下面,并且在重啟Docker的時(shí)候可以重新下載Keytab。

步驟四:supervisord配置文件

在準備好的目錄下面新增supervisord.conf,寫(xiě)入下面內容:

[supervisord]
logfile=/var/log/supervisord/supervisord.log    ; supervisord log file
logfile_maxbytes=50MB                           ; maximum size of logfile before rotation
logfile_backups=10                              ; number of backed up logfiles
loglevel=error                                  ; info, debug, warn, trace
pidfile=/var/run/supervisord.pid                ; pidfile location
nodaemon=false                                  ; run supervisord as a daemon
minfds=1024                                     ; number of startup file descriptors
minprocs=200                                    ; number of process descriptors
user=root                                       ; default user
childlogdir=/var/log/supervisord/               ; where child log files will live
[program:krb5-kdc]
command=service krb5-kdc start
autostart=true
autorestart=true
[program:krb5-admin-server]
command=service krb5-admin-server start
autostart=true
autorestart=true
[supervisorctl]

步驟五:DockerFile創(chuàng )建

在準備好的目錄下面新建DockerFile,寫(xiě)入下面內容:

FROM ubuntu:xenial
ENV DEBIAN_FRONTEND noninteractive
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt clean
RUN apt update
RUN apt install -y ntp python-dev python-pip python-wheel python-setuptools python-pkg-resources krb5-admin-server krb5-kdc
RUN apt install vim -y
RUN rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/log/supervisord/
RUN mkdir /app/
RUN pip install supervisor==4.2.4
COPY ./server/krb5.conf /etc/krb5kdc/kdc.conf
COPY ./server/kadm5.acl /etc/krb5kdc/kadm5.acl
COPY ./client/krb5.conf /etc/krb5.conf
COPY ./start.sh /app/start.sh
COPY ./supervisord.conf /etc/supervisord.conf
WORKDIR /app
CMD ["/bin/bash", "/app/start.sh"]

步驟六:編譯打包Kerberos鏡像

在已經(jīng)準備好的目錄下面執行下面命令打包鏡像:

docker build -t kerberos:1.0.0 ./

步驟七:?jiǎn)?dòng)Docker鏡像

使用下面命令啟動(dòng)Kerberos相關(guān)的鏡像:

docker run -d --name=kerberos kerberos:1.0.0

啟動(dòng)日志 如下:

image.png

步驟八:在鏡像外面訪(fǎng)問(wèn)Kerbero服務(wù)

  • 新建文件夾/home/zeekling/project/ling/kerberosTest/client,將步驟二中客戶(hù)端配置拷貝到新建的文件夾下面。
  • 將客戶(hù)端配置krb5.conf加到環(huán)境變量中:export KRB5_CONFIG=/home/zeekling/project/ling/kerberosTest/client/krb5.conf
  • kinit cli用戶(hù),并且輸入密碼,即可得到:
    image.png



標 題:《使用Docker快速搭建Kerberos環(huán)境
作 者:zeekling
提 示:轉載請注明文章轉載自個(gè)人博客:浪浪山旁那個(gè)村

    評論
    0 評論
avatar

取消
男人的av一区二区资源,亚洲日韩国产精品无码av,蜜桃久久久aaaa成人网一区,亚洲日韩中文字幕一区,在线观看国产亚洲视频免费