0Pricing
Cloud & IT Cert Prep · Урок

Аутентификация и сетевое взаимодействие App Service

Включайте встроенные поставщики аутентификации (Entra ID, Google, GitHub) для веб-приложения и ограничивайте входящий трафик с помощью интеграции с VNet и ограничений доступа.

«Аутентификация и сетевое взаимодействие App Service» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 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) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Чему я научусь в уроке «Аутентификация и сетевое взаимодействие App Service»?

Включайте встроенные поставщики аутентификации (Entra ID, Google, GitHub) для веб-приложения и ограничивайте входящий трафик с помощью интеграции с VNet и ограничений доступа. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?

Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Аутентификация и сетевое взаимодействие App Service»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?

Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Создание плана App Service и веб-приложения
  2. Слоты развертывания и переключение
  3. Автомасштабирование и пользовательские домены
  4. Аутентификация и сетевое взаимодействие App Service
← Назад к Cloud & IT Cert Prep