基於Kerberos的NIFI單節點安全登陸配置

一、操作系統配置

1、配置靜態ip

vi /etc/sysconfig/network-scripts/ifcfg-enoXXX(該文件可能會因環境而異)
2、配置主機名
方法一	hostnamectl set-hostname ***     ***爲主機名,例如:server
方法二	vi /etc/hostname  把原來的主機名修改爲需要設置的主機名,例如:server
3、配置ip映射
vi /etc/hosts 
   192.168.1.109  server
4、關閉防火牆
> setenforce 0
> vi /etc/selinux/config
     SELINUX=disabled  #修改內容爲disabled
> systemctl stop firewalld.service
> systemctl disable firewalld.service
> firewall-cmd --state  #查看防火牆狀態(關閉顯示not running,開啓顯示running)

二、Kerberos的安裝配置

2.1. 通過在線安裝的方式安裝KDC(密鑰分配中心)所需要的軟件
       yum -y install krb5-server krb5-libs krb5-workstation krb5-auth-dialog
       查看是否安裝成功 which kinit
2.2. 配置/etc/krb5.conf文件
vi /etc/krb5.conf 修改相關參數如下

[libdefaults]
default_realm = NIFI.COM  #此處需要進行配置
[realms]
NIFI.COM ={     
 kdc = server   #此處配置的爲主機名server
    admin_server = server  #同上, 配置的爲主機名server
}
[domain_realm]
.nifi.com = NIFI.COM  #此處配置與前面配置[realms]保持一致
nifi.com = NIFI.COM

Realm參數自己設定但要一致
kdc=主機ip
admin_server=主機ip
Kdc爲kdc位置,格式爲  主機:端口(可用默認)(主機可以是主機名或ip)

2.3. 配置/var/kerberos/krb5kdc/kdc.conf文件
vi /var/kerberos/krb5kdc/kdc.conf 

[realms]
 NIFI.COM = {
   #master_key_type = aes256-cts
   acl_file = /var/kerberos/krb5kdc/kadm5.acl
   dict_file = /usr/share/dict/words
   admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
   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
 }
此處爲NIFI.COM與/etc/krb5.conf中的配置保持一致
2.4. 創建Kerberos數據庫
kdb5_util create -r NIFI.COM -s
 
根據提示輸入數據庫管理員的密碼
kadmin.local -q "addprinc admin/admin" 
併爲其設置密碼 kadmin.local
 2.5. 設置kerberos服務開機啓動,並且啓動服務
       手動啓動服務
service krb5kdc start
service kadmin start
      設置開機自動啓動
chkconfig krb5kdc on
chkconfig kadmin on
 2.6. 使用kadmin.local工具,查看用戶,使用命令listprincs
 2.7. 添加服務主體並導出keytab
> kadmin.local
> addprinc -randkey test/NIFI
> ktadd -k /opt/test-NIFI.keytab test/NIFI
> q
 2.8. 創建web登陸用戶
創建login/[email protected]作爲管理員賬戶,自定義密碼爲hadoop
kadmin.local -q "addprinc login/server" 
使用kinit命令來檢測創建的用戶是否成功(需要輸入密碼)

kinit login/[email protected]

三、證書生成

3.1. 下載與安裝
下載地址:http://nifi.apache.org/download.html
下載後解壓安裝nifi-toolkit-1.1.2-bin.zip (或tar.gz格式,自己選擇最新版本),配置好環境變量方便使用。
 3.2. 生成相關證書
爲server節點生成密鑰庫,truststore,nifi.properties以及具有給定DN的客戶端證書。
tls-toolkit.sh standalone -c ca.nifi.com -n 'server' -o './target'
其中 
-n,-hostnames要生成證書的主機名列表(以逗號分隔),可指定多次,支持範圍和實例模式。
-c, -certificateAuthorityHostname 爲Hostname of NiFi Certificate Authority。
-o, -outputDirectory 指定生成證書的路徑

四、NIFI配置

1. 配置nifi常用參數

採用nifi-toolkit工具生成的證書,在生成證書的過程中已經生了一個nifi.properties配置文件,把該目錄下的所有文件拷貝到nifi的conf目錄下,重複的文件選擇覆蓋

2. 配置kerberos參數
vi nifi.properties 設置相關參數

nifi.remote.input.secure=true
nifi.security.user.login.identity.provider=kerberos-provider
# kerberos # 
nifi.kerberos.krb5.file=/etc/krb5.conf
nifi.kerberos.service.principal=test/[email protected] #配置的服務主體
nifi.kerberos.keytab.location=/opt/test-NIFI.keytab #配置服務主體的keytab

3. 配置nifi登陸信息
vi login-identity-providers.xml 放開kerberos-provider的註釋

<provider> 
  <identifier>kerberos-provider</identifier> 
  <class>org.apache.nifi.kerberos.KerberosProvider</class> 
  <property name="Default Realm">NIFI.COM</property> 
  <property name="Authentication Expiration">12 hours</property> 
</provider>

4. 配置用於登陸的用戶信息
vi authorizers.xml

<authorizer>
        <identifier>file-provider</identifier>
        <class>org.apache.nifi.authorization.FileAuthorizer</class>
        <property name="Authorizations File">./conf/authorizations.xml</property>
        <property name="Users File">./conf/users.xml</property>
        <!--這裏配置的是初始管理員-->
	<property name="Initial Admin Identity">login/[email protected]</property>
        <property name="Legacy Authorized Users File"></property>
        <!--
        <property name="Node Identity 1"></property>
        <property name="Node Identity 2"></property>
        -->
</authorizer>

5. 啓動服務,登陸web頁面
配置完成後,啓動nifi  nifi.sh start
這裏稍等一會,因爲nifi啓動過程大約需要30秒,然後用jps查看相關進程,或用curl命令來驗證nifi是否啓動  curl --insecure https://server:9443/nifi
訪問web頁面
Hosts: 前面設置的ip
Port: 9443(默認,或者你修改的端口)
User: login/server 
Password: **** (前面配置的用戶名和密碼)
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章