基于Kerberos的NIFI单节点安全登陆配置

来源:互联网 发布:网络蜘蛛磁力链 编辑:程序博客网 时间:2024/06/11 09:32

一、操作系统配置

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/server@NIFI.COM作为管理员账户,自定义密码为hadoop
kadmin.local -q "addprinc login/server" 
使用kinit命令来检测创建的用户是否成功(需要输入密码)

kinit login/server@NIFI.COM

三、证书生成

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=truenifi.security.user.login.identity.provider=kerberos-provider# kerberos # nifi.kerberos.krb5.file=/etc/krb5.confnifi.kerberos.service.principal=test/NIFI@NIFI.COM #配置的服务主体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/server@NIFI.COM</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: **** (前面配置的用户名和密码)
 

原创粉丝点击