Настройка доступа к частной сети для внутреннего хранилища в виртуальной сети
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 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. Если у вас еще нет подписки, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Azure CLI версии 2.56.0 или более поздней.
- Существующий экземпляр службы Azure Spring Apps, развернутый в виртуальной сети. Дополнительные сведения см. в статье "Развертывание Azure Spring Apps в виртуальной сети".
Включение доступа к частному хранилищу при создании нового экземпляра 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-адреса.