Identificar tokens de acesso com suporte

Concluído

Aqui, você aprenderá quais são os diferentes tipos de tokens de acesso do GitHub, as aplicações, as limitações e os limites de taxa.

Quando se trata de permitir acesso a um usuário na empresa, a autenticação é um fator de grande importância. O acesso do usuário deve ter um escopo rígido e incluir apenas o que é necessário para que ele conclua as tarefas. É importante compreender os diferentes tokens de acesso porque assim você ajuda a orientar os usuários na empresa a usar a melhor opção para os respectivos casos de uso.

O GitHub usa vários tokens que permitem que os usuários se autentiquem nas diferentes atividades que precisam executar. Normalmente, esses diferentes tokens são simples, e é fácil saber qual deles usar. No entanto, às vezes, vários tokens podem ser usados para atingir o mesmo resultado, e a escolha de um token pode se resumir a escolher entre um token bom, melhor ou ideal. Nessas situações, é importante identificar as características dos tokens do GitHub e como definir o escopo de acesso correto para um token. Veja uma lista dos diferentes tokens de acesso que estão disponíveis:

  • Tokens de acesso pessoal do GitHub
  • Tokens de usuário para servidor do GitHub
  • Tokens de servidor para servidor do GitHub
  • Tokens de acesso OAuth
  • Tokens de atualização

É importante incentivar a equipe de desenvolvimento a usar tokens com o escopo certo para que, quando uma vulnerabilidade de segurança for descoberta, o risco possa ser reduzido rapidamente. Vamos examinar em mais detalhes cada um desses tokens de acesso.

Tokens de acesso pessoal

Um PAT (token de acesso pessoal) é uma alternativa ao uso de uma senha para autenticação no GitHub. Para efetuar pull e push de repositórios, o GitHub precisa verificar o acesso do usuário. A verificação é feita por meio do endereço de email verificado de um usuário. Você poderá criar quantos tokens de acesso pessoais forem necessários para o fluxo de trabalho e deverá tratá-los com segurança, como senhas. O uso de tokens diferentes para aplicativos diferentes é a melhor prática para a segurança. Para criar um token de acesso pessoal no GitHub, navegue até Configurações e, em Configurações do desenvolvedor, você encontrará Tokens de acesso pessoal.

Screenshot with an example of a GitHub personal access token.

Você pode definir o escopo de um token individual somente com o acesso necessário para autenticar o trabalho para o qual ele será atribuído. O token está vinculado a um usuário específico e é alinhado ao acesso do usuário à organização e aos repositórios. Você pode revogar um token de acesso pessoal a qualquer momento, o que é importante principalmente em caso de ataque de segurança. É importante informar à equipe que os tokens de acesso pessoal devem ser tratados com a mesma segurança de nomes de usuário e senhas. Se um token for comprometido, você deverá realizar ação imediata para revogar o token.

As etapas detalhadas para a criação de um token de acesso pessoal estão disponíveis aqui: Como criar um token de acesso pessoal – GitHub Docs

Tokens de dispositivo

Um token de dispositivo é basicamente uma versão de conta de computador de um PAT, usada no contexto de um dispositivo, o que permite acesso a um repositório específico em casos de uso específicos que não estejam associados ao usuário. Uma configuração de aplicativo que usa um fluxo OAuth usa um token de dispositivo. Normalmente, eles são usados com executores, serviços de aplicativos especiais, trabalhos Cron (no Linux) ou outros cenários semelhantes relacionados a tarefas automatizadas. Assim como o token de acesso pessoal, ele está vinculado a uma conta individual. A conta para a qual o token de dispositivo é criado consome uma licença.

Tokens de instalação de aplicativo GitHub

Um token de instalação permite que um aplicativo GitHub faça solicitações de API autenticadas para a instalação do aplicativo em uma organização. Antes de criar um token de instalação, o aplicativo GitHub ao qual o token será aplicado precisa ser instalado no repositório de destino. Os tokens de instalação são válidos por uma hora. Eles são seguros porque são gerados para uma finalidade específica e vencem em um período relativamente curto.

Tokens de acesso OAuth

Os tokens OAuth2 são usados para autorizar usuários em aplicativos OAuth padrão executados no navegador e para aplicativos sem periféricos, como ferramentas da CLI. Eles permitem que o aplicativo acesse a API com um token de acesso de usuário. Esses tokens permitem que você conecte sua identidade de usuário do GitHub a aplicativos de terceiros, para que o aplicativo execute ações em seu nome. Por exemplo, se você quiser usar um aplicativo que solicite o escopo de user:email, o aplicativo terá acesso somente leitura aos seus endereços de email privados. Eles podem ser adquiridos usando o fluxo de aplicativo Web para aplicativos de produção. Como esses tokens são de curto prazo e expiram em dez minutos, eles também são seguros.

Tokens de atualização

Um token de atualização está conectado a um token OAuth. Quando um novo token OAuth (por meio de uma solicitação de usuário para servidor) é concedido, um token de atualização é incluído na resposta. Quando o token de usuário está expirando, o token de atualização pode ser trocado para um novo token de usuário com uma solicitação de retorno de chamada. Toda vez que um novo token OAuth é emitido, um token de atualização é incluído. Os tokens de atualização são válidos por seis meses e são um bom lembrete para atualizar seus tokens OAuth.

Prefixos identificáveis

Como observamos no setor, os prefixos de token são uma forma clara de tornar os tokens identificáveis. O GitHub inclui três prefixos de letra para representar cada token, começando com um indicador da empresa, gh, seguido pela primeira letra do tipo de token. Os resultados para os tipos de token acima são:

  • ghp para tokens de acesso pessoal do GitHub
  • ghu para tokens de usuário para servidor do GitHub
  • ghs para tokens de servidor para servidor do GitHub
  • gho para tokens de acesso OAuth
  • ghr para tokens de atualização

Além disso, esses prefixos têm um separador (_) dentro do token para aprimorar a capacidade de leitura. Um sublinhado não é um caractere Base64, o que ajuda a garantir que esses tokens não possam ser duplicados acidentalmente por cadeias de caracteres geradas aleatoriamente, como SHAs. Esses prefixos também ajudam a reduzir a taxa de falsos positivos na verificação de segredo, que é um recurso de segurança avançada do GitHub para aumentar ainda mais a segurança do repositório do GitHub.

Limites de taxa de token

Quando os limites de taxa são excedidos, pode haver perda de tempo de desenvolvimento. Vamos falar sobre os limites de taxa para aplicativos GitHub e OAuth. Ao compreender os limites de taxa, você pode ser uma referência para os desenvolvedores da equipe, ajudando a otimizar o investimento da organização nesses recursos do GitHub.

Os limites de taxa ajudam a controlar a taxa de tráfego no GitHub e se baseiam em solicitações por hora.

  • Um aplicativo GitHub instalado em uma conta do GitHub Enterprise tem um limite de taxa de solicitação de 15 mil solicitações por hora.
  • Um aplicativo OAuth é autenticado para um usuário individual e é limitado a 5 mil solicitações por hora.

Os administradores corporativos devem monitorar os limites de taxa do aplicativo e trabalhar com os desenvolvedores para ajustar os scripts respeitando os limites. Normalmente, não se presta muita atenção aos limites de taxa até que um desenvolvedor faça algo como escrever um script que solicite muitas informações em um fluxo de trabalho. De repente, o desenvolvimento fica paralisado e os limites de taxa se tornam um gargalo. Evite esses problemas de excedente de limite de taxa limitando o número de solicitações por hora ou alterando um fluxo de trabalho para aguardar entre as solicitações. Se você exceder o limite de taxa usando a autenticação básica ou o OAuth, provavelmente poderá corrigir o problema armazenando em cache as respostas da API e usando solicitações condicionais.

No console de gerenciamento, você pode configurar um limite de taxa personalizado para usuários não autenticados na empresa e criar uma lista de isenção, permitindo que determinados usuários utilizem o limite de taxa total da API.

Screenshot of the management console setting the API rate limits.

Verifique o status do limite de taxa atual a qualquer momento usando a API de Limite de Taxa a seguir. Os cabeçalhos HTTP retornados de qualquer solicitação da API mostram o status do limite de taxa atual.

curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/rate_limit

Exemplo de resposta

{
  "resources": {
    "core": {
      "limit": 5000,
      "remaining": 4999,
      "reset": 1372700873,
      "used": 1
    },
    "search": {
      "limit": 30,
      "remaining": 18,
      "reset": 1372697452,
      "used": 12
    },
    "graphql": {
      "limit": 5000,
      "remaining": 4993,
      "reset": 1372700389,
      "used": 7
    },
    "integration_manifest": {
      "limit": 5000,
      "remaining": 4999,
      "reset": 1551806725,
      "used": 1
    },
    "code_scanning_upload": {
      "limit": 500,
      "remaining": 499,
      "reset": 1551806725,
      "used": 1
    }
  },
  "rate": {
    "limit": 5000,
    "remaining": 4999,
    "reset": 1372700873,
    "used": 1
  }
}

Para obter informações mais detalhadas sobre os limites de taxa, veja Limitação de taxa no GitHub Docs.