Compartilhar via


Segurança

Dev tunnels é um serviço de encapsulamento de desenvolvedor focado em segurança. Neste artigo, saiba como os túneis de desenvolvimento são protegidos.

Visão geral

Por padrão, hospedar e se conectar a um túnel requer autenticação com a mesma conta da Microsoft, Microsoft Entra ID ou GitHub que criou o túnel. O encapsulamento requer conexões de saída para o serviço hospedado no Azure. Nenhuma conexão de entrada é necessária para usar o serviço.

Domínios

O acesso aos túneis de desenvolvimento pode ser controlado permitindo ou negando o acesso de saída aos seguintes domínios:

  • Autenticação

    • github.com
    • login.microsoftonline.com
  • Túneis de desenvolvimento

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

A lista de valores atuais [clusterId] está disponível em https://global.rel.tunnels.api.visualstudio.com/api/v1/clusters.

Encaminhamento da Web

As portas de túnel que usam os protocolos HTTP(S)/WS(S) podem ser acessadas diretamente através da URL de encaminhamento da Web fornecida (por exemplo: https://tunnelid-3000.devtunnels.ms).

  • Conexões de cliente inseguras são sempre atualizadas automaticamente para HTTPS/WSS.
  • HTTP Strict Transport Security (HSTS) é habilitado com uma idade máxima de um ano.
  • A versão mínima do TLS que o serviço suporta é 1.2, com o TLS 1.3 sendo a versão preferida.
  • O encerramento do TLS é feito na entrada do serviço usando certificados de serviço, emitidos por uma autoridade de certificação da Microsoft.
    • Após o término do TLS, ocorre a regravação do cabeçalho. Isso é necessário para muitos cenários de desenvolvimento de aplicativos Web.

Proteção anti-phishing

Ao se conectar a uma URL de encaminhamento da Web pela primeira vez, os usuários recebem uma página antiphishing intersticial. A página é ignorada nas seguintes circunstâncias:

  • A solicitação usa um método diferente de GET
  • O cabeçalho da solicitação Accept não contém text/html
  • A solicitação contém o X-Tunnel-Skip-AntiPhishing-Page cabeçalho
  • A solicitação contém o X-Tunnel-Authorization cabeçalho
  • O usuário já visitou a página e clicou em continuar

Acesso ao túnel

Por padrão, os túneis e as portas de túnel são privados e acessíveis apenas ao usuário que criou o túnel.

Se uma porta de túnel ou túnel precisar ser acessada sem autenticação, uma entrada de controle de acesso (ACE) permitida e anônima poderá ser adicionada (use --allow-anonymous).

O acesso ao túnel também pode ser estendido ao seu locatário atual do Microsoft Entra (use --tenant) ou a organizações específicas do GitHub (use --organization), para este último consulte Acesso à organização do GitHub abaixo.

A CLI também pode ser usada para solicitar tokens de acesso que concedem acesso limitado a qualquer pessoa que possua o token (use devtunnel token). Este é um recurso avançado, mas pode ser útil em situações específicas.

Atualmente, quatro tipos de tokens de acesso ao túnel estão disponíveis:

  • Um "token de acesso de cliente" permite que o portador se conecte a qualquer porta do túnel.
  • Um "token de acesso ao host" permite que o portador hospede o túnel e aceite conexões, mas não faça outras alterações nele.
  • Um "token de acesso a portas de gerenciamento" permite que o portador adicione e exclua portas em um túnel.
  • Um "token de acesso de gerenciamento" permite que o portador execute quaisquer operações nesse túnel, incluindo a configuração de controles de acesso, hospedagem, conexão e exclusão do túnel.

Todos os tokens estão limitados ao túnel atual; eles não concedem acesso a nenhum dos outros túneis do usuário atual, se houver. Os tokens expiram após algum tempo (atualmente 24 horas). Os tokens só podem ser atualizados usando uma identidade de usuário real que tenha acesso de escopo de gerenciamento ao túnel (não apenas um token de acesso de gerenciamento).

A maioria dos comandos da CLI pode aceitar um --access-token argumento com um token apropriado como uma alternativa ao login.

Os clientes da Web podem passar um token em um cabeçalho para autorizar solicitações para um URI de túnel:

X-Tunnel-Authorization: tunnel <TOKEN>

Dica

Isso é útil para clientes não interativos, pois permite que eles acessem túneis sem exigir que o acesso anônimo seja habilitado. Usamos o X-Tunnel-Authorization cabeçalho em vez do cabeçalho padrão Authorization para evitar possíveis interferências na autorização específica do aplicativo.

Consulte a seção Gerenciar acesso ao túnel de desenvolvimento para saber mais sobre como gerenciar o acesso ao túnel por meio da CLI.

Acesso à organização do GitHub

Para oferecer suporte a túneis que concedem acesso a todos os membros de uma organização do GitHub, instale o aplicativo GitHub de Túneis de Desenvolvimento na organização. Isso dá ao serviço Túneis de Desenvolvimento permissão para verificar o status de associação dos usuários nessa organização. (Os túneis de desenvolvimento não exigem permissões de repositório para a organização.) Talvez seja necessário ser um administrador na organização do GitHub para executar essa operação.

Outras perguntas

Se, depois de revisar esta página, você tiver mais perguntas, consulte Comentários e suporte.