与环境变量相比,在 KeyVault 中存储简单机密有什么优势

What are the advantages for storing simple secrets in KeyVault over Environment variables

我 运行 Azure 应用服务上的一个非常简单的 nodejs Web 应用程序。我需要将一个秘密传递到应用程序中,为此我在本地使用 dotenv。我可以在 Azure 配置 Application settings 中设置这些环境变量。想知道那里的秘密是否安全我发现我也可以使用 @Microsoft.KeyVault({referenceString}) 将它们存储在 Key Vault referencing 到环境变量中。在这两个地方我都可以 "unhide" 秘密,所以我想知道在我的场景中一个比另一个有什么优势?

Application settings中,应用设置并不是真正隐藏的,如您所知,只需单击Show values即可看到它。此外,任何人在您的网络应用程序范围内都具有读取权限,他将始终能够检查此值,不仅是门户 UI,而且 天蓝色powershell, cli, resource explorer,等

将其作为秘密存储在 keyvault 中是安全的,只有在 Access policies 中具有正确权限的人(在您的情况下,网络应用程序的系统分配身份)才能访问秘密。其他人将无法访问秘密(他们不是 RBAC 角色,例如 subscription/keyvault 中的 OwnerContributor,否则他们可以将自己添加到 Access policies ).

有关详细信息,请参阅 Secure access to a key vault