Identificar tokens de acesso suportados

Concluído

Aqui, você aprende sobre os diferentes tokens de acesso do GitHub, seus aplicativos, limitações e limites de taxa.

Quando você concede acesso a usuários dentro da sua empresa, a autenticação é incrivelmente importante. O acesso do usuário deve ter um escopo restrito e incluir apenas o que é necessário para que os usuários concluam suas tarefas. Entender os diferentes tokens de acesso é importante, pois você ajuda a orientar os usuários dentro da empresa a usar a melhor opção para seus 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 token usar. Mas, às vezes, vários tokens podem ser usados para alcançar o mesmo resultado, então escolher um token pode se resumir a uma decisão de bom, melhor e melhor. Nessas situações, é importante identificar as características dos tokens do GitHub e como definir corretamente o escopo de acesso de um token. Aqui está uma lista dos diferentes tokens de acesso 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
  • Atualizar tokens

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

Tokens de Acesso Pessoal

Um token de acesso pessoal (PAT) é uma alternativa ao uso de uma senha para autenticação no GitHub. Para enviar e puxar repositórios, o GitHub precisa verificar o acesso do usuário. A verificação é feita através do endereço de e-mail verificado de um utilizador. Você pode criar quantos tokens de acesso pessoal seu fluxo de trabalho exigir, e você deve tratá-los com a mesma segurança que as senhas. Usar tokens diferentes para diferentes aplicativos é a melhor prática para segurança. Para criar um token de acesso pessoal no GitHub, navegue até Configurações e, em Configurações do desenvolvedor, selecione Tokens de acesso pessoal.

Captura de tela com um exemplo de um token de acesso pessoal do GitHub.

Você pode definir o escopo de um token individual para permitir apenas o acesso necessário para autenticar o trabalho ao qual você o atribuiu. O token está vinculado a um usuário específico e se alinha com o acesso do usuário à organização e aos repositórios. Você pode revogar um token de acesso pessoal a qualquer momento, o que é especialmente importante quando ocorre um problema de segurança. É importante comunicar à sua equipa que os seus tokens de acesso pessoais devem ser tratados de forma tão segura como um nome de utilizador e uma palavra-passe. Se um token ficar comprometido, você deve tomar medidas imediatas para revogá-lo.

As etapas detalhadas para criar um token de acesso pessoal estão disponíveis aqui: Criando um token de acesso pessoal - GitHub Docs

Tokens de dispositivo

Um Device Token é basicamente uma versão de conta de máquina de um PAT, usado no contexto de um dispositivo, que dá acesso a um repositório específico em casos de uso específicos que não são vinculados ao usuário. Uma configuração de aplicativo usando um fluxo OAuth usa um token de dispositivo. Eles são normalmente usados com executores, serviços de aplicações especiais, tarefas Cron (em Linux) ou outros cenários semelhantes relacionados com tarefas automáticas. Assim como o token de acesso pessoal, o token de dispositivo é vinculado a uma conta individual e a conta para a qual você cria o token de dispositivo consome uma licença.

Tokens de instalação do 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, você primeiro precisa instalar o aplicativo GitHub ao qual o token se aplica, no repositório de destino. Os tokens de instalação são válidos por uma hora e são seguros porque são gerados para uma finalidade específica e expiram em um período de tempo relativamente curto.

Tokens de acesso OAuth

Os tokens OAuth2 são usados para autorizar usuários para aplicativos OAuth padrão executados no navegador e para aplicativos sem cabeça, como ferramentas CLI. Eles permitem que seu 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, permitindo que o aplicativo execute ações em seu nome. Por exemplo, se quiseres usar uma aplicação que solicite o escopo user:email, a aplicação terá acesso de apenas leitura aos teus endereços de e-mail privados. Esses tokens podem ser adquiridos usando o fluxo de aplicativos Web para aplicativos de produção. Como esses tokens são de curto prazo e expiram em 10 minutos, eles também são seguros.

Atualizar tokens

Um token de atualização é 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 por um novo token de usuário com uma solicitação de retorno de chamada. Sempre 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 vemos em toda a indústria, os prefixos de token são uma maneira clara de tornar os tokens identificáveis. O GitHub inclui prefixos de três letras para representar cada token. O prefixo começa com duas letras que significam a empresa, ghe é seguido pela primeira letra do tipo token. Os prefixos para os tipos de token de acesso disponíveis 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 melhorar a legibilidade. Um sublinhado não é um caractere Base64, o que ajuda a garantir que cadeias de caracteres geradas aleatoriamente, como SHAs (Secure Hash Algorithms), não possam duplicar acidentalmente esses tokens. Os prefixos também ajudam a reduzir a taxa de falsos positivos para verificação secreta, que é um recurso de segurança avançado do GitHub para melhorar ainda mais a segurança no repositório do GitHub.

Limites de taxa de token

Exceder os limites de taxa pode levar à perda de tempo de desenvolvimento. Vamos falar sobre limites de taxa para aplicativos GitHub e aplicativos OAuth. Ao entender os limites de taxa, você pode ser um recurso para os desenvolvedores de sua equipe, ajudando a otimizar o investimento da sua organização nesses recursos do GitHub.

Os limites de taxa ajudam a controlar a taxa de tráfego no GitHub e são baseados em solicitações por hora.

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

Para administradores corporativos, você deve monitorar os limites de taxa de aplicativos e trabalhar com os desenvolvedores para ajustar seus scripts para permanecer dentro dos limites. Geralmente, os limites de taxa não são uma preocupação até que seu desenvolvedor faça algo como escrever um script que solicita muitas informações em um fluxo de trabalho. De repente, o desenvolvimento é interrompido e os limites das taxas tornam-se um gargalo. Você pode evitar esses problemas de excesso 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 seu limite de taxa usando autenticação básica ou 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 em sua empresa e criar uma lista de isenção, permitindo que determinados usuários utilizem o limite de taxa de API completo.

Captura de tela do console de gerenciamento definindo os limites de taxa de API.

Você pode verificar seu status atual de limite de taxa a qualquer momento usando a seguinte API de limite de taxa. Os cabeçalhos HTTP retornados de qualquer solicitação de API mostram seu status atual de limite de taxa.

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

Resposta de exemplo

{
  "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 limites de taxa, consulte Limite de taxa no GitHub Docs.