Compartilhar via


Configurar o acesso à rede privada para o armazenamento de back-end na sua rede virtual

Observação

Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.

O plano Consumo Standard e dedicado será preterido a partir de 30 de setembro de 2024, com desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo se aplica aos níveis: ✔️ Standard ✔️ Enterprise

Este artigo explica como configurar o acesso à rede privada ao armazenamento de back-end para seu aplicativo em sua rede virtual.

Quando você implanta um aplicativo em uma instância de serviço dos Aplicativos Spring do Azure com injeção de rede virtual, a instância de serviço depende do armazenamento de back-end para abrigar os ativos associados, incluindo arquivos JAR e logs. Embora a configuração padrão roteie o tráfego para esse armazenamento de back-end pela rede pública, você pode ativar o recurso de acesso ao armazenamento privado. Esse recurso permite que você direcione o tráfego por meio de sua rede privada, aprimorando a segurança e potencialmente melhorando o desempenho.

Observação

Esse recurso se aplica apenas a uma instância de serviço injetada na rede virtual dos Aplicativos Spring do Azure.

Antes de habilitar esse recurso para sua instância de serviço dos Aplicativos Spring do Azure, verifique se há pelo menos dois endereços IP disponíveis na sub-rede de runtime do serviço.

Habilitar ou desabilitar esse recurso altera a resolução DNS para o armazenamento de back-end. Por um curto período de tempo, você pode experimentar implantações que não conseguem estabelecer uma conexão com o armazenamento de back-end ou não conseguem resolver o ponto de extremidade durante a atualização.

Depois de habilitar esse recurso, o armazenamento de back-end só poderá ser acessado de forma privada, portanto, você precisará implantar seu aplicativo na rede virtual.

Pré-requisitos

Habilitar o acesso ao armazenamento privado ao criar uma nova instância dos Aplicativos Spring do Azure

Ao criar uma instância dos Aplicativos Spring do Azure na rede virtual, use o comando a seguir para passar o argumento --enable-private-storage-access true para habilitar o acesso ao armazenamento privado. Para obter mais informações, confira Implantar o Azure Spring Apps em uma rede virtual.

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

Mais um grupo de recursos é criado em sua assinatura para hospedar os recursos de link privado para a instância dos Aplicativos Spring do Azure. Esse grupo de recursos é chamado ap-res_{service instance name}_{service instance region}.

Há dois conjuntos de recursos de link privado implantados no grupo de recursos, cada um composto pelos seguintes recursos do Azure:

  • Um ponto de extremidade privado que representa o ponto de extremidade privado da conta de armazenamento de back-end.
  • Uma NIC (adaptador de rede) que mantém um endereço IP privado dentro da sub-rede de runtime do serviço.
  • Uma zona DNS privada implantada para sua rede virtual, com um registro DNS A também criado para a conta de armazenamento nessa zona DNS.

Importante

Os grupos de recursos são totalmente gerenciados pelo serviço do Azure Spring Apps. Não exclua ou modifique manualmente qualquer recurso dentro desses grupos de recursos.

Habilitar ou desabilitar o acesso ao armazenamento privado para uma instância existente dos Aplicativos Spring do Azure

Use o seguinte comando para atualizar uma instância existente dos Aplicativos Spring do Azure para habilitar ou desabilitar o acesso ao armazenamento privado:

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

Usar a resolução de DNS central

Uma arquitetura de gerenciamento de DNS centralizada está documentada na arquitetura de rede hub e spoke no Link Privado e na integração de DNS em escala. Nessa arquitetura, todas as zonas DNS privadas são implantadas e gerenciadas centralmente em uma rede virtual central diferente da instância do serviço do Aplicativos Spring do Azure. Caso esteja usando essa arquitetura, poderá habilitar a resolução de DNS central para acesso ao armazenamento privado definindo as configurações de DNS adequadamente. Essa configuração garante que:

  • Quando um ponto de extremidade privado é criado, os registros de DNS correspondentes são adicionados automaticamente à zona DNS privada centralizada.
  • Os registros de DNS são gerenciados de acordo com o ciclo de vida do ponto de extremidade privado, o que significa que eles são removidos automaticamente quando o ponto de extremidade privado é excluído.

As seções a seguir explicam como habilitar a resolução de DNS central para blobs de Armazenamento do Microsoft Azure usando o Azure Policy, supondo que você já tenha a zona DNS privatelink.blob.core.windows.net privada configurada na rede virtual central. Os mesmos princípios se aplicam aos arquivos do Armazenamento do Microsoft Azure e a outros serviços do Azure que dão suporte ao Link Privado.

Definição de política

Além da zona DNS privada, crie uma definição personalizada do Azure Policy. Para obter mais informações, consulte Tutorial: criar uma definição de política personalizada. Essa definição cria automaticamente o registro DNS necessário na zona DNS privada central ao criar um ponto de extremidade privado.

A política a seguir é disparada ao criar um recurso de ponto de extremidade privado com um serviço específico groupId. O groupId é a ID do grupo obtido do recurso remoto ou serviço ao qual esse ponto de extremidade privado deve se conectar. Neste exemplo, o groupId para os blobs de Armazenamento do Microsoft Azure são blob. Para obter mais informações sobre groupId para outros serviços do Azure, consulte as tabelas nos valores de zona DNS privada do Ponto de Extremidade Privado do Azure, na coluna Sub-fonte.

Em seguida, a política dispara uma implantação de um privateDNSZoneGroup dentro do ponto de extremidade privado, que associa o ponto de extremidade privado à zona DNS privada especificada como o parâmetro. No exemplo a seguir, a ID do recurso de zona DNS privada é /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"
      }
    }
  }
}

Atribuição de política

Após implantar a definição de política, atribua a política na assinatura que hospeda as instâncias de serviço dos Aplicativos Spring do Azure e especifique a zona DNS privada central como o parâmetro.

A zona DNS privada central e a instância de serviço dos Aplicativos Spring do Azure podem estar hospedadas nas diferentes assinaturas. Nesse caso, lembre-se de atribuir a função de colaborador de zona de DNS privado no grupo de recursos e assinatura em que as zonas DNS privadas são hospedadas à identidade gerenciada criada pela atribuição de política DeployIfNotExists que é responsável por criar e gerenciar o registro DNS do ponto de extremidade privado na zona DNS privada. Para obter mais informações, consulte a seção Configurar a identidade gerenciada em Corrigir recursos não compatíveis com o Azure Policy.

Após concluir as configurações, ao habilitar ou desabilitar o recurso de acesso ao armazenamento privado, os registros de DNS para pontos de extremidade privados são registrados automaticamente e removidos depois que um ponto de extremidade privado é excluído, na zona DNS privada correspondente.

Custos extras

A instância dos Aplicativos Spring do Azure não incorre em encargos para esse recurso. No entanto, você é cobrado pelos recursos de link privado hospedados em sua assinatura que dão suporte a esse recurso. Para obter mais informações, consulte Preços do Link Privado do Azure e Preços do DNS do Azure.

Usar servidores DNS personalizados

Se você estiver usando um servidor DNS (sistema de nomes de domínio) personalizado e o IP DNS do Azure 168.63.129.16 não estiver configurado como o servidor DNS upstream, você deverá associar manualmente todos os registros DNS das zonas DNS privadas mostradas no grupo de recursos ap-res_{service instance name}_{service instance region} para resolver os endereços IP privados.

Próximas etapas