![将 pgp 密钥存储在 Azure 密钥保管库中](https://linux22.com/image/1600473/%E5%B0%86%20pgp%20%E5%AF%86%E9%92%A5%E5%AD%98%E5%82%A8%E5%9C%A8%20Azure%20%E5%AF%86%E9%92%A5%E4%BF%9D%E7%AE%A1%E5%BA%93%E4%B8%AD.png)
我想使用 Azure 数据工厂管道将加密文件从 SFTP 服务器(Ubuntu)传输到 Azure 存储。客户正在使用 PGP 加密静态文件并将其推送到 sftp 服务器。因此文件到达 sftp 时将被 PGP 加密。我需要解密文件才能从那里读取。此外,我想将 PGP 私钥存储在 Azure 密钥保管库中,以便从 Azure 数据工厂使用它。但问题是我无法将 PGP 密钥加载到 Azure 密钥保管库,因为它只接受 pfx 和 PEM 格式。所以我的问题是 - 我可以将 PGP 密钥转换为其他格式吗?如果是这样,我可以在将其更改为不同格式后使用它进行文件解密吗?
答案1
简而言之,您可以将任何内容作为机密放入 KeyVault,然后提取它。将您的密钥导出为文本文件,将其作为机密保存在 KeyVault 中,您就可以开始了。
我可以通过修改以下代码来实现这一点https://github.com/lfalck/AzureFunctionsPGPDecrypt
基本上,您可以使用 gpg4win 来生成密钥,然后调用:
gpg --export-secret-keys --armor > key.asc
在 Azure Key Vault 中,创建两个新的 Secret(不是 Key)。一个应该是上面创建的文件的内容key.asc
,另一个应该是用于保护 gpg 中的私钥的密码。然后链接中的代码将从 Key Vault 读取这些 Secret,并将它们传递到PGPCore解密库。
我还要指出的是,出于某种原因,该存储库中的代码要求在将机密放入 KeyVault 之前将其转换为 Base64,因为它会在使用它们之前对其进行 Base64 解码。这对我来说似乎不是绝对必要的,但如果你弄乱了上面的代码,你会想要进行这种编码。
它以 Azure 函数的形式呈现,但其中演示的概念也可以在其他环境中使用。