Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Заказчики все чаще используют частные конечные точки в клиентах для надежного подключения к службам Azure PaaS (платформа как услуга). Частные конечные точки могут подключаться к службам в клиентах Microsoft Entra. Для обеспечения безопасности и соответствия требованиям может потребоваться заблокировать подключения между клиентами Microsoft Entra на частных конечных точках. В этом руководстве приведены рекомендуемые параметры конфигурации для ограничения или запрета подключений к частным конечным точкам между клиентами. Эти параметры помогают создавать элементы управления предотвращения утечки данных (DLP) в среде Azure.
Общие сведения о частных конечных точках
Используйте частные конечные точки для управления трафиком в среде Azure с помощью существующего периметра сети. Но существуют сценарии, в которых необходимо хранить подключения частной конечной точки только в корпоративном клиенте Microsoft Entra. В следующих примерах показаны подключения, которые могут создавать риски безопасности.
- Подключение A. Незаконный администратор создает частные конечные точки в виртуальной сети клиента. Эти конечные точки ссылаются на службы, размещенные вне клиентской среды, например другой клиент Microsoft Entra.
- Подключение B. Администратор изгоев создает частные конечные точки в других клиентах Microsoft Entra, которые связываются со службами, размещенными в клиенте Microsoft Entra клиента.
Рис. 1. Иллюстрация сценариев использования частной конечной точки между клиентами.
В обоих сценариях необходимо указать идентификатор ресурса службы и вручную утвердить подключение к частной конечной точке. Пользователям также требуется доступ к управлению доступом на основе ролей (RBAC) для выполнения этих действий.
Подключения C и D на рис. 1 показывают сценарии, которые клиенты обычно хотят разрешить. Подключения к частной конечной точке хранятся в корпоративном клиенте Microsoft Entra. Они не представляют угрозу безопасности, поэтому эти два сценария не рассматриваются в этой статье.
Следующие сведения позволяют предотвратить подготовку частных конечных точек в клиентах Microsoft Entra.
Запретить частные конечные точки, связанные со службами в других клиентах
Сценарий один: администратор-изгоев требует следующие права в подписке в клиенте Microsoft Entra клиента.
- Права Microsoft.Network/virtualNetworks/join/action для подсети, где для параметра privateEndpointNetworkPolicies установлено Отключено.
- Доступ Microsoft.Network/privateEndpoints/write для группы ресурсов в среде заказчика.
С этими правами администратор может создать частную конечную точку в клиенте Microsoft Entra клиента. Эта частная конечная точка ссылается на службу в отдельной подписке и клиенте Microsoft Entra. На рисунке 1 показан этот сценарий в виде подключения A.
В этом сценарии пользователь настраивает внешний клиент Microsoft Entra и подписку Azure. Затем они создают частную конечную точку в клиентской среде, вручную указывая идентификатор ресурса службы. Наконец, администратор-изгой утверждает частную конечную точку связанной службы, размещенной во внешнем клиенте Microsoft Entra, чтобы разрешить трафик через подключение.
После того, как администратор-изгой утвердит подключение к частной конечной точке, корпоративные данные можно скопировать из корпоративной виртуальной сети в службу Azure во внешнем клиенте Microsoft Entra. Эта угроза безопасности может возникать, только если доступ был предоставлен с помощью Azure RBAC.
Устранение рисков для сценария 1
Используйте следующую Политика Azure, чтобы автоматически блокировать возможность создания частной конечной точки в корпоративном клиенте Microsoft Entra, связанном с внешней службой Azure.
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Network/privateEndpoints"
},
{
"anyOf": [
{
"count": {
"field": "Microsoft.Network/privateEndpoints/manualprivateLinkServiceConnections[*]",
"where": {
"allOf": [
{
"field": "Microsoft.Network/privateEndpoints/manualprivateLinkServiceConnections[*].privateLinkServiceId",
"notEquals": ""
},
{
"value": "[split(concat(first(field('Microsoft.Network/privateEndpoints/manualprivateLinkServiceConnections[*].privateLinkServiceId')), '//'), '/')[2]]",
"notEquals": "[subscription().subscriptionId]"
}
]
}
},
"greaterOrEquals": 1
},
{
"count": {
"field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*]",
"where": {
"allOf": [
{
"field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].privateLinkServiceId",
"notEquals": ""
},
{
"value": "[split(concat(first(field('Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].privateLinkServiceId')), '//'), '/')[2]]",
"notEquals": "[subscription().subscriptionId]"
}
]
}
},
"greaterOrEquals": 1
}
]
}
]
},
"then": {
"effect": "Deny"
}
Эта политика запрещает создание любых частных конечных точек за пределами подписки связанной службы, например подключения A и D. Политика также позволяет использовать manualPrivateLinkServiceConnections
и privateLinkServiceConnections
.
Эту политику можно обновить, чтобы частные конечные точки были созданы только в определенном наборе подписок. Это изменение можно внести, добавив list
параметр и используя конструкцию "notIn": "[parameters('allowedSubscriptions')]"
. Но этот подход не рекомендуется, так как это означает, что вам придется постоянно поддерживать список подписок для этой политики. При создании новой подписки в клиенте идентификатор подписки должен быть добавлен в параметр.
Вместо этого назначьте политику группе управления верхнего уровня, а затем используйте исключения, где это необходимо.
Рекомендации по сценарию 1
Эта политика блокирует возможность создания частных конечных точек, которые находятся в подписке, отличной от самой службы. Если эти конечные точки необходимы для определенных вариантов использования, используйте исключения политики. Создайте дополнительные политики фабрики данных, чтобы убедиться, что управляемые частные конечные точки, размещенные в управляемой виртуальной сети, могут подключаться только к службам, размещенным в клиенте Microsoft Entra.
Запретить подключения из частных конечных точек, созданных в других клиентах
Сценарий два: администратор-изгоев требует доступа на запись в службу в клиентской среде, для которой должна быть создана частная конечная точка.
С этим правом администратор может создать частную конечную точку во внешнем клиенте и подписке Microsoft Entra. Эта конечная точка ссылается на службу в клиенте Microsoft Entra клиента. На рисунке 1 показан этот сценарий в качестве подключения B.
В этом сценарии администратор-изгоев должен сначала настроить внешний частный клиент Microsoft Entra и подписку Azure. Затем они создают частную конечную точку в своей среде, вручную указывая идентификатор ресурса и идентификатор группы службы в корпоративном клиенте Microsoft Entra. Наконец, они утверждают частную конечную точку в связанной службе, чтобы разрешить трафик через подключение между клиентами Microsoft Entra.
После того, как администратор или владелец службы утвердит частную конечную точку, доступ к данным осуществляется из внешней виртуальной сети.
Устранение рисков для сценария 2
Используйте политики для конкретных служб, чтобы предотвратить этот сценарий в клиенте заказчика. Подключения к частным конечным точкам — это подресурсы соответствующих служб, которые отображаются в разделе их свойств. Запретить несоответствующие подключения с помощью следующего определения политики:
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts/privateEndpointConnections"
},
{
"field": "Microsoft.Storage/storageAccounts/privateEndpointConnections/privateLinkServiceConnectionState.status",
"equals": "Approved"
},
{
"anyOf": [
{
"field": "Microsoft.Storage/storageAccounts/privateEndpointConnections/privateEndpoint.id",
"exists": false
},
{
"value": "[split(concat(field('Microsoft.Storage/storageAccounts/privateEndpointConnections/privateEndpoint.id'), '//'), '/')[2]]",
"notEquals": "[subscription().subscriptionId]"
}
]
}
]
},
"then": {
"effect": "Deny"
}
Эта политика показывает пример для службы хранилища Azure. Репликация того же определения политики для других служб, таких как Key Vault, службы ИИ Azure и SQL Server.
Чтобы повысить управляемость, объедините политики конкретной службы в инициативу. Политика запрещает утверждение подключений частной конечной точки для частных конечных точек, размещенных за пределами подписки соответствующей службы. Она не запрещает отклонение или удаление подключений к частным конечным точкам, и это то поведение, которое требуется заказчикам. Эта политика не затрагивает рабочие процессы автоматического утверждения, такие как подключение C.
Но утверждение соответствующих подключений к частной конечной точке на портале блокируется с помощью этого метода. Это связано с тем, что пользовательский интерфейс портала не отправляет идентификатор ресурса подключенной частной конечной точки в полезных данных. Рекомендуется использовать Azure Resource Manager, Azure PowerShell или Azure CLI для утверждения подключения к частной конечной точке.
Кроме того, назначьте политику группе управления верхнего уровня и используйте исключения, если это необходимо.
Рекомендации по сценарию 2
Фабрика данных Azure предлагает управляемые виртуальные сети и управляемые частные конечные точки. Из-за этих новых возможностей политика блокирует безопасное и частное использование этих служб.
Рекомендуется использовать эффект аудита вместо эффекта "Запретить" в определении политики, используемом в сценарии двух мер. Это изменение помогает отслеживать создание частных конечных точек в отдельных подписках и клиентах. Кроме того, можно использовать исключения из политик для соответствующих областей платформы данных.
Azure Data Factory
Чтобы преодолеть сценарий в управляемой виртуальной сети Фабрика данных Azure, используйте следующее определение политики:
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints"
},
{
"anyOf": [
{
"field": "Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints/privateLinkResourceId",
"exists": false
},
{
"value": "[split(field('Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints/privateLinkResourceId'), '/')[2]]",
"notEquals": "[subscription().subscriptionId]"
}
]
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
Эта политика запрещает управляемые частные конечные точки, связанные со службами, размещенными вне подписки фабрики данных. Эту политику можно изменить, чтобы разрешить подключения к службам, размещенным в наборе подписок, добавив параметр list
и использовав конструкцию "notIn": "[parameters('allowedSubscriptions')]"
. Мы рекомендуем это изменение для области платформы данных в клиенте или в средах, где широко используются службы с управляемыми виртуальными сетями и управляемыми частными конечными точками.
Рекомендуется назначить эту политику группе управления верхнего уровня и использовать исключения, если это необходимо. Для платформы данных внесите эти изменения и назначьте политику набору подписок платформы данных.
Следующие шаги
Важно изучить рекомендуемые модели подключения для входящего и исходящего подключения к общедоступному Интернету. В следующей статье рассматриваются вопросы проектирования, рекомендации по проектированию и рекомендованное содержимое для дальнейшего ознакомления.