Evite que usuários acessem o VSTS de fora do ambiente de trabalho

Desde que o VSO VSTS começou a ser avaliado por empresas como alternativa ao TFS (você sabia que o VSTS é bem mais legal que o TFS, né?), uma dúvida surgia com uma certa recorrência:

Mas se eu colocar o código-fonte da minha empresa na nuvem, meus desenvolvedores podem acessar o código fora do ambiente de trabalho! Eu não quero que meus devs tenham acesso ao código quando estiverem fora da minha rede!

E aí, #comofaz?

Como é de praxe nos meus posts, não vou entrar no mérito da questão (“mas por que você quer proibir o acesso dos seus devs?”). O que interessa é que esse cenário é comum e vale a pena ser discutido.

O que nós queremos é limitar o acesso dos desenvolvedores, de modo que eles possam se conectar ao VSTS apenas quando estiverem na rede corporativa. Fora de lá, o acesso precisa ser barrado.

Normalmente, a primeira solução que vem à cabeça da maioria dos caras de Infra/Rede, quando deparados com esse problema, é “vamos limitar por IP. Libera apenas o IP público da empresa para conectar no VSTS e barra o resto.” Bem, só tem um probleminha: não funciona.

O “probleminha” é que o VSTS não oferece nenhum tipo de filtro baseado em IP – portanto, não dá para fazer como no SQL Azure, em que você adiciona e/ou remove os IPs que podem acessar o serviço no Azure.

Configuração de IPs no SQL Azure - que *não* funciona no VSTS!
Legal, né? Você vai, filtra os IPs e pronto! Pena que não funciona no VSTS – simplesmente porque o VSTS não tem nada parecido!

O “truque” está em tirar proveito da integração entre o VSTS e o Azure Active Directory (Azure AD), pois este oferece o recurso que precisamos para limitar o acesso à nossa conta: o Azure AD Conditional Access.

Azure Active Directory Conditional Access

O Azure AD Conditional Access é um recurso do Azure AD Premium que permite limitar as condições em que usuários de um domínio AAD podem se autenticar. Além de poder ser usado para, por exemplo, exigir um login por MFA (multi-factor authentication), o Conditional Access pode ser usar para bloquear logins que venham de fora da rede corporativa.

Azure AD Conditional Access
Azure AD Conditional Access (clique para ampliar)

Configurando o VSTS

Para ativar o Acesso Condicional, iremos partir das seguintes premissas (que, portanto, não serão discutidas neste post):

  1. A conta do Visual Studio Team Services já está atrelada a um diretório AAD; e
  2. Seus usuários do VSTS têm licenças de Azure AD Premium associadas às suas contas.

Para impedir que seus usuários possam acessar o VSTS quando eles estiverem fora do escritório, acesse o Portal Clássico do Azure, abra a seção do Active Directory (1), selecione seu diretório (2) – Lambda3, no nosso exemplo –  e, então, vá até a aba de Aplicações (3). Por fim, clique em Visual Studio Online (4):

Abrindo as configurações do VSTS no Azure AD
Abrindo as configurações do VSTS no Azure AD (clique para ampliar)

Agora, vamos configurar o VSTS.

Primeiramente, clique na aba de Configuração (1) e habilite as regras de acesso (2). Nesse momento, você deve decidir se pretende aplicar essas regras a todos os usuários de seu diretório ou apenas a algumas pessoas (3). Vem então o mais importante: impedir o acesso quando os usuários estiverem fora da rede corporativa (4).

Configurando o Azure AD para impedir logon fora da rede corporativa
Configurando o Azure AD para impedir login fora da rede corporativa (clique para ampliar)

Como ele sabe se estou fora do escritório?

Na página de configuração do serviço de Multi-factor Authentication do Azure AD, há uma área onde você pode informar quais são os intervalos de endereços IP que representam suas redes corporativas. São esses os endereços que o Acesso Condicional usará para saber se seus usuários estão dentro ou fora do escritório. Se ele estiver tentando fazer login a partir de um endereço IP fora de algum desses intervalos, o acesso será bloqueado.

Configuração dos intervalos de endereços IP que o Azure AD considera rede corporativa
Configuração dos intervalos de endereços IP que o Azure AD considera rede corporativa (clique para ampliar)

Conclusão

Apesar de o VSTS não ter suporte nativo a filtragem de acesso por IP, o Azure AD Conditional Access pode ser usado para se obter um resultado similar. Uma coisa importante de se destacar é que o acesso por PATs e Alt Creds não está coberto pelo Acesso Condicional – ou seja, podem ser usados normalmente quando fora da rede externa.

 

Um abraço,
Igor

Autor: Igor Abade

Igor Abade V. Leite ([email protected]) é Microsoft MVP (Most Valuable Professional) de Visual Studio ALM desde 2006. Palestrante em diversos eventos da comunidade de desenvolvimento de software (TechEd Brasil, The Developers’ Conference, DevOps Summit Brasil, Agile Brazil, Visual Studio Summit, QCON e outros), é também autor de artigos em revistas e sites como o MSDN Brasil. Desde março de 2011 é um dos sócios da Lambda3, uma consultoria especializada em ALM, desenvolvimento de software e treinamentos. Visite seu blog sobre VS ALM em http://www.tshooter.com.br/ e siga-o no Twitter @igorabade.

3 pensamentos em “Evite que usuários acessem o VSTS de fora do ambiente de trabalho”

  1. Boa tarde Igor Abade, gostaria de saber se você consegue me responder uma dúvida, eu sempre vejo seus posts em seu site http://www.tshooter.com.br/, a questão que tenho é de como não deixar meus desenvolvedores acessarem meu código-fonte fora do ambiente de trabalho, sendo assim o código fonte esta no VSTS da Microsoft, você abordou este assunto em um post com o tema “Mas se eu colocar o código-fonte da minha empresa na nuvem, meus desenvolvedores podem acessar o código fora do ambiente de trabalho! Eu não quero que meus devs tenham acesso ao código quando estiverem fora da minha rede!”, e deu o exemplo de fazer pelo AZURE AD, só temos este método hoje para evitar que os desenvolvedores tenham acesso ao código fonte fora do ambiente de trabalho??

    lembrando que estou em um cenário no VSTS, preciso de uma forma de evitar o acesso ao projeto fora do ambiente de trabalho, sendo assim evitando o download do projeto.

    Atenciosamente,

    Lucas Almeida Gomes

    1. Lucas, a maneira *recomendada* pela Microsoft é usar contas Azure AD Premium para seus usuários, pois com elas você consegue tirar proveito de um recurso chamado Conditional Access. Ele serve para condicionar a autenticação dos seus usuários em função de diversos aspectos diferentes – incluindo a rede em que eles estão. Com isso, você poderia impedir que eles se logassem no seu VSTS quando estivessem fora da sua rede.

      Para saber mais, veja https://docs.microsoft.com/en-us/vsts/accounts/manage-conditional-access?view=vsts

      Você até poderia tentar outras “alternativas”, como integrar seu Azure AD a um servidor ADFS que só estivesse acessível a partir da sua rede. Mas nesses casos você estaria por sua conta e risco…

      Um abraço,
      Igor

Deixe seu comentário!