首页 > 解决方案 > Nifi加密变量/属性文件

问题描述

Nifi自定义属性(每个环境的属性文件)看起来是定义环境特定路径和凭据的完美方式。唯一的问题是如何将敏感信息保存在那里?这里有更详细描述的Nifi Encrypt-Config Tool

Nifi Encrypt-Config Tool是否能够加密变量文件(用 定义nifi.variable.registry.propertiesnifi.properties

据我了解,它只加密nifi.properties. 这很重要,因为使用Nifi Docker Image我只能定义nifi.variable.registry.properties( NIFI_VARIABLE_REGISTRY_PROPERTIESenv var) 而无法修改nifi.properties.

标签: apache-nifi

解决方案


NiFi encrypt-config 工具与以下配置文件交互:

  • nifi.properties
  • login-identity-providers.xml
  • authorizers.xml
  • bootstrap.conf
  • flow.xml.gz

它不处理任何链接的自定义变量定义文件,也没有适当保护和存储敏感变量的机制。由于这个原因,变量根本不支持任何敏感值

变量在现代版本的 NiFi 中被视为已弃用- 仍然支持但不鼓励使用它们 - 并且在版本 1.10.0中引入了参数作为现代解决方案。参数确实支持敏感值,并且可以从框架级别的每个属性描述符访问,而不是基于每个字段,这取决于开发人员支持它们的明确决定。您应该优先考虑存储流定义中所需的敏感值的参数。

根据您的威胁模型,您可能有不太强大但可以接受的替代方案:

  • 如果您接受环境变量的安全级别,您可以直接填充它们,它们将在任何支持表达式语言的属性中被引用,与“NiFi 变量”相同
  • 您可以nifi.properties通过自定义 Docker 映像、启动脚本等编辑文件。该文件中任何修改或添加的属性都可以通过将其密钥(属性密钥描述符,而不是加密密钥)作为逗号分隔列表添加到该文件中来nifi.sensitive.props.additional.keys加密. 这些属性也将受到工具包的保护,并在 NiFi 应用程序启动期间在内存中解密。但是,nifi.properties它旨在保存框架级别的配置值,而不是组件级别的属性。

推荐阅读