将数据库加密货币放入Nifi自定义属性的安全性如何?与参数上下文相比,这是否不那么安全
例如,DBCPConnectionPool处理器具有名为"Password"的敏感属性。如果我将自定义属性设置为"密码",是否可以在数据来源或变量注册表中找到未加密的密码值
UPD
感谢@BryanBende,很明显,我无法将凭据放入.properties
文件中,因为变量文件没有用encrypt-config.sh
加密。
另一方面,我仍然不明白如何在DEV和PROD环境之间重用单个Nifi注册表提交,自动切换到所需的参数上下文。此外,参数上下文切换需要禁用所有控制器服务,这对于Nifi REST API来说非常痛苦和复杂。
敏感参数加密存储在flow.xml.gz中,属性描述符具有sensitive(true)
的任何属性值也加密存储,如DBCPConnectionPool的Password属性。
我不完全确定";自定义属性";是针对这个问题的,但如果你的意思是通过单击配置屏幕右上角的+图标添加到组件中的动态属性,那么答案是它取决于。。。每个组件都决定了自定义属性的描述符是什么样子的,所以如果描述符说它是敏感的,那么它就是加密的,如果不是,那么它就不是。
例如,在DBCPConnectionPool中,动态属性不敏感:
https://github.com/apache/nifi/blob/main/nifi-nar-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/main/java/org/apache/nifi/dbcp/DBCPConnectionPool.java#L307-L316
如果您引用的是使用流文件属性来获取表达式语言中的值,则这些值当前未加密。因此,如果你有一个流文件,用一个";db.密码";属性,则该值不会在所有地方都得到完全保护。
如果您谈论的是变量,它们不支持任何敏感的存储/加密,这也是创建参数上下文的原因之一。