Partilhar via


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

Nota

Os planos Basic, 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 obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.

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

Este artigo aplica-se a:✅ Standard ✅ Enterprise

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

Quando você implanta um aplicativo em uma instância de serviço do Azure Spring Apps com injeção de rede virtual, a instância de serviço depende do armazenamento de back-end para abrigar 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. Esta funcionalidade permite-lhe direcionar o tráfego através da sua rede privada, melhorando a segurança e potencialmente melhorando o desempenho.

Nota

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

Antes de habilitar esse recurso para sua instância de serviço do Azure Spring Apps, verifique se há pelo menos dois endereços IP disponíveis na sub-rede de tempo de execução 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 enfrentar implantações que não conseguem estabelecer uma conexão com o armazenamento de back-end ou não conseguem resolver seu ponto de extremidade durante a atualização.

Depois de habilitar esse recurso, o armazenamento de back-end só é acessível de forma privada, portanto, você precisa implantar seu aplicativo na rede virtual.

Pré-requisitos

  • Uma subscrição do Azure. Se você não tiver uma assinatura, crie uma conta gratuita antes de começar.
  • Azure CLI versão 2.56.0 ou superior.
  • Uma instância de serviço existente do Azure Spring Apps implantada em uma rede virtual. Para obter mais informações, consulte Implantar aplicativos Azure Spring em uma rede virtual.

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

Ao criar uma instância do Azure Spring Apps 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, consulte Implantar aplicativos Azure Spring 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 do Azure Spring Apps. Este grupo de recursos é denominado 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 interface de rede (NIC) que mantém um endereço IP privado dentro da sub-rede de tempo de execução 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 dentro dessa zona DNS.

Importante

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

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

Use o seguinte comando para atualizar uma instância existente do Azure Spring Apps 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 resolução DNS central

Uma arquitetura de gerenciamento de DNS centralizada está documentada na arquitetura de rede hub e spoke em Private Link e 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 de serviço do Azure Spring Apps. Se você estiver usando essa arquitetura, poderá habilitar a resolução DNS central para acesso ao armazenamento privado definindo as configurações de DNS adequadamente. Esta configuração garante que:

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

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

Definição de política

Além da zona DNS privada, você precisa criar uma definição personalizada da Política do Azure. 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 quando você cria um ponto de extremidade privado.

A política a seguir é acionada quando você cria um recurso de ponto de extremidade privado com um serviço específico groupId. O groupId é a ID do grupo obtido do recurso ou serviço remoto ao qual esse ponto de extremidade privado deve se conectar. Neste exemplo, o para blobs de Armazenamento do groupId Azure é blob. Para obter mais informações sobre outros serviços do groupId Azure, consulte as tabelas em Valores de zona DNS privada do Ponto de Extremidade Privado do Azure, na coluna Subrecurso.

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 parâmetro. No exemplo a seguir, o ID de recurso da 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íticas

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

A zona DNS privada central e a instância de serviço do Azure Spring Apps podem ser hospedadas nas diferentes assinaturas. Nesse caso, lembre-se de atribuir a função de Colaborador da Zona DNS Privada no grupo de assinaturas e recursos em que as zonas DNS privadas estão hospedadas à identidade gerenciada criada pela DeployIfNotExists atribuição de política 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 de Corrigir recursos não compatíveis com a Política do Azure.

Depois de concluir as configurações, quando você habilita ou desabilita o recurso de acesso ao armazenamento privado, os registros DNS para pontos de extremidade privados são automaticamente registrados - e removidos depois que um ponto de extremidade privado é excluído - na zona DNS privada correspondente.

Custos adicionais

A instância do Azure Spring Apps não incorre em cobranças por esse recurso. No entanto, você será cobrado pelos recursos de link privado hospedados em sua assinatura que oferecem suporte a esse recurso. Para obter mais informações, consulte Preços de Link Privado do Azure e Preços de DNS do Azure.

Usar servidores DNS personalizados

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

Próximos passos