Sicurezza

I tunnel di sviluppo sono un servizio di tunneling per sviluppatori incentrato sulla sicurezza. Questo articolo illustra come vengono protetti i tunnel di sviluppo.

Panoramica

Per impostazione predefinita, l'hosting e la connessione a un tunnel richiedono l'autenticazione con lo stesso account Microsoft, Microsoft Entra ID o GitHub che ha creato il tunnel. Il tunneling richiede l'esecuzione di connessioni in uscita al servizio ospitato in Azure. Per usare il servizio non sono necessarie connessioni in ingresso.

Domini

L'accesso ai tunnel di sviluppo può essere controllato consentendo o negando l'accesso in uscita ai domini seguenti:

  • Autenticazione

    • github.com
    • login.microsoftonline.com
  • Tunnel di sviluppo

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

L'elenco dei valori correnti [clusterId] è disponibile in https://global.rel.tunnels.api.visualstudio.com/api/v1/clusters.

Inoltro Web

Le porte di tunnel che usano i protocolli HTTP(S)/WS(S) possono essere accessibili direttamente tramite l'URL di inoltro Web fornito (ad esempio: https://tunnelid-3000.devtunnels.ms).

  • Le connessioni client non sicure vengono sempre aggiornate automaticamente a HTTPS/WSS.
  • HTTP Strict Transport Security (HSTS) è abilitato con un massimo di un anno.
  • La versione minima di TLS supportata dal servizio è 1.2, con TLS 1.3 come versione preferita.
  • La terminazione TLS viene eseguita in ingresso del servizio usando i certificati del servizio rilasciati da una CA Microsoft.
    • Dopo la terminazione TLS, viene eseguita la riscrittura dell'intestazione. Questa operazione è necessaria per molti scenari di sviluppo di applicazioni Web.

Protezione anti-phishing

Quando ci si connette a un URL di inoltro Web per la prima volta, gli utenti vengono presentati con una pagina anti-phishing intermedia. La pagina viene ignorata nelle circostanze seguenti:

  • La richiesta usa un metodo diverso da GET
  • L'intestazione della richiesta Accept non contiene text/html
  • La richiesta contiene l'intestazione X-Tunnel-Skip-AntiPhishing-Page
  • La richiesta contiene l'intestazione X-Tunnel-Authorization
  • L'utente ha già visitato la pagina e ha fatto clic su Continua

Accesso al tunnel

Per impostazione predefinita, i tunnel e le porte del tunnel sono privati e accessibili solo all'utente che ha creato il tunnel.

Se è necessario accedere a una porta tunnel o tunnel senza autenticazione, è possibile aggiungere una voce di controllo di accesso anonimo (ACE) (usare --allow-anonymous).

L'accesso al tunnel può anche essere esteso al tenant corrente di Microsoft Entra (usare --tenant) o a organizzazioni GitHub specifiche (usare --organization). Per quest'ultimo vedere Accesso all'organizzazione GitHub di seguito.

L'interfaccia della riga di comando può essere usata anche per richiedere token di accesso che concedono l'accesso limitato a chiunque abbia il token (usare devtunnel token). Si tratta di una funzionalità avanzata, ma può essere utile in situazioni specifiche.

Attualmente sono disponibili quattro tipi di token di accesso al tunnel:

  • Un "token di accesso client" consente al bearer di connettersi a qualsiasi porta del tunnel.
  • Un "token di accesso host" consente al bearer di ospitare il tunnel e accettare le connessioni, ma non apportare altre modifiche.
  • Un "manage ports access token" consente al bearer di aggiungere ed eliminare porte in un tunnel.
  • Un "token di accesso di gestione" consente al bearer di eseguire qualsiasi operazione su tale tunnel, tra cui l'impostazione dei controlli di accesso, l'hosting, la connessione e l'eliminazione del tunnel.

Tutti i token sono limitati al tunnel corrente; non concedono l'accesso ad altri tunnel dell'utente corrente, se presenti. I token scadono dopo un certo periodo di tempo (attualmente 24 ore). I token possono essere aggiornati solo usando un'identità utente effettiva con accesso con ambito di gestione al tunnel (non solo un token di accesso di gestione).

La maggior parte dei comandi dell'interfaccia della riga di comando può accettare un --access-token argomento con un token appropriato come alternativa all'accesso.

I client Web possono passare un token in un'intestazione per autorizzare le richieste a un URI del tunnel:

X-Tunnel-Authorization: tunnel <TOKEN>

Suggerimento

Ciò è utile per i client non interattivi in quanto consente loro di accedere ai tunnel senza richiedere l'abilitazione dell'accesso anonimo. Viene usata l'intestazione X-Tunnel-Authorization anziché l'intestazione standard Authorization per evitare potenziali interferenze con l'autorizzazione specifica dell'applicazione.

Vedere la sezione Gestire l'accesso al tunnel di sviluppo per altre informazioni su come gestire l'accesso al tunnel tramite l'interfaccia della riga di comando.

Accesso all'organizzazione GitHub

Per supportare i tunnel che concedono l'accesso a tutti i membri di un'organizzazione GitHub, installare l'app GitHub Dev Tunnels nell'organizzazione. In questo modo il servizio Dev Tunnels è autorizzato a controllare lo stato di appartenenza degli utenti nell'organizzazione. Dev Tunnels non richiede autorizzazioni di repository per l'organizzazione. Potrebbe essere necessario essere un amministratore dell'organizzazione GitHub per eseguire questa operazione.

Altre domande

Se dopo aver esaminato questa pagina, sono disponibili altre domande, vedere Commenti e supporto tecnico.