我正在尝试使用此存储库(https://github.com/lfalck/AzureFunctionsPGPEncrypt/)作为 Blob 触发器 Azure 函数。当检测到新的 Blob 时,它应该获取该 Blob,对其进行加密并将其存储在相同的 Blob 容器但不同的子文件夹中。当有一些 .csv 文件到达我的 blob 存储时,这应该在夜间完全在 Azure 中运行。
我将公钥存储在 Key Vault 中。首先,我获取 .asc 文件并使用 powershell 将其转换为 Base64 .txt 文件。然后我复制了 .txt 文件的内容并将其存储在一个秘密中,将其命名为 pgp-public-key。
这就是我现在的处境。有人有正在运行的解决方案并可以给我建议吗?我不明白下一步该怎么做,如何将密钥存储在环境变量中?在我的本地系统上?但我认为它会从密钥库中获取秘密?这是我的第一个 C# 项目,我本周开始,但不知道该怎么做。也许有人可以提供帮助/提供建议?
最诚挚的问候, 弗雷德里克
虽然将公钥存储在 Key Vault 中很好,但由于它是公钥,因此没有必要。 “公开”本身就意味着它是不敏感的。如果您确实使用密钥保管库,则需要配置您的函数才能访问密钥保管库,并且如果您的密钥保管库具有受限的 IP,这将导致额外的设置、成本和工作量。
如果您将 Base64 编码的字符串存储到函数应用程序上的应用程序配置设置之一,键名为 pgp-public-key,您将能够使用以下行访问它
string publicKeyBase64 = Environment.GetEnvironmentVariable("pgp-public-key");
这在云上运行时可以正常工作。对于本地测试,您将需要 local.settings.json 以及在本地计算机上指定的 base64 编码值。内容将如下所示。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"pgp-public-key": "<your base 64 encoded public key>"
}
}
当您在 VScode 上创建函数时,会自动为您创建此文件。您只需使用环境变量修改它即可。
有了这个,您可以在您的计算机上本地或在云上进行测试,而无需修改代码。 您可以找到更多有关当地发展的信息这里。