apache-nifi - Nifi加密变量/属性文件
问题描述
Nifi自定义属性(每个环境的属性文件)看起来是定义环境特定路径和凭据的完美方式。唯一的问题是如何将敏感信息保存在那里?这里有更详细描述的Nifi Encrypt-Config Tool。
Nifi Encrypt-Config Tool是否能够加密变量文件(用 定义nifi.variable.registry.properties
)nifi.properties
?
据我了解,它只加密nifi.properties
. 这很重要,因为使用Nifi Docker Image我只能定义nifi.variable.registry.properties
( NIFI_VARIABLE_REGISTRY_PROPERTIES
env var) 而无法修改nifi.properties
.
解决方案
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
它旨在保存框架级别的配置值,而不是组件级别的属性。
推荐阅读
- macos - 如何使用 brew 为 Mac 安装 llvm 5.0.0
- php - Laravel 5.6 Routing - Force language in the URL
- javascript - Vuex getter 中的 JSON 对象副本
- azure - Azure WebJob not passing arguments
- gitlab - Gitlab CI Runner slow to complete job
- r - Request for helping converting odd data frame in R
- python - 如何将参数传递给 Python 中的自定义 JSONEncoder default() 函数
- jquery - Connecting to Cross Domain Dynamics CRM Web API (Unauthorized)
- c++ - Node.js crypto seems incompatible with Openssl c++
- c# - 延迟模板字符串插值