Dela via


Å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.

    Skärmbild av Startsidan för Azure för att öppna ett nyckelvalv med hjälp av sökning eller genom att välja nyckelvalv.

  3. Välj Åtkomstkonfiguration.

    Skärmbild av key vault-inställningen för att välja åtkomstkonfiguration.

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

    Skärmbild av nyckelvalvets åtkomstkonfiguration som aktiverar Azure Resource Manager för malldistribution.

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 Portal.

Resursprovidern för installationen är ett huvudnamn för tjänsten i din Microsoft Entra-klientorganisation. Från Azure Portal kan du verifiera registreringen i Microsoft Entra ID>Enterprise-program och ändra sökfiltret till Microsoft Applications. Sök efter resursprovidern för installationen. Om tjänstens huvudnamn inte hittas registrerar du Microsoft.Solutions resursprovidern.

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 ditt Key Vault så att det är tillgängligt under distributionen av ett hanterat program.