Share via


보안

개발 터널은 보안에 초점을 맞춘 개발자 터널링 서비스입니다. 이 문서에서는 개발 터널 보안되는 방법에 대해 알아봅니다.

개요

기본적으로 터널을 호스팅하고 연결하려면 터널을 만든 동일한 Microsoft, 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로 자동으로 업그레이드됩니다.
  • HSTS(HTTP Strict Transport Security)는 1년 최대 사용 기간으로 사용하도록 설정됩니다.
  • 서비스에서 지원하는 최소 TLS 버전은 1.2이고 TLS 1.3은 기본 버전입니다.
  • TLS 종료는 Microsoft CA에서 발급한 서비스 인증서를 사용하여 서비스 수신 시 수행됩니다.
    • TLS 종료 후 헤더 다시 쓰기가 발생합니다. 이는 많은 웹 애플리케이션 개발 시나리오에 필요합니다.

피싱 방지

처음으로 웹 전달 URL에 연결할 때 사용자에게 중간 피싱 방지 페이지가 표시됩니다. 페이지는 다음과 같은 상황에서 건너뜁니다.

  • 요청은 이외의 메서드를 사용합니다. GET
  • 요청 Accept 헤더에 포함되지 않음 text/html
  • 요청에 헤더가 X-Tunnel-Skip-AntiPhishing-Page 포함됩니다.
  • 요청에 헤더가 X-Tunnel-Authorization 포함됩니다.
  • 사용자가 이미 페이지를 방문하여 계속을 클릭했습니다.

터널 액세스

기본적으로 터널 및 터널 포트는 프라이빗이며 터널을 만든 사용자만 액세스할 수 있습니다.

인증 없이 터널 또는 터널 포트에 액세스해야 하는 경우 ACE(허용 익명 액세스 제어 항목)를 추가할 수 있습니다(사용 --allow-anonymous).

터널 액세스는 현재 Microsoft Entra 테넌트(사용--tenant) 또는 특정 GitHub 조직(사용--organization)으로 확장될 수도 있습니다. 후자의 경우 아래 GitHub 조직 액세스를 참조하세요.

CLI를 사용하여 토큰을 보유하는 모든 사용자에게 제한된 액세스 권한을 부여하는 액세스 토큰을 요청할 수도 있습니다(사용 devtunnel token). 고급 기능이지만 특정 상황에서 유용할 수 있습니다.

현재 4가지 유형의 터널 액세스 토큰을 사용할 수 있습니다.

  • "클라이언트 액세스 토큰"을 사용하면 전달자가 터널의 모든 포트에 연결할 수 있습니다.
  • "호스트 액세스 토큰"을 사용하면 전달자가 터널을 호스트하고 연결을 수락할 수 있지만 다른 변경 내용은 수행할 수 없습니다.
  • "포트 액세스 토큰 관리"를 사용하면 전달자가 터널에서 포트를 추가하고 삭제할 수 있습니다.
  • "관리 액세스 토큰"을 사용하면 전달자가 액세스 제어 설정, 호스팅, 연결 및 터널 삭제를 포함하여 해당 터널에서 모든 작업을 수행할 수 있습니다.

모든 토큰은 현재 터널로 제한됩니다. 현재 사용자의 다른 터널(있는 경우)에 대한 액세스 권한을 부여하지 않습니다. 토큰은 일정 시간(현재 24시간) 후에 만료됩니다. 토큰은 관리 액세스 토큰뿐만 아니라 터널에 대한 관리 범위 액세스 권한이 있는 실제 사용자 ID를 사용하여서만 새로 고칠 수 있습니다.

대부분의 CLI 명령은 로그인 대신 적절한 토큰이 있는 인수를 수락 --access-token 할 수 있습니다.

웹 클라이언트는 헤더에 토큰을 전달하여 터널 URI에 대한 요청을 승인할 수 있습니다.

X-Tunnel-Authorization: tunnel <TOKEN>

익명 액세스를 사용하도록 설정하지 않고도 터널에 액세스할 수 있으므로 비대화형 클라이언트에 유용합니다. 표준 Authorization 헤더 대신 헤더를 사용하여 X-Tunnel-Authorization 애플리케이션별 권한 부여를 방해할 수 있습니다.

CLI를 통해 터널 액세스를 관리하는 방법에 대한 자세한 내용은 개발 터널 액세스 관리 섹션을 참조하세요.

GitHub 조직 액세스

GitHub 조직의 모든 구성원에게 액세스 권한을 부여하는 터널을 지원하려면 조직에 Dev Tunnels GitHub 앱을 설치합니다. 이를 통해 Dev Tunnels 서비스에서 해당 조직의 사용자 멤버 자격 상태 검사 수 있는 권한을 부여합니다. (개발자 터널에는 조직에 대한 리포지토리 권한이 필요하지 않습니다.) 이 작업을 수행하려면 GitHub 조직의 관리자여야 할 수 있습니다.

추가 문의 사항

이 페이지를 검토한 후 추가 질문이 있는 경우 피드백 및 지원을 참조하세요.