在 ExecuteScript 中使用控制器服务

Using Controller Service in ExecuteScript

我正在处理一个 Google 云项目,我想使用 Jython 连接到自定义 API。我需要提供 Google 服务帐户凭据以验证我自己的身份,但出于安全原因,我不希望这些信息被轻易访问。我可以创建一个工作控制器服务,让我连接到 Google 云服务。

我有 Python 代码可以执行身份验证,但代码被设计为 运行 独立并从文件加载凭据。然而,这对我来说是不可能的,因为凭据不应该对可能有权访问服务器的人可见。所以我需要将凭据存储在其他地方

有没有一种方法可以将服务帐户 JSON 存储在 NiFi 中,以便我可以在需要时在 ExecuteScript 中访问它或直接使用控制器服务?

你的问题的答案是否定的。没有在文件中或作为 JSON 数据结构分发服务帐户凭据的安全方法。无论您尝试隐藏、屏蔽或加密多少,我都只需几分钟即可对您的混淆进行逆向工程。您的选择是易用性还是安全性。

如果您的代码是 运行 在 Google 计算服务(例如 Compute Engine)上,您的代码可以使用通过元数据访问的默认服务帐户。这将阻止分发服务帐户 JSON 密钥文件的要求。但是,任何有权访问服务器的人也可以访问元数据服务器。这种技术称为 ADC(应用程序默认凭证)。这更安全,但在您的用例中不是防弹的。

您没有提供足够的详细信息让我推荐替代解决方案。如果可以使用 Google OAuth 2.0 用户凭据,这将提供安全性和临时 OAuth 访问令牌。但是,这是为人机交互(身份验证)而设计的。