Partilhar via


Autenticação com o Azure Repos

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

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 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 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. Quer esteja a trabalhar a partir da linha de comandos, a utilizar clientes Git ou a integrar-se com pipelines de CI/CD, selecionar um método de autenticação com limites de âmbito adequados reduz os riscos de segurança enquanto mantém o acesso de que necessita.

Sempre revogue ou alterne 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 de acesso com privilégios mínimos.

Mecanismos de autenticação

Os tokens Microsoft Entra são o método de autenticação preferido para operações Git e APIs REST. Eles oferecem recursos de segurança aprimorados e podem ser usados sempre que tokens de acesso pessoais forem 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. Este método é ideal para testes ou operações únicas.

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 sejam suportados, os tokens OAuth do Microsoft Entra são recomendados para melhores práticas de segurança e autenticação modernas.

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

Quando usar PATs:

  • Você não tem chaves SSH configuradas no seu sistema
  • Você precisa limitar as permissões concedidas pela credencial
  • Os tokens Microsoft Entra OAuth não estão disponíveis no 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 utilizar um PAT com autenticação básica HTTP, Base64-encode o seu $MyPat conforme apresentado no bloco de código seguinte.

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 através de um par de chaves públicas e privadas que você cria no seu computador. Você associa a chave pública ao seu nome de usuário da Web. O Azure DevOps criptografa os dados enviados para você com essa chave quando você trabalha com o Git. Desencripta os dados no seu computador com a chave privada, que nunca é partilhada ou enviada através da rede.

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

O SSH é uma ótima opção se 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 preferido para Linux, macOS ou Windows executando o Git para Windows que não podem usar gerenciadores de credenciais Git ou tokens de acesso pessoal para autenticação HTTPS.

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

Use o Git Credential Manager para gerar tokens

Use o Git Credential Manager (GCM) para evitar inserir suas credenciais toda vez 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 Microsoft Entra (preferencialmente) ou PATs são gerados sob demanda quando você tem o gerenciador de credenciais instalado e salvo localmente para uso com a linha de comando Git ou outro cliente.

Repositórios existentes

  • Remover 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 através 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 segmento /_git/ indica que você está acessando um repositório Git e deve substituído pelo nome real do repositório. Por exemplo, se o repositório tiver o nome my-repo, o caminho será '/_git/my-repo'.

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

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

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