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


Безопасность

Туннели разработки — это служба туннелирования разработчиков, ориентированных на безопасность. В этой статье вы узнаете, как защищены туннели разработки.

Обзор

По умолчанию для размещения и подключения к туннелю требуется проверка подлинности с той же учетной записью Майкрософт, Microsoft Entra ID или GitHub, которая создала туннель. Для туннелирования требуется, чтобы исходящие подключения были сделаны к службе, размещенной в Azure. Для использования сервиса не требуются входящие подключения.

Домены

Доступ к туннелям разработки можно контролировать, разрешая или запрещая исходящий доступ к следующим доменам:

  • Аутентификация

    • github.com
    • login.microsoftonline.com
  • Туннели разработки

    • global.rel.tunnels.api.visualstudio.com
    • [clusterId].rel.tunnels.api.visualstudio.com
    • [clusterId]-data.rel.tunnels.api.visualstudio.com
    • *.[clusterId].devtunnels.ms
    • *.devtunnels.ms

Список текущих [clusterId] значений доступен по адресу https://global.rel.tunnels.api.visualstudio.com/api/v1/clusters.

Перенаправление сайта

Порты туннеля с использованием протоколов HTTP(S)/WS(S) можно получить непосредственно через предоставленный URL для веб-перенаправления (например: https://tunnelid-3000.devtunnels.ms).

  • Небезопасные клиентские подключения всегда обновляются автоматически до HTTPS/WSS.
  • Протокол HTTP Strict Transport Security (HSTS) включает директиву с максимальным сроком действия один год.
  • Минимальная версия TLS, поддерживающая службу, — 1.2, при этом TLS 1.3 является предпочтительной версией.
  • Завершение TLS осуществляется на входной точке службы с использованием сертификатов службы, выданных центром сертификации Microsoft.
    • После завершения TLS происходит перезапись заголовков. Это необходимо для многих сценариев разработки веб-приложений.

Защита от фишинга

При первом подключении к перенаправляющему URL-адресу пользователи видят межстраничную страницу защиты от фишинга. Страница пропускается при следующих обстоятельствах:

  • Запрос использует метод, отличный от GET
  • Заголовок запроса Accept не содержит text/html
  • Запрос содержит X-Tunnel-Skip-AntiPhishing-Page заголовок
  • Запрос содержит X-Tunnel-Authorization заголовок
  • Пользователь уже посетил страницу и нажмите кнопку "Продолжить"

Доступ к туннелям

По умолчанию туннели и порты туннеля являются частными и доступными только для пользователя, создавшего туннель.

Если требуется доступ к туннелю или порту туннеля без аутентификации, можно добавить запись управления доступом для разрешения анонимного доступа (--allow-anonymous ACE).

Доступ к туннелю также можно расширить до текущего клиента Microsoft Entra (use --tenant) или определенных организаций GitHub (используйте --organization); для последнего см. сведения о доступе к организации GitHub ниже.

Интерфейс командной строки также можно использовать для запроса маркеров доступа, которые предоставляют ограниченный доступ любому пользователю, владеющему маркером (используйте devtunnel token). Это расширенная функция, но может быть полезной в определенных ситуациях.

В настоящее время доступны четыре типа маркеров доступа к туннелям:

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

Все маркеры ограничены текущим туннелем; Они не предоставляют доступ к любому из других туннелей текущего пользователя, если таковые есть. Срок действия маркеров истекает через некоторое время (в настоящее время — 24 часа). Маркеры можно обновить только с помощью фактического удостоверения пользователя, имеющего доступ к туннелю с правами на управление (а не только с помощью маркера управления доступом).

Большинство команд CLI могут принимать --access-token аргумент с соответствующим маркером в качестве альтернативы авторизации.

Веб-клиенты могут передавать токен в заголовке, чтобы авторизовать запросы к URI туннеля.

X-Tunnel-Authorization: tunnel <TOKEN>

Подсказка

Это полезно для неинтерактивных клиентов, так как позволяет им получать доступ к туннелям, не требуя включения анонимного доступа. Мы используем X-Tunnel-Authorization заголовок вместо стандартного Authorization заголовка, чтобы предотвратить потенциальное вмешательство в авторизацию для конкретного приложения.

Дополнительные сведения об управлении доступом к туннелю разработчика см. в разделе "Управление доступом к туннелю" с помощью интерфейса командной строки.

Доступ к организации GitHub

Чтобы поддерживать туннели, предоставляющие доступ ко всем членам организации GitHub, установите приложение Dev Tunnels GitHub в организации. Это дает службе Dev Tunnels разрешение на проверку состояния членства пользователей в этой организации. (Для туннелей разработки не требуются разрешения репозитория для организации.) Для выполнения этой операции может потребоваться быть администратором в организации GitHub.

Дополнительные вопросы

Если после просмотра этой страницы у вас есть дополнительные вопросы, см. отзывы и поддержку.