如何安全地存储 Mule 应用程序的身份文件

How to securly store an identity file for a Mule application

我们正在使用 Mule 4 的 SFTP 连接器。对于 SFTP 连接,我们使用身份文件 company.key 和密码进行身份验证。
私钥 (company.key) 和 public (company.pub) 密钥是在另一个 IT 部门为我们生成的。
我犹豫是否将 company.key 文件放入 src/main/resources 并通过文件路径从 config.yaml 引用它并将其放入版本控制中。
私钥是否不受版本控制?
An answer on the MuleSoft forum 正是这个建议。
我更愿意尝试将密钥存储在 Anypoint 平台上的信任库中或作为特定 API 的秘密,但我不知道如何。
存储身份文件的安全方法是什么?

私人 key/secret 文件应该不受版本控制,对此毫无疑问。 Public 密钥(如 TLS public 证书)不是秘密的,可以自由共享。

如果您控制主机服务器,您可以将文件放在应用程序和 Mule 安装目录之外的服务器目录中。使用操作系统权限保护目录,以便只有 Mule 进程使用的用户可以读取它。使用属性指向正确的文件,因此它是可配置的。

如果您要部署到托管环境,例如 CloudHub 或 Anypoint Runtime Fabric,您无法选择使用服务器目录,您必须将文件与应用程序打包在一起。这并不意味着您必须将它们置于版本控制中。您可以将版本控制软件配置为忽略这些文件,并向构建过程添加步骤以在构建时包含它们。对于开发,它们可以在您的开发环境中。对于生产构建,您可以将文件合并到 CI 服务器中,不受开发人员控制。

Anypoint Platform 中没有地方可以存储这些SSH 密钥文件。请注意,对于 TLS 证书,您可以使用 Secrets Manager,但仅适用于一些非常具体的用例,而不适用于 CloudHub 中的通用 HTTPS Mule 应用程序。但 TLS 证书与 SSH 密钥文件完全不同。