Partager via


Configurer l’accès au réseau privé pour le stockage back-end dans votre réseau virtuel

Remarque

Les plans Essentiel, Standard et Entreprise seront déconseillés à compter de la mi-mars 2025, avec une période de mise hors service de 3 ans. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez l’annonce de mise hors service d’Azure Spring Apps.

Le plan de consommation standard et dédiée sera déconseillé à compter du 30 septembre 2024, avec un arrêt complet après six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation standard et dédiée Azure Spring Apps vers Azure Container Apps.

Cet article s’applique à :✅ Standard ✅ Entreprise

Cet article explique comment configurer l’accès du réseau privé au stockage back-end pour votre application au sein de votre réseau virtuel.

Lorsque vous déployez une application dans une instance de service Azure Spring Apps avec injection de réseau virtuel, l’instance de service s’appuie sur le stockage back-end pour l’hébergement des ressources associées, y compris les fichiers JAR et les journaux. La configuration par défaut achemine le trafic vers ce stockage back-end sur le réseau public, mais vous pouvez activer la fonctionnalité d’accès privé au stockage. Cette fonctionnalité vous permet de diriger le trafic via votre réseau privé, d’accroître la sécurité et d’améliorer potentiellement les performances.

Remarque

Cette fonctionnalité s’applique uniquement à une instance de service injectée de réseau virtuel Azure Spring Apps.

Avant d’activer cette fonctionnalité pour votre instance de service Azure Spring Apps, vérifiez qu’il existe au moins deux adresses IP disponibles dans le sous-réseau du runtime de service.

L’activation ou la désactivation de cette fonctionnalité modifie la résolution DNS vers le stockage back-end. Pendant une courte période, il se peut que des déploiements ne parviennent pas à établir une connexion au stockage back-end ou ne puissent pas résoudre leur point de terminaison pendant la mise à jour.

Une fois cette fonctionnalité activée, le stockage back-end n’est accessible que de manière privée. Vous devez donc déployer votre application au sein du réseau virtuel.

Prérequis

Activer l’accès privé au stockage lorsque vous créez une instance Azure Spring Apps

Lorsque vous créez une instance Azure Spring Apps dans le réseau virtuel, utilisez la commande suivante pour passer l’argument --enable-private-storage-access true afin d’activer l’accès privé au stockage. Pour plus d’informations, consultez Déploiement d’Azure Spring Apps dans un réseau virtuel.

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

Un groupe de ressources supplémentaire est créé dans votre abonnement afin d’héberger les ressources de liaison privée pour l’instance Azure Spring Apps. Ce groupe de ressources est nommé ap-res_{service instance name}_{service instance region}.

Deux ensembles de ressources de liaison privée sont déployés dans le groupe de ressources, chacun composé des ressources Azure suivantes :

  • Un point de terminaison privé qui représente le point de terminaison privé du compte de stockage back-end.
  • Une interface réseau qui tient à jour une adresse IP privée dans le sous-réseau du runtime de service.
  • Une zone DNS privée déployée pour votre réseau virtuel, avec un enregistrement DNS A également créé pour le compte de stockage dans cette zone DNS.

Important

Les groupes de ressources sont entièrement gérés par le service Azure Spring Apps. Veillez à ne pas supprimer ou modifier manuellement des ressources dans ces groupes de ressources.

Activer ou désactiver l’accès privé au stockage pour une instance Azure Spring Apps existante

Utilisez la commande suivante pour mettre à jour une instance Azure Spring Apps existante afin d’activer ou désactiver l’accès privé au stockage :

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

Utiliser la résolution DNS centrale

Une architecture de gestion DNS centralisée est documentée dans l’architecture réseau hub-and-spoke dans la liaison privée et l’intégration DNS à grande échelle. Dans cette architecture, toutes les zones DNS privées sont déployées et gérées de manière centralisée dans un réseau virtuel central différent de l’instance de service Azure Spring Apps. Si vous utilisez cette architecture, vous pouvez activer la résolution DNS centrale pour l’accès au stockage privé en configurant correctement les paramètres DNS. Cette configuration garantit que :

  • Lorsqu’un point de terminaison privé est créé, les enregistrements DNS correspondants sont automatiquement ajoutés à la zone DNS privée centralisée.
  • Les enregistrements DNS sont gérés selon le cycle de vie du point de terminaison privé, ce qui signifie qu’ils sont supprimés automatiquement lorsque le point de terminaison privé est supprimé.

Les sections suivantes expliquent comment activer la résolution DNS centrale pour les objets blob stockage Azure à l’aide d’Azure Policy, en supposant que vous disposez déjà de la zone DNS privée privatelink.blob.core.windows.net configurée dans le réseau virtuel central. Les mêmes principes s’appliquent aux fichiers de stockage Azure et à d’autres services Azure qui prennent en charge Private Link.

Définition de stratégie

Outre les zones DNS privées, vous devez également créer une définition Azure Policy personnalisée. Pour plus d’informations, consultez Tutoriel : Créer une définition Azure Policy personnalisée. Cette définition crée automatiquement l’enregistrement DNS requis dans la zone DNS privée centrale lorsque vous créez un point de terminaison privé.

La stratégie suivante se déclenche quand vous créez une ressource de point de terminaison privée avec un groupId de service spécifique. groupId est l’ID du groupe obtenu de la ressource distante (ou service) à laquelle ce point de terminaison privé doit se connecter. Dans cet exemple, le groupId pour les objets blob de Stockage Azure est blob. Pour plus d’informations sur le groupId des autres services Azure, consultez les tables dans Valeurs DNS privées du point de terminaison privé Azure, dans la colonne Sous-ressource.

La stratégie déclenche ensuite le déploiement d’un privateDNSZoneGroup dans le point de terminaison privé, qui associe le point de terminaison privé à la zone DNS privée spécifiée comme paramètre. Dans l’exemple suivant, l’ID de ressource de la zone DNS privée est /subscriptions/<subscription-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/privateDnsZones/privatelink.blob.core.windows.net :

{
  "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"
      }
    }
  }
}

Attribution de stratégie

Après avoir déployé la définition de stratégie, affectez la stratégie à l’abonnement hébergeant les instances de service Azure Spring Apps et spécifiez la zone DNS privée centrale comme paramètre.

La zone DNS privée centrale et l’instance de service Azure Spring Apps peuvent être hébergées dans les différents abonnements. Dans ce cas, n’oubliez pas d’attribuer le Contributeur de zone DNS privée dans l’abonnement/groupe de ressources où les zones DNS privées sont hébergées sur l'identité managée créée par l'attribution de stratégie DeployIfNotExists qui est chargée de créer et de gérer l’enregistrement DNS de point de terminaison privé dans la zone DNS privée. Pour plus d’informations, consultez la section Configurer l’identité managée de corriger les ressources non conformes avec Azure Policy.

Une fois les configurations terminées, lorsque vous activez ou désactivez la fonctionnalité d’accès au stockage privé, les enregistrements DNS pour les points de terminaison privés sont automatiquement inscrits et supprimés après la suppression d’un point de terminaison privé dans la zone DNS privée correspondante.

Coûts supplémentaires

L’instance Azure Spring Apps n’engendre pas de frais pour cette fonctionnalité. Toutefois, vous êtes facturé pour les ressources de liaison privée hébergées dans votre abonnement qui prennent en charge cette fonctionnalité. Pour plus d’informations, consultez Tarifs Azure Private Link et Tarifs Azure DNS.

Utiliser des serveurs DNS personnalisés

Si vous utilisez un serveur DNS personnalisé et que l’adresse IP Azure DNS 168.63.129.16 n’est pas configurée comme serveur DNS en amont, vous devez lier manuellement tous les enregistrements DNS des zones DNS privées affichées dans le groupe de ressources ap-res_{service instance name}_{service instance region} pour résoudre les adresses IP privées.

Étapes suivantes