Åtkomst Key Vault hemlighet vid distribution av Azure Managed Applications

När du behöver skicka ett säkert värde (till exempel ett lösenord) som en parameter under distributionen kan du hämta värdet från en Azure Key Vault. Om du vill Key Vault när du distribuerar hanterade program måste du bevilja åtkomst till tjänstens huvudnamn för resursprovidern för installationen. Tjänsten Hanterade program använder den här identiteten för att köra åtgärder. För att ett värde ska kunna hämtas från Key Vault under distributionen måste tjänstens huvudnamn kunna komma åt Key Vault.

I den här artikeln beskrivs hur du konfigurerar Key Vault att fungera med hanterade program.

Aktivera malldistribution

  1. I portalen väljer du Key Vault.

  2. Välj Åtkomstprinciper.

    Välj åtkomstprinciper

  3. Välj Click to show advanced access policies (Klicka för att visa avancerade åtkomstprinciper).

    Visa avancerade åtkomstprinciper

  4. Välj Aktivera åtkomst till Azure Resource Manager för malldistribution. Välj sedan Spara.

    Aktivera malldistribution

Lägg till tjänst som deltagare

Tilldela rollen Deltagare till användaren av resursprovidern för installationen i nyckelvalvsomfånget.

Detaljerade anvisningar finns i Tilldela Azure-roller med hjälp av Azure Portal.

Referenshemlighet Key Vault referens

Om du vill skicka en hemlighet från en Key Vault till en mall i ditt hanterade program måste du använda en länkad eller kapslad mall och referera till Key Vault i parametrarna för den länkade eller kapslade mallen. Ange resurs-ID för Key Vault och namnet på hemligheten.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location where the resources will be deployed."
      }
    },
    "vaultName": {
      "type": "string",
      "metadata": {
        "description": "The name of the keyvault that contains the secret."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "The name of the secret."
      }
    },
    "vaultResourceGroupName": {
      "type": "string",
      "metadata": {
        "description": "The name of the resource group that contains the keyvault."
      }
    },
    "vaultSubscription": {
      "type": "string",
      "defaultValue": "[subscription().subscriptionId]",
      "metadata": {
        "description": "The name of the subscription that contains the keyvault."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2018-05-01",
      "name": "dynamicSecret",
      "properties": {
        "mode": "Incremental",
        "expressionEvaluationOptions": {
          "scope": "inner"
        },
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
            "adminLogin": {
              "type": "string"
            },
            "adminPassword": {
              "type": "securestring"
            },
            "location": {
              "type": "string"
            }
          },
          "variables": {
            "sqlServerName": "[concat('sql-', uniqueString(resourceGroup().id, 'sql'))]"
          },
          "resources": [
            {
              "type": "Microsoft.Sql/servers",
              "apiVersion": "2018-06-01-preview",
              "name": "[variables('sqlServerName')]",
              "location": "[parameters('location')]",
              "properties": {
                "administratorLogin": "[parameters('adminLogin')]",
                "administratorLoginPassword": "[parameters('adminPassword')]"
              }
            }
          ],
          "outputs": {
            "sqlFQDN": {
              "type": "string",
              "value": "[reference(variables('sqlServerName')).fullyQualifiedDomainName]"
            }
          }
        },
        "parameters": {
          "location": {
            "value": "[parameters('location')]"
          },
          "adminLogin": {
            "value": "ghuser"
          },
          "adminPassword": {
            "reference": {
              "keyVault": {
                "id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
              },
              "secretName": "[parameters('secretName')]"
            }
          }
        }
      }
    }
  ],
  "outputs": {
  }
}

Nästa steg

Du har konfigurerat dina Key Vault vara tillgängliga under distributionen av ett hanterat program.