Поделиться через


Настройка доступа к частной сети для внутреннего хранилища в виртуальной сети

Примечание.

Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.

Эта статья относится к: ✔️ Standard ✔️ Enterprise

В этой статье объясняется, как настроить доступ частной сети к внутреннему хранилищу для приложения в виртуальной сети.

При развертывании приложения в экземпляре службы Azure Spring Apps с внедрением виртуальной сети экземпляр службы использует серверное хранилище для связанных с жильем ресурсов, включая JAR-файлы и журналы. Хотя конфигурация по умолчанию направляет трафик к этому внутреннему хранилищу через общедоступную сеть, вы можете включить функцию доступа к частному хранилищу. Эта функция позволяет направлять трафик через частную сеть, повысить безопасность и потенциально повысить производительность.

Примечание.

Эта функция применяется только к экземпляру внедренной службы в виртуальной сети Azure Spring Apps.

Прежде чем включить эту функцию для экземпляра службы Azure Spring Apps, убедитесь, что в подсети среды выполнения службы есть по крайней мере два доступных IP-адреса.

Включение или отключение этой функции изменяет разрешение DNS на внутреннее хранилище. В течение короткого периода времени могут возникнуть развертывания, которые не удается установить подключение к внутреннему хранилищу или не удается разрешить конечную точку во время обновления.

После включения этой функции серверное хранилище доступно только в частном порядке, поэтому необходимо развернуть приложение в виртуальной сети.

Необходимые компоненты

Включение доступа к частному хранилищу при создании нового экземпляра Azure Spring Apps

При создании экземпляра Azure Spring Apps в виртуальной сети используйте следующую команду, чтобы передать аргумент --enable-private-storage-access true для включения доступа к частному хранилищу. Дополнительные сведения см. в статье "Развертывание Azure Spring Apps в виртуальной сети".

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

В подписке создается еще одна группа ресурсов для размещения ресурсов приватного канала для экземпляра Azure Spring Apps. Эта группа ресурсов называется ap-res_{service instance name}_{service instance region}.

Существует два набора ресурсов приватного канала, развернутых в группе ресурсов, каждый из которых состоит из следующих ресурсов Azure:

  • Частная конечная точка, представляющая частную конечную точку внутренней учетной записи хранения.
  • Сетевой интерфейс (сетевой адаптер), который поддерживает частный IP-адрес в подсети среды выполнения службы.
  • Частная зона DNS, развернутая для виртуальной сети, с записью DNS A, также созданной для учетной записи хранения в этой зоне DNS.

Внимание

Группы ресурсов полностью управляются службой Azure Spring Apps. Не удаляйте или не изменяйте ресурсы в этих группах ресурсов вручную.

Включение или отключение доступа к частному хранилищу для существующего экземпляра Azure Spring Apps

Используйте следующую команду, чтобы обновить существующий экземпляр Azure Spring Apps, чтобы включить или отключить доступ к частному хранилищу:

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

Использование централизованного разрешения DNS

Централизованная архитектура управления DNS документируется в центральной и периферийной сетевой архитектуре в Приватный канал и интеграции DNS в масштабе. В этой архитектуре все частные зоны DNS развертываются и управляются централизованно в центральной виртуальной сети, отличной от экземпляра службы Azure Spring Apps. Если вы используете эту архитектуру, вы можете включить централизованное разрешение DNS для доступа к частному хранилищу, настроив параметры DNS соответствующим образом. Эта настройка гарантирует следующее:

  • При создании частной конечной точки соответствующие записи DNS автоматически добавляются в централизованную частную зону DNS.
  • Записи DNS управляются в соответствии со жизненным циклом частной конечной точки, то есть они автоматически удаляются при удалении частной конечной точки.

В следующих разделах объясняется, как включить централизованное разрешение DNS для больших двоичных объектов служба хранилища Azure с помощью Политика Azure, если у вас уже есть частная зона privatelink.blob.core.windows.net DNS, настроенная в центральной виртуальной сети. Те же принципы применяются к файлам служба хранилища Azure и другим службам Azure, которые поддерживают Приватный канал.

Определение политики

Помимо частной зоны DNS необходимо создать пользовательское определение Политика Azure. Дополнительные сведения см. в руководстве по созданию определения настраиваемой политики. Это определение автоматически создает необходимую запись DNS в центральной частной зоне DNS при создании частной конечной точки.

Следующая политика активируется при создании ресурса частной конечной точки с конкретной groupIdслужбой. Идентификатор groupId группы, полученной из удаленного ресурса или службы, к которому должна подключаться частная конечная точка. В этом примере groupId для больших двоичных объектов служба хранилища Azure используетсяblob. Дополнительные сведения о groupId других службах Azure см. в таблицах в значениях частной зоны DNS частной конечной точки Azure в столбце Subresource .

Затем политика активирует развертывание privateDNSZoneGroup в частной конечной точке, которая связывает частную конечную точку с частной зоной DNS, указанной в качестве параметра. В следующем примере идентификатор ресурса частной зоны DNS:/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"
      }
    }
  }
}

Назначение политики

После развертывания определения политики назначьте политику в подписке, где размещаются экземпляры службы Azure Spring Apps, и укажите центральную частную зону DNS в качестве параметра.

Центральная частная зона DNS и экземпляр службы Azure Spring Apps могут размещаться в разных подписках. В этом случае не забудьте назначить роль участника Частная зона DNS зоны в подписке и группе ресурсов, в которой частные зоны DNS размещаются в управляемом удостоверении, созданном DeployIfNotExists назначением политики, ответственной за создание и управление записью DNS частной конечной точки в частной зоне DNS. Дополнительные сведения см. в разделе "Настройка управляемого удостоверения" в разделе "Исправление несоответствующих ресурсов с помощью Политика Azure".

После завершения конфигураций при включении или отключении функции доступа к частному хранилищу записи DNS для частных конечных точек автоматически регистрируются и удаляются после удаления частной конечной точки в соответствующей частной зоне DNS.

Дополнительные расходы

Экземпляр Azure Spring Apps не взимает плату за эту функцию. Однако вы оплачиваете ресурсы приватного канала, размещенные в подписке, которые поддерживают эту функцию. Дополнительные сведения см. в разделе о ценах на Приватный канал Azure и ценах Azure DNS.

Использование пользовательских DNS-серверов

Если вы используете сервер доменных имен (DNS) и IP-адрес 168.63.129.16 Azure DNS не настроен в качестве вышестоящего DNS-сервера, необходимо вручную привязать все записи DNS частных зон DNS, отображаемые в группе ap-res_{service instance name}_{service instance region} ресурсов, чтобы разрешить частные IP-адреса.

Следующие шаги