【问题标题】:How To Retrieve a Secret From Azure Key Vault Node如何从 Azure Key Vault 节点检索机密
【发布时间】:2020-08-27 19:16:03
【问题描述】:

我正在寻找一个代码示例,该示例演示如何连接到 Azure 密钥保管库并从保管库中获取机密,而无需以纯文本形式存储凭据,而是使用证书和 SPN 对保管库进行身份验证。有没有人做过类似的事情,谁愿意对此有所了解?

我正在尝试从 azure 安全地检索凭据,而不必在本地保存凭据,事实证明这比我最初想象的要难。

【问题讨论】:

    标签: node.js azure azure-keyvault


    【解决方案1】:

    是的,您可以在访问 Azure 密钥保管库时使用基于证书的身份验证。

    这是一篇非常好的文章,同样使用 dot net。

    Certificate base authentication

    或者,Azure Key Vault 提供了一种安全存储凭据和其他密​​钥和机密的方法,但您的代码需要对 Key Vault 进行身份验证才能检索它们。托管服务标识 (MSI) 通过在 Azure Active Directory (Azure AD) 中为 Azure 服务提供一个自动管理的标识来简化解决此问题的过程。您可以使用此标识向任何支持 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
    

    部署你的 node js 应用程序,之后当你浏览 https://.azurewebsites.net 时,你可以看到秘密值。确保将名称替换为您的保管库名称

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      • 2020-10-26
      • 2020-12-19
      • 2019-03-10
      • 2021-04-29
      • 2019-03-25
      • 2020-08-27
      相关资源
      最近更新 更多