Nifi 加密 variables/properties 个文件

Nifi encrypt variables/properties files

妮菲custom properties (per-environment property files) looks to be a perfect way to define an environment specific paths and credentials. The only issue is how to keep sensitive information there? There is Nifi Encrypt-Config Tool described in more details here.

除了nifi.properties之外,Nifi Encrypt-Config Tool是否能够加密可变文件(用nifi.variable.registry.properties定义)?

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

NiFi 加密配置工具与以下配置文件交互:

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

处理任何链接的自定义变量定义文件,并且机制可以正确保护和存储敏感变量. 出于这个原因,变量根本不支持任何敏感值

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

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

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