Åtkomst till Key Vault-hemlighet när du distribuerar 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 ett Azure Key Vault. För att få åtkomst till Key Vault när du distribuerar hanterade program måste du bevilja åtkomst till tjänstens huvudnamn för apparatresursprovidern . Tjänsten Hanterade program använder den här identiteten för att köra åtgärder. För att kunna hämta ett värde från ett 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 så att det fungerar med hanterade program.

Aktivera malldistribution

  1. Logga in på Azure-portalen.

  2. Öppna nyckelvalvet. Ange nyckelvalv i sökrutan eller välj Nyckelvalv.

    Screenshot of the Azure home page to open a key vault using search or by selecting key vault.

  3. Välj Åtkomstkonfiguration.

    Screenshot of the key vault setting to select access configuration.

  4. Välj Azure Resource Manager för malldistribution. Välj sedan Använd.

    Screenshot of the key vault's access configuration that enables Azure Resource Manager for template deployment.

Lägg till tjänst som deltagare

Tilldela rollen Deltagare till användaren av resursprovidern för installationen i nyckelvalvets omfång. Rollen Deltagare är en privilegierad administratörsroll för rolltilldelningen. Detaljerade steg finns i Tilldela Azure-roller med hjälp av Azure-portalen.

Resursprovidern för installationen är ett huvudnamn för tjänsten i din Microsoft Entra-klientorganisation. Från Azure-portalen kan du kontrollera om den är registrerad genom att gå till Microsoft Entra ID>Enterprise-program och ändra sökfiltret till Microsoft Applications. Sök efter resursprovidern för installationen. Om den inte hittas registrerar du resursprovidern Microsoft.Solutions .

Referens till Key Vault-hemlighet

Om du vill skicka en hemlighet från ett Nyckelvalv 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/2019-04-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 key vault 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 key vault."
      }
    },
    "vaultSubscription": {
      "type": "string",
      "defaultValue": "[subscription().subscriptionId]",
      "metadata": {
        "description": "The name of the subscription that contains the key vault."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2022-09-01",
      "name": "dynamicSecret",
      "properties": {
        "mode": "Incremental",
        "expressionEvaluationOptions": {
          "scope": "inner"
        },
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-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": "2022-05-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 nyckelvalvet så att det är tillgängligt under distributionen av ett hanterat program.