Compartilhar via


Autenticação com o Azure Repos

Azure DevOps Services | Servidor Azure DevOps | Azure DevOps Server 2022 | Azure DevOps Server 2020

A autenticação segura é fundamental para proteger seus repositórios Git do Azure Repos e do Azure DevOps Server. Com várias opções de autenticação disponíveis — tokens do Microsoft Entra OAuth, Tokens de Acesso Pessoal e chaves SSH — escolher o método certo garante segurança e produtividade para seu fluxo de trabalho de desenvolvimento.

Os tokens do Microsoft Entra OAuth são a abordagem recomendada para equipes de desenvolvimento modernas, oferecendo segurança aprimorada por meio de padrões OAuth 2.0 e integração perfeita com sistemas de identidade corporativa. Se você estiver trabalhando na linha de comando, usando clientes Git ou integrando com pipelines de CI/CD, selecionar um método de autenticação com limites de escopo apropriados reduz os riscos de segurança, mantendo o acesso necessário.

Sempre revogue ou rotacione as credenciais quando elas não forem mais necessárias. Essa prática mantém a segurança do repositório e segue o princípio do acesso de privilégios mínimos.

Mecanismos de autenticação

Os tokens do Microsoft Entra são o método de autenticação preferencial para operações git e APIs REST. Eles oferecem recursos de segurança aprimorados e podem ser usados onde quer que os tokens de acesso pessoal sejam usados. Esses tokens são gerados para uma entidade de usuário ou uma identidade gerenciada e/ou entidade de serviço.

Início rápido com a CLI do Azure: você pode obter um token do Microsoft Entra para uso imediato com operações do Git usando a CLI do Azure. Esse método é ideal para testes ou operações pontuais.

Para autenticação do usuário:

 az login
 az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv

Para autenticação da entidade de serviço: Primeiro entre como a entidade de serviço e, em seguida, obtenha o token:

az login --service-principal -u <client-id> -p <client-secret> --tenant <tenant-id>
az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv

Exemplo de uso com o Git:

$accessToken = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv
git -c http.extraheader="AUTHORIZATION: bearer $accessToken" clone https://dev.azure.com/{yourOrgName}/{yourProjectName}/_git/{yourRepoName}

Tokens de acesso pessoal (opção alternativa)

Observação

Embora os Tokens de Acesso Pessoal ainda tenham suporte, os tokens do Microsoft Entra OAuth são recomendados para melhores práticas de segurança e autenticação modernas.

Os PATs (tokens de acesso pessoal) fornecem acesso ao Azure DevOps sem usar seu nome de usuário e senha diretamente. Esses tokens expiram e permitem que você restrinja o escopo dos dados que eles podem acessar.

Use PATs quando:

  • Você não tem chaves SSH configuradas em seu sistema
  • Você precisa limitar as permissões concedidas pela credencial
  • Os tokens do Microsoft Entra OAuth não estão disponíveis em seu cenário

As interações do Git exigem um nome de usuário, que pode ser qualquer coisa, exceto uma cadeia de caracteres vazia. Para usar um PAT com autenticação básica HTTP, Base64-encode seu $MyPat conforme mostrado no bloco de código a seguir.

No PowerShell, insira o código a seguir.

$MyPat = 'yourPat'
$headerValue = "Authorization: Basic " + [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $MyPat))
$env:GIT_AUTH_HEADER = $headerValue

git --config-env=http.extraheader=GIT_AUTH_HEADER clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName

Chaves SSH

A autenticação de chave com SSH funciona por meio de um par de chaves pública e privada que você cria em seu computador. Associe a chave pública ao nome de usuário da Web. O Azure DevOps criptografa os dados enviados a você com essa chave quando você trabalha com o Git. Você descriptografa os dados no computador com a chave privada, que nunca é compartilhada ou enviada pela rede.

GIF animado que mostra a adição de uma chave pública SSH ao Azure DevOps

O SSH será uma ótima opção se ele já estiver configurado em seu sistema, basta adicionar uma chave pública ao Azure DevOps e clonar seus repositórios usando SSH. O SSH pode ser preferencial para Linux, macOS ou Windows executando o Git para Windows que não podem usar gerentes de credenciais git ou tokens de acesso pessoal para autenticação HTTPS.

Para obter mais informações, consulte Configurar o SSH com o Azure DevOps.

Usar o Gerenciador de Credenciais do Git para gerar tokens

Use o GCM (Git Credential Manager) para evitar inserir suas credenciais todas as vezes e manter seu token mais seguro ao acessar o Azure Repos. Entre no portal da Web, gere um token e use o token como sua senha quando estiver se conectando ao Azure Repos. Os tokens do Microsoft Entra (preferidos) ou PATs são gerados sob demanda quando você tem o gerenciador de credenciais instalado e armazenado localmente para uso com a linha de comando Git ou outro cliente.

Repositórios existentes

  • Remover a origem existente: Se você adicionou anteriormente a origem usando um nome de usuário, remova-a executando o seguinte comando:

    git remote remove origin

  • Autenticar com um PAT: Se você encontrar problemas com a autenticação padrão, execute o seguinte comando para autenticar por meio da linha de comando:

    git remote add origin https://dev.azure.com/<PAT>@<company_machineName>:/<project-name>/_git/<repo_name>

    git push -u origin --all

    O path to git repo = /_git/do refere-se à estrutura de caminho de URL usada no Azure DevOps para repositórios Git. O /_git/ segmento indica que você está acessando um repositório Git e deve substituir do pelo nome real do repositório. Por exemplo, se o repositório for nomeado my-repo, o caminho será '/_git/my-repo'.

  • Repositório de clonagem: Se você estiver usando o Git e precisar se autenticar, execute o seguinte comando:

    git clone https://{organization}@dev.azure.com/{organization}/_git/{repository}

    Substitua {organization} pelo nome da sua organização do Azure DevOps e {repository} pelo nome do repositório.