Configurare l'accesso alla rete privata per l'archiviazione back-end nella rete virtuale
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
Questo articolo si applica a: ✔️ Standard ✔️ Enterprise
Nel presente articolo si spiega come configurare l'accesso alla rete privata per l'archiviazione back-end dell'applicazione nella rete virtuale.
Quando si distribuisce un'applicazione in un'istanza del servizio Azure Spring Apps con inserimento della rete virtuale, l'istanza del servizio si affida all’archiviazione back-end per ospitare le risorse associate, inclusi i file JAR e i log. Quando la configurazione predefinita instrada il traffico verso l’archiviazione back-end sulla rete pubblica, è possibile attivare la funzionalità di accesso all'archiviazione privata. Questa funzionalità consente di indirizzare il traffico attraverso la rete privata, migliorare la sicurezza e, potenzialmente, le prestazioni.
Nota
Questa funzionalità si applica esclusivamente a un'istanza del servizio Azure Spring Apps inserita in una rete virtuale.
Prima di abilitare questa funzionalità per l'istanza del servizio Azure Spring Apps, verificare che nella subnet di runtime del servizio siano disponibili almeno due indirizzi IP.
L'abilitazione o la disabilitazione di questa funzionalità modifica la risoluzione DNS nell'archiviazione back-end. Per un breve intervallo di tempo è possibile che alcune distribuzioni non riescano a stabilire una connessione con l'archiviazione back-end o non riescano a risolvere l'endpoint durante l'aggiornamento.
Dopo avere abilitato questa funzionalità, l'archiviazione back-end è accessibile solo privatamente, quindi sarà necessario distribuire l'applicazione nella rete virtuale.
Prerequisiti
- Una sottoscrizione di Azure. Se non si ha già una sottoscrizione, creare un account gratuito prima di iniziare.
- Interfaccia della riga di comando di Azure versione 2.56.0, o successive.
- Un'istanza esistente del servizio Azure Spring Apps distribuita in una rete virtuale. Per altre informazioni, vedere Distribuire Azure Spring Apps in una rete virtuale.
Abilitare l'accesso all'archiviazione privata al momento della creazione di nuova istanza di Azure Spring Apps
Durante la creazione di un'istanza di Azure Spring Apps nella rete virtuale, usare il comando seguente per trasmettere l'argomento --enable-private-storage-access true
e abilitare l'accesso all'archiviazione privata. Per altre informazioni, vedere Distribuire Azure Spring Apps in una rete virtuale.
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
Nella sottoscrizione viene creato un altro gruppo di risorse per ospitare le risorse del collegamento privato per l'istanza di Azure Spring Apps. Questo gruppo di risorse è denominato ap-res_{service instance name}_{service instance region}
.
Nel gruppo di risorse vengono distribuiti due set di risorse del collegamento privato, ognuno composto dalle risorse di Azure seguenti:
- Endpoint privato che rappresenta l'endpoint privato dell'account di archiviazione back-end.
- Interfaccia di rete (NIC) che gestisce un indirizzo IP privato all'interno della subnet di runtime del servizio.
- Una zona DNS privata distribuita per la rete virtuale, con un record DNS A creato anch'esso per l'account di archiviazione all'interno di questa zona DNS.
Importante
I gruppi di risorse sono completamente gestiti dal servizio Azure Spring Apps. Non eliminare o modificare manualmente nessuna risorsa all'interno di questi gruppi di risorse.
Abilitare o disabilitare l'accesso all'archiviazione privata per un'istanza di Azure Spring Apps esistente
Usare il comando seguente per aggiornare un'istanza di Azure Spring Apps esistente e abilitare o disabilitare l'accesso all'archiviazione privata:
az spring update \
--resource-group "<resource-group>" \
--name "<Azure-Spring-Apps-instance-name>" \
--enable-private-storage-access <true-or-false>
Usare la risoluzione DNS centrale
Un'architettura di gestione DNS centralizzata è documentata nell'architettura di rete hub-spoke in Collegamento privato e integrazione DNS su larga scala. In questa architettura, tutte le zone DNS private vengono distribuite e gestite centralmente in una rete virtuale centrale diversa da quella dell'istanza del servizio Azure Spring Apps. Se si usa questa architettura, è possibile abilitare la risoluzione DNS centrale per l'accesso all'archiviazione privata, configurando le impostazioni DNS in modo appropriato. Questa configurazione garantisce che:
- Quando si crea un endpoint privato, i record DNS corrispondenti vengano aggiunti automaticamente alla zona DNS privata centralizzata.
- I record DNS vengano gestiti in base al ciclo di vita dell'endpoint privato: ciò significa che vengono rimossi automaticamente al momento dell’eliminazione dell'endpoint privato.
Le sezioni seguenti mostrano come abilitare la risoluzione DNS centrale per i BLOB di Archiviazione di Azure tramite Criteri di Azure, presupponendo che la zona DNS privata privatelink.blob.core.windows.net
sia già stata configurata nella rete virtuale centrale. Gli stessi principi si applicano ai file di Archiviazione di Azure e ad altri servizi di Azure che supportano il collegamento privato.
Definizione criteri
Oltre alla zona DNS privata, è necessario creare una definizione personalizzata di Criteri di Azure. Per altre informazioni, vedere Esercitazione: Creare una definizione dei criteri personalizzata. Questa definizione crea automaticamente il record DNS richiesto nella zona DNS privata centrale al momento della creazione di un endpoint privato.
I criteri seguenti vengono attivati quando si crea una risorsa di endpoint privato con un oggetto groupId
specifico del servizio. groupId
è l'ID del gruppo ottenuto dalla risorsa o dal servizio remoti a cui si deve connettere l'endpoint privato. In questo esempio, groupId
per i BLOB di Archiviazione di Azure è blob
. Per altre informazioni su groupId
per altri servizi di Azure, vedere le tabelle in Valori della zona DNS privata dell'endpoint privato di Azure, nella colonna Sottorisorsa.
I criteri attivano quindi la distribuzione di privateDNSZoneGroup
nell'endpoint privato. In questo modo l'endpoint privato viene associato alla zona DNS privata specificata come parametro. Nell'esempio seguente l'ID della risorsa della zona DNS privata è /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"
}
}
}
}
Assegnazione dei criteri
Dopo aver distribuito la definizione dei criteri, assegnare i criteri nella sottoscrizione che ospita le istanze del servizio Azure Spring Apps, quindi specificare la zona DNS privata centrale come parametro.
La zona DNS privata centrale e l'istanza del servizio Azure Spring Apps potrebbero essere ospitate nelle diverse sottoscrizioni. In questo caso, ricordare di assegnare il ruolo di Collaboratore della zona DNS privata nella sottoscrizione e nel gruppo di risorse che ospitano le zone DNS private per l'identità gestita creata dall'assegnazione dei criteri DeployIfNotExists
che è responsabile della creazione e della gestione del record DNS dell'endpoint privato nella zona DNS privata. Per altre informazioni, vedere la sezione Configurare l'identità gestita di Correggere le risorse non conformi con Criteri di Azure.
Quando si abilita o disabilita la funzionalità di accesso all'archiviazione privata al termine delle attività di configurazione, i record DNS per gli endpoint privati vengono registrati automaticamente e rimossi dopo l'eliminazione di un endpoint privato nella zona DNS privata corrispondente.
Costi aggiuntivi
L'istanza di Azure Spring Apps non comporta addebiti per l’utilizzo della funzionalità. Tuttavia, vengono fatturate le risorse del collegamento privato ospitate nella sottoscrizione che supportano questa funzionalità. Per altre informazioni, vedere Prezzi del collegamento privato di Azure e Prezzi di DNS di Azure.
Usare server DNS personalizzati
Se si usa un server DNS (Domain Name System) personalizzato e l'indirizzo IP DNS di Azure 168.63.129.16
non è configurato come server DNS upstream, è necessario associare manualmente tutti i record DNS delle zone DNS private, visualizzate nel gruppo di risorse ap-res_{service instance name}_{service instance region}
, per risolvere gli indirizzi IP privati.