# 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>
> 启动登录
登录后配置用户添加权限