Identificar tokens de acesso suportados

Concluído

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

Quando se trata de conceder acesso a um usuário 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, encontrará tokens de acesso pessoal.

Screenshot with an example of a GitHub personal access token.

Você pode definir o escopo de um token individual apenas para 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 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 hack 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 corredores, 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, 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, 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 e, como são gerados para uma finalidade específica e expiram em um período de tempo relativamente curto, são seguros.

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 você quiser usar um aplicativo que solicita user:email escopo, o aplicativo terá acesso somente leitura aos seus 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, começando com um significante da empresa, ghseguido da 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 melhorar a legibilidade. Um sublinhado não é um caractere Base64, o que ajuda a garantir que esses tokens não possam ser acidentalmente duplicados por cadeias de caracteres geradas aleatoriamente, como SHAs. Esses 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.

Screenshot of the management console setting the API rate limits.

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.