我正在寻找一个代码示例,该示例演示了如何连接到天蓝色的密钥保管库并从保管库中获取秘密,而不必以纯文本格式存储凭据,而是使用证书和SPN对保管库进行身份验证。有谁愿意做这个之前做过这样的事情?
我正在尝试从天蓝色安全地检索凭据,而不必在本地保存凭据,事实证明这比我最初想的要难。
答案 0 :(得分:1)
是的,您可以在访问Azure密钥保管库时使用基于证书的身份验证。
在同一篇文章中,使用点网非常好。
Certificate base authentication
或者,Azure密钥保管库提供了一种安全地存储凭据以及其他密钥和机密的方法,但是您的代码需要通过密钥保管库进行身份验证才能检索它们。通过在Azure Active Directory(Azure AD)中为Azure服务赋予自动管理的身份,托管服务身份(MSI)使解决此问题变得更加简单。您可以使用此身份对任何支持Azure AD身份验证的服务进行身份验证,包括Key Vault,而无需在代码中包含任何凭据。
运行assign-identity命令创建此应用程序的身份:
az webapp identity assign --name <app_name> --resource-group "<YourResourceGroupName>"
此命令等效于转到门户并将Web应用程序属性中的“托管服务身份”切换为“开”。
为您的应用分配权限以从Key Vault中读取机密
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
然后,使用您的Key Vault名称和从上面复制的PrincipalId的值运行此命令:
az keyvault set-policy --name '<YourKeyVaultName>' --object-id <PrincipalId> --secret-permissions get
Deploy the Node App to Azure and retrieve the secret value
部署您的节点js应用程序,之后浏览https://.azurewebsites.net之后,您可以看到秘密值。确保您使用保管库名称替换了该名称