Nifi Security(nifi 安全认证配置)

干宏邈
2023-12-01

# Nifi Security

---

## nifi security 介绍 ##

 - 身份验证
 - 授权验证

> nifi 身份验证

  nifi身份验证是对登录用户的身份确认,确认用户是否有权限登录nifi

> nifi授权验证

  nifi 授权验证是对登录后的用户权限进行检查,确认用户拥有哪些权限

----------

> 验证的方式

 nifi 登录验证方式: TLS, LDAP, Kerberos, OpenID Connect, Apache Knox 等
 
 

> 操作配置(lap 登录验证)

 1. 准备工作
    . nifi 安装
    . nifi-toolkit 安装 (官网下载,版本要与nifi对应)
 2. 生成证书
    . 启动证书服务
      nohup ./bin/tls-toolkit.sh server -c 10.24.67.108 -t 12345678901234567890 -p 7777 &
      --c  服务器
      --t  token
      --p  端口
    . 生成nifi 需要的key
      新建目录:mkdir ks,进入目录ks,执行命令:(token,端口保持一致)
      sh ../bin/tls-toolkit.sh client -c 10.24.67.108 -t 12345678901234567890 -p 7777
      完成后会生成相应的文件
config.json  
keystore.jks
nifi-cert.pem
truststore.jks

 3. 配置nifi (nifi.properties 基础配置)
    nifi 进行授权验证需要配置https,不使用HTTP
 修改nifi 配置文件内容:
--这里只截取了需要修改的部分。其中security 部分为上述ks目录生成文件,密码在config.json 中


    nifi.remote.input.secure=true
    nifi.web.war.directory=./lib
    nifi.web.http.host=
    nifi.web.http.port=
    nifi.web.http.network.interface.default=
    nifi.web.https.host=localhost
    nifi.web.https.port=8079
    nifi.security.keystore=/opt/nifi/nifi-toolkit-1.6.0/ks/keystore.jks
    nifi.security.keystoreType=jks
    nifi.security.keystorePasswd=WbHlwr8us4716jZ14S4/F+pSFdhBIdztskS9TbJBaXs
    nifi.security.keyPasswd=WbHlwr8us4716jZ14S4/F+pSFdhBIdztskS9TbJBaXs
    nifi.security.truststore=/opt/nifi/nifi-toolkit-1.6.0/ks/truststore.jks
    nifi.security.truststoreType=jks
    nifi.security.truststorePasswd=gwN9FeYhxUQrzJSAYJqIS/H0IJYscaP9lR9U2O0KvPc
    nifi.security.needClientAuth=
    nifi.security.user.authorizer=managed-authorizer
    nifi.security.user.login.identity.provider=ldap-provider

 4. 配置login-identity-providers.xml(身份验证)
    登录文件配置采用ldap ,ldap服务器必须进行配置账户 (例:cn=admin,ou=people,dc=nifi,dc=com)
 

        <provider>
        <identifier>ldap-provider</identifier>
        <class>org.apache.nifi.ldap.LdapProvider</class>
        <property name="Authentication Strategy">SIMPLE</property>

        <property name="Manager DN">cn=admin,ou=people,dc=nifi,dc=com</property>
        <property name="Manager Password">password</property>

        <property name="TLS - Keystore"></property>
        <property name="TLS - Keystore Password"></property>
        <property name="TLS - Keystore Type"></property>
        <property name="TLS - Truststore"></property>
        <property name="TLS - Truststore Password"></property>
        <property name="TLS - Truststore Type"></property>
        <property name="TLS - Client Auth"></property>
        <property name="TLS - Protocol"></property>
        <property name="TLS - Shutdown Gracefully"></property>
        
        <property name="Referral Strategy">FOLLOW</property>
        <property name="Connect Timeout">10 secs</property>
        <property name="Read Timeout">10 secs</property>

        <property name="Url">ldap://10.28.96.41:10389</property>
        <property name="User Search Base">ou=people,dc=nifi,dc=com</property>
        <property name="User Search Filter">uid={0}</property>

        <property name="Identity Strategy">USE_DN</property>
        <property name="Authentication Expiration">12 hours</property>
    </provider>

    配置说明:
       Authentication Strategy: 验证策略指的是Nifi如何与LDAP服务器连接。可以选择- ANONYMOUS: 匿名连接- SIMPLE:使用已存在于LDAP服务器中的用户名-密码连接- LDAPS:LDAPS协议连接- START_TLS:使用TLS连接
Manager DN: 如果验证策略不是ANONYMOUS,那么Nifi将以Manager DN这个身份来跟LDAP服务器进行bind连接,例如cn=admin,dc=example,dc=com。该用户必须已存在于LDAP服务器中。
Manager Password:Manager用户的密码
Url:LDAP服务器的Url,可以设置多个Url,要用空格相互隔开。
User Search Base:用于搜索用户的基本DN(Base DN),如ou=people,dc=example,dc=com。
User Search Filter:用于搜索用户的标准,例如可以设置为uid={0},其中{0}指的是用户在UI界面登录Nifi时所输入的用户名。这样,结合User Search Base,Nifi将会查找DN为uid={0},ou=people,dc=example,dc=com的用户。
Identity Strategy:可选USE_DN或者USE_USERNAME。如果选USE_DN,则用户的完整DN会被送到权限验证模块;如果选择USE_USERNAME,那么只有用户输入到UI界面的用户名会被送到权限验证模块。

 5. 配置authorizers.xml(权限验证)
    这里是通过身份验证后会进行权限验证,权限认证可以完全与身份认证不同独立,这里使用的是文件认证。
      

        <userGroupProvider>
        <identifier>file-user-group-provider</identifier>
        <class>org.apache.nifi.authorization.FileUserGroupProvider</class>
        <property name="Users File">./conf/users.xml</property>
        <property name="Legacy Authorized Users File"></property>
        <property name="Initial User Identity 1">cn=test,ou=people,dc=nifi,dc=com</property>
    </userGroupProvider>


        <accessPolicyProvider>
        <identifier>file-access-policy-provider</identifier>
        <class>org.apache.nifi.authorization.FileAccessPolicyProvider</class>
        <property name="User Group Provider">file-user-group-provider</property>
        <property name="Authorizations File">./conf/authorizations.xml</property>
        <property name="Initial Admin Identity">cn=test,ou=people,dc=nifi,dc=com</property>
        <property name="Legacy Authorized Users File"></property>

        <property name="Node Identity 1"></property>
    </accessPolicyProvider>


        <authorizer>
        <identifier>managed-authorizer</identifier>
        <class>org.apache.nifi.authorization.StandardManagedAuthorizer</class>
        <property name="Access Policy Provider">file-access-policy-provider</property>
         </authorizer>

> 启动登录

 登录后配置用户添加权限

 类似资料: