Dela via


Konfigurera åtkomst till privat nätverk för serverdelslagring i ditt virtuella nätverk

Kommentar

Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.

Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.

Den här artikeln gäller för: ✔️ Standard ✔️ Enterprise

Den här artikeln beskriver hur du konfigurerar åtkomst till serverdelslagring för ditt program i ditt virtuella nätverk.

När du distribuerar ett program i en Azure Spring Apps-tjänstinstans med virtuell nätverksinmatning förlitar sig tjänstinstansen på serverdelslagring för att lagra associerade tillgångar, inklusive JAR-filer och loggar. Medan standardkonfigurationen dirigerar trafik till den här serverdelslagringen via det offentliga nätverket, kan du aktivera funktionen för åtkomst till privat lagring. Med den här funktionen kan du dirigera trafiken via ditt privata nätverk, förbättra säkerheten och eventuellt förbättra prestandan.

Kommentar

Den här funktionen gäller endast för en virtuell Azure Spring Apps-instans av inmatade tjänster.

Innan du aktiverar den här funktionen för din Azure Spring Apps-tjänstinstans kontrollerar du att det finns minst två tillgängliga IP-adresser i tjänstkörningsundernätet.

Om du aktiverar eller inaktiverar den här funktionen ändras DNS-matchningen till serverdelslagringen. Under en kort tidsperiod kan det uppstå distributioner som inte kan upprätta en anslutning till serverdelslagringen eller som inte kan matcha slutpunkten under uppdateringen.

När du har aktiverat den här funktionen är serverdelslagringen endast tillgänglig privat, så du måste distribuera programmet i det virtuella nätverket.

Förutsättningar

Aktivera åtkomst till privat lagring när du skapar en ny Azure Spring Apps-instans

När du skapar en Azure Spring Apps-instans i det virtuella nätverket använder du följande kommando för att skicka argumentet --enable-private-storage-access true för att aktivera åtkomst till privat lagring. Mer information finns i Distribuera Azure Spring Apps i ett virtuellt nätverk.

az spring create \
    --resource-group "<resource-group>" \
    --name "<Azure-Spring-Apps-instance-name>" \
    --vnet "<virtual-network-name>" \
    --service-runtime-subnet "<service-runtime-subnet>" \
    --app-subnet "<apps-subnet>" \
    --location "<location>" \
    --enable-private-storage-access true

Ytterligare en resursgrupp skapas i din prenumeration för att vara värd för privata länkresurser för Azure Spring Apps-instansen. Den här resursgruppen heter ap-res_{service instance name}_{service instance region}.

Det finns två uppsättningar med privata länkresurser som distribueras i resursgruppen, som var och en består av följande Azure-resurser:

  • En privat slutpunkt som representerar serverdelslagringskontots privata slutpunkt.
  • Ett nätverksgränssnitt (NIC) som underhåller en privat IP-adress i undernätet för tjänstkörning.
  • En privat DNS-zon som distribuerats för ditt virtuella nätverk, med en DNS A-post som också har skapats för lagringskontot i den här DNS-zonen.

Viktigt!

Resursgrupperna hanteras helt av Azure Spring Apps-tjänsten. Ta inte bort eller ändra någon resurs i dessa resursgrupper manuellt.

Aktivera eller inaktivera åtkomst till privat lagring för en befintlig Azure Spring Apps-instans

Använd följande kommando för att uppdatera en befintlig Azure Spring Apps-instans för att aktivera eller inaktivera åtkomst till privat lagring:

az spring update \
    --resource-group "<resource-group>" \
    --name "<Azure-Spring-Apps-instance-name>" \
    --enable-private-storage-access <true-or-false>

Använda central DNS-matchning

En centraliserad DNS-hanteringsarkitektur dokumenteras i nav- och ekernätverksarkitekturen i Private Link och DNS-integrering i stor skala. I den här arkitekturen distribueras och hanteras alla privata DNS-zoner centralt i ett annat centralt virtuellt nätverk än Azure Spring Apps-tjänstinstansen. Om du använder den här arkitekturen kan du aktivera central DNS-matchning för åtkomst till privat lagring genom att konfigurera DNS-inställningarna på rätt sätt. Den här konfigurationen säkerställer att:

  • När en privat slutpunkt skapas läggs motsvarande DNS-poster automatiskt till i den centraliserade privata DNS-zonen.
  • DNS-poster hanteras enligt livscykeln för den privata slutpunkten, vilket innebär att de tas bort automatiskt när den privata slutpunkten tas bort.

I följande avsnitt beskrivs hur du aktiverar central DNS-matchning för Azure Storage-blobar med hjälp av Azure Policy, förutsatt att du redan har konfigurerat den privata DNS-zonen privatelink.blob.core.windows.net i det centrala virtuella nätverket. Samma principer gäller för Azure Storage-filer och andra Azure-tjänster som stöder Private Link.

Definition av princip

Förutom den privata DNS-zonen måste du skapa en anpassad Azure Policy-definition. Mer information finns i Självstudie: Skapa en anpassad principdefinition. Den här definitionen skapar automatiskt den dns-post som krävs i den centrala privata DNS-zonen när du skapar en privat slutpunkt.

Följande princip utlöses när du skapar en privat slutpunktsresurs med en tjänstspecifik groupId. groupId är ID:t för den grupp som hämtats från fjärrresursen eller tjänsten som den här privata slutpunkten ska ansluta till. I det här exemplet groupId är blobför Azure Storage-blobar . Mer information om groupId för andra Azure-tjänster finns i tabellerna i privata DNS-zonvärden för Privata Slutpunkter i Azure under kolumnen Subresource.

Principen utlöser sedan en distribution av en privateDNSZoneGroup inom den privata slutpunkten, som associerar den privata slutpunkten med den privata DNS-zonen som anges som parameter. I följande exempel är /subscriptions/<subscription-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/privateDnsZones/privatelink.blob.core.windows.netresurs-ID:t för den privata DNS-zonen :

{
  "mode": "Indexed",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Network/privateEndpoints"
        },
        {
          "value": "[contains(resourceGroup().name, 'ap-res_')]",
          "equals": "true"
        },
        {
          "count": {
            "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].groupIds[*]",
            "where": {
              "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].groupIds[*]",
              "equals": "blob"
            }
          },
          "greaterOrEquals": 1
        }
      ]
    },
    "then": {
      "effect": "deployIfNotExists",
      "details": {
        "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
        "evaluationDelay": "AfterProvisioningSuccess",
        "roleDefinitionIds": [
          "/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
        ],
        "deployment": {
          "properties": {
            "mode": "incremental",
            "template": {
              "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
              "contentVersion": "1.0.0.0",
              "parameters": {
                "privateDnsZoneId": {
                  "type": "string"
                },
                "privateEndpointName": {
                  "type": "string"
                },
                "location": {
                  "type": "string"
                }
              },
              "resources": [
                {
                  "name": "[concat(parameters('privateEndpointName'), '/deployedByPolicy')]",
                  "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
                  "apiVersion": "2020-03-01",
                  "location": "[parameters('location')]",
                  "properties": {
                    "privateDnsZoneConfigs": [
                      {
                        "name": "storageBlob-privateDnsZone",
                        "properties": {
                          "privateDnsZoneId": "[parameters('privateDnsZoneId')]"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "parameters": {
              "privateDnsZoneId": {
                "value": "[parameters('privateDnsZoneId')]"
              },
              "privateEndpointName": {
                "value": "[field('name')]"
              },
              "location": {
                "value": "[field('location')]"
              }
            }
          }
        }
      }
    }
  },
  "parameters": {
    "privateDnsZoneId": {
      "type": "String",
      "metadata": {
        "displayName": "privateDnsZoneId",
        "description": null,
        "strongType": "Microsoft.Network/privateDnsZones"
      }
    }
  }
}

Principtilldelning

När du har distribuerat principdefinitionen tilldelar du principen till den prenumeration som är värd för Azure Spring Apps-tjänstinstanserna och anger den centrala privata DNS-zonen som parameter.

Den centrala privata DNS-zonen och Azure Spring Apps-tjänstinstansen kan finnas i de olika prenumerationerna. I det här fallet bör du komma ihåg att tilldela rollen Privat DNS zondeltagare i prenumerationen och resursgruppen där de privata DNS-zonerna finns till den hanterade identitet som skapats av principtilldelningen DeployIfNotExists som ansvarar för att skapa och hantera DNS-posten för privata slutpunkter i den privata DNS-zonen. Mer information finns i avsnittet Konfigurera den hanterade identiteten i Åtgärda icke-kompatibla resurser med Azure Policy.

När du har slutfört konfigurationerna, när du aktiverar eller inaktiverar funktionen för åtkomst till privat lagring, registreras DNS-posterna för privata slutpunkter automatiskt – och tas bort efter att en privat slutpunkt har tagits bort – i motsvarande privata DNS-zon.

Extra kostnader

Azure Spring Apps-instansen debiteras inte för den här funktionen. Du debiteras dock för de privata länkresurser som finns i din prenumeration som stöder den här funktionen. Mer information finns i Prissättning för Azure Private Link och Prissättning för Azure DNS.

Använda anpassade DNS-servrar

Om du använder en DNS-server (Custom Domain Name System) och Azure DNS IP 168.63.129.16 inte har konfigurerats som den överordnade DNS-servern måste du manuellt binda alla DNS-poster för de privata DNS-zoner som visas i resursgruppen ap-res_{service instance name}_{service instance region} för att matcha de privata IP-adresserna.

Nästa steg