Аутентификация и сетевое взаимодействие App Service
Включайте встроенные поставщики аутентификации (Entra ID, Google, GitHub) для веб-приложения и ограничивайте входящий трафик с помощью интеграции с VNet и ограничений доступа.
«Аутентификация и сетевое взаимодействие App Service» — бесплатный урок Azure Fundamentals на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Azure Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Azure Fundamentals содержит 4 уроков всего.
Встроенная аутентификация в App Service
Azure App Service предоставляет встроенный модуль аутентификации и авторизации (иногда называемый EasyAuth), который обрабатывает процессы входа, проверку токенов и управление сеансами без изменений в коде приложения. Вы можете включить его непосредственно на портале Azure и выбрать одного из нескольких поставщиков удостоверений. Это идеальный вариант для быстрого добавления аутентификации в API или внутренний инструмент без самостоятельной реализации потоков OAuth.
Поддерживаемые поставщики удостоверений
Аутентификация App Service изначально поддерживает несколько поставщиков удостоверений: Microsoft Entra ID (для корпоративного входа), Google, Facebook, Twitter/X, GitHub и любого поставщика, совместимого с OpenID Connect. Зарегистрируйте приложение у выбранного поставщика, чтобы получить идентификатор клиента и секрет, а затем настройте их в App Service. Несколько поставщиков можно включить одновременно, чтобы пользователи могли выбирать способ входа.
# Enable Microsoft Entra ID authentication via CLI
az webapp auth microsoft update \
--name MyUniqueWebApp \
--resource-group MyRG \
--client-id '<Entra-App-Client-ID>' \
--client-secret '<Client-Secret>' \
--issuer 'https://sts.windows.net/<TenantId>/'
# Set action when unauthenticated (redirect or 401)
az webapp auth update \
--name MyUniqueWebApp \
--resource-group MyRG \
--unauthenticated-client-action RedirectToLoginPageХранилище токенов и доступ к утверждениям пользователя
Когда аутентификация включена, App Service сохраняет проверенные токены в хранилище токенов — постоянном хранилище для каждого пользовательского сеанса. Код приложения может получить доступ к утверждениям аутентифицированного пользователя через специальные заголовки HTTP-запросов, добавляемые модулем EasyAuth: X-MS-CLIENT-PRINCIPAL-NAME (адрес электронной почты/UPN), X-MS-CLIENT-PRINCIPAL-ID (идентификатор объекта) и X-MS-TOKEN-AAD-ACCESS-TOKEN для исходного токена доступа.
// Node.js: read user identity from EasyAuth headers
app.get('/profile', (req, res) => {
const userName = req.headers['x-ms-client-principal-name'];
const userId = req.headers['x-ms-client-principal-id'];
res.json({ name: userName, id: userId });
});
// Or decode the full claims JSON from the header
const principalHeader = req.headers['x-ms-client-principal'];
const claims = JSON.parse(Buffer.from(principalHeader, 'base64').toString());Интеграция с VNet для исходящего трафика
Интеграция с VNet позволяет приложению App Service отправлять исходящие запросы к ресурсам внутри виртуальной сети Azure, например к виртуальным машинам, базам данных SQL и внутренним API, не предоставляя эти ресурсы общедоступному интернету. Приложение получает виртуальный NIC в делегированной подсети VNet и может обращаться к любому ресурсу, доступному из VNet, включая локальные ресурсы через VPN или ExpressRoute. Интеграция с VNet доступна начиная с уровня Standard.
# Enable VNet Integration
az webapp vnet-integration add \
--name MyUniqueWebApp \
--resource-group MyRG \
--vnet MyVNet \
--subnet AppServiceSubnet
# Route ALL traffic through the VNet (including internet)
az webapp config appsettings set \
--name MyUniqueWebApp \
--resource-group MyRG \
--settings WEBSITE_VNET_ROUTE_ALL=1Частные конечные точки для входящего трафика
Если интеграция с VNet обрабатывает исходящий трафик, то частная конечная точка обрабатывает входящий: она делает App Service доступным только из VNet через частный IP-адрес. Внешний доступ из интернета к azurewebsites.net блокируется, если частная конечная точка является единственным способом доступа. Это используется для внутренних API и административных порталов, которые не должны быть доступны из общедоступного интернета.
# Create a private endpoint for the web app
az network private-endpoint create \
--name MyWebAppPE \
--resource-group MyRG \
--vnet-name MyVNet \
--subnet PrivateEndpointSubnet \
--private-connection-resource-id \
'/subscriptions/.../providers/Microsoft.Web/sites/MyUniqueWebApp' \
--group-id sites \
--connection-name MyWebAppConnectionОграничения доступа
Ограничения доступа в App Service позволяют определить список разрешённых или запрещённых IP-адресов для входящего трафика. Правила оцениваются в порядке приоритета (меньшее число означает более высокий приоритет). Можно ограничить доступ определёнными диапазонами IP-адресов (например, исходящим IP-адресом офисной VPN), тегами служб Azure (например, AzureLoadBalancer) или определёнными подсетями VNet. Используйте ограничения доступа, чтобы закрыть промежуточный слот и разрешить доступ к нему только диапазону IP-адресов Вашей команды.
# Allow only a specific IP range
az webapp config access-restriction add \
--name MyUniqueWebApp \
--resource-group MyRG \
--priority 100 \
--action Allow \
--ip-address 203.0.113.0/24 \
--rule-name 'OfficeRange'
# Allow Azure Front Door service tag
az webapp config access-restriction add \
--name MyUniqueWebApp \
--resource-group MyRG \
--priority 200 \
--action Allow \
--service-tag AzureFrontDoor.Backend \
--rule-name 'FrontDoor'Гибридные подключения
Гибридные подключения (из BizTalk) позволяют App Service обращаться к локальным ресурсам без интеграции с VNet или шлюза VPN. Установленный в локальной среде облегчённый агент ретрансляции устанавливает исходящее подключение к Azure Service Bus, а приложение подключается через ретранслятор. Гибридные подключения работают на уровне TCP и поддерживают любой порт, что удобно для подключения к устаревшим локальным базам данных или API, которые нельзя перенести в Azure.
# Add a Hybrid Connection to reach on-prem SQL
az webapp hybrid-connection add \
--name MyUniqueWebApp \
--resource-group MyRG \
--namespace myServiceBusNS \
--hybrid-connection on-prem-sql-relay
# The Hybrid Connection Manager agent must be installed
# and configured on the on-premises server to complete the relayУправляемое удостоверение для App Service
Назначьте приложению App Service управляемое удостоверение, чтобы оно могло проходить аутентификацию в других службах Azure (Key Vault, Blob Storage, SQL Database) без хранения учётных данных. Azure автоматически управляет учётными данными удостоверения. Используйте удостоверение, назначенное системой (связанное с жизненным циклом приложения) или удостоверение, назначенное пользователем (общее для нескольких приложений). Назначьте удостоверению роли RBAC в целевых ресурсах.
# Enable system-assigned managed identity
az webapp identity assign \
--name MyUniqueWebApp \
--resource-group MyRG
# Grant the identity access to Key Vault secrets
az keyvault set-policy \
--name MyKeyVault \
--object-id $(az webapp identity show \
--name MyUniqueWebApp \
--resource-group MyRG \
--query principalId -o tsv) \
--secret-permissions get listВключение CORS
Совместное использование ресурсов между источниками (CORS) определяет, какие домены могут выполнять вызовы API Вашего приложения App Service из браузера. Настройте разрешённые источники в параметрах CORS — в рабочей среде не возвращайте подстановочный знак (*) для API с аутентификацией. Встроенная поддержка CORS в App Service автоматически добавляет заголовки ответа Access-Control-Allow-Origin, поэтому для простых случаев промежуточное ПО CORS в коде приложения не требуется.
# Allow specific origin
az webapp cors add \
--name MyUniqueWebApp \
--resource-group MyRG \
--allowed-origins https://www.contoso.com
# View current CORS settings
az webapp cors show \
--name MyUniqueWebApp \
--resource-group MyRG
# Remove a CORS origin
az webapp cors remove \
--name MyUniqueWebApp \
--resource-group MyRG \
--allowed-origins https://old.contoso.comСреды App Service (ASE)
Среда App Service (ASE) — это полностью изолированное выделенное развёртывание App Service, работающее внутри собственной VNet. Она обеспечивает максимальный уровень изоляции сети, масштабируемости (до 200 экземпляров) и соответствия требованиям. ASE v3 устраняет необходимость в выделенном общедоступном IP-адресе и изначально поддерживает частные конечные точки. Недостаток — значительно более высокая стоимость: ASE предназначена для корпоративных рабочих нагрузок со строгими требованиями к изоляции.
Итоги рекомендаций по безопасности
Для безопасного развёртывания App Service: принудительно используйте только HTTPS, применяйте ограничения доступа для ограничения входящих IP-адресов, включите управляемое удостоверение, чтобы не хранить секреты в конфигурации, храните секреты в Key Vault с использованием ссылок Key Vault, применяйте минимальную версию TLS 1.2, включите Defender for App Service для обнаружения угроз и регулярно проверяйте рекомендации Azure Security Center для ресурса приложения.
# Enforce HTTPS and minimum TLS version
az webapp update \
--name MyUniqueWebApp \
--resource-group MyRG \
--https-only true
az webapp config set \
--name MyUniqueWebApp \
--resource-group MyRG \
--min-tls-version '1.2' \
--ftps-state DisabledБыстрая проверка
Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900), рассмотренных в этом уроке.
Повторение урока
В этом уроке Вы узнали, что встроенная аутентификация (EasyAuth) добавляет вход через поставщика удостоверений без изменений в коде, интеграция с VNet направляет исходящий трафик через виртуальную сеть, а частные конечные точки ограничивают входящий трафик; кроме того, управляемое удостоверение обеспечивает аутентификацию без пароля в других службах Azure. Далее мы рассмотрим Azure Container Registry.
Часто задаваемые вопросы
Урок «Аутентификация и сетевое взаимодействие App Service» бесплатный?
Да — полный текст урока «Аутентификация и сетевое взаимодействие App Service» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Azure Fundamentals, подпишись на CoddyKit PRO. Курс Azure Fundamentals содержит 4 уроков всего.
Чему я научусь в уроке «Аутентификация и сетевое взаимодействие App Service»?
Включайте встроенные поставщики аутентификации (Entra ID, Google, GitHub) для веб-приложения и ограничивайте входящий трафик с помощью интеграции с VNet и ограничений доступа. Ты практикуешь Azure Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Azure Fundamentals?
Предыдущий опыт не требуется. Azure Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Аутентификация и сетевое взаимодействие App Service»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Azure Fundamentals?
Да. Каждый урок Azure Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание плана App Service и веб-приложения
- Слоты развертывания и переключение
- Автомасштабирование и пользовательские домены
- Аутентификация и сетевое взаимодействие App Service