Skip to main content

Identificar eventos de log de auditoria executados por um token de acesso

Você pode identificar as ações desempenhadas por um token específico em sua empresa.

Sobre os dados de token no log de auditoria de uma empresa

O log de auditoria de sua empresa contém um evento para cada ação executada por um usuário ou uma integração. Se a ação ocorreu de forma externa à interface do usuário na Web do GitHub, os dados do evento mostrarão detalhes sobre como o usuário ou a integração foram autenticados.

Se você souber que um token foi comprometido, poderá entender as ações realizadas pelo token comprometido pesquisando no log de auditoria todos os eventos associados a esse token.

Os dados do token aparecem no registro de auditoria para os seguintes métodos de autenticação.

  • Personal access token
  • token OAuth
  • GitHub Apps (autenticação como uma instalação de aplicativo ou em nome de um usuário)

Dados de token em eventos de log de auditoria

Os dados a seguir sobre o uso do token aparecem no log de auditoria para ajudar você a entender como o usuário ou a integração se autenticou.

InformaçõesDescrição
hashed_tokenHash SHA-256 do token usado para autenticação.
programmatic_access_typeTipo de autenticação usado.
token_scopesSe aplicável, os escopos do token.

Como identificar eventos associados a um token

Para identificar eventos associados a um token específico, você pode usar a interface do usuário ou a API REST. Para identificar qualquer evento, primeiro você precisará saber o hash SHA-256 do token.

Gerando um valor de hash SHA-256 para um token

Se você tiver apenas um valor de token bruto, precisará gerar um hash SHA-256 para procurar o token.

No macOS e no Linux, você pode usar echo -n TOKEN | openssl dgst -sha256 -binary | base64, substituindo TOKEN pelo valor do token.

No PowerShell, você pode usar o script a seguir para retornar um hash SHA-256 de uma determinada cadeia de caracteres.

Shell
Param (
    [Parameter(Mandatory=$true)]
    [string]
    $ClearString
)

$hasher = [System.Security.Cryptography.HashAlgorithm]::Create('sha256')
$hash = $hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($ClearString))

$hashString = [System.BitConverter]::ToString($hash)
$hashString.Replace('-', '')

Pesquisando no GitHub

Ao pesquisar o log de auditoria no GitHub, inclua hashed_token:"VALUE" na consulta de pesquisa, substituindo VALUE pelo hash SHA-256 do token.

Note

Encapsule o valor do token hash entre aspas.

Como pesquisar com a API REST

Para procurar um token usando a API REST, depois de gerar um hash SHA-256, você também precisa usar um escape para o hash no URI. A maioria das principais linguagens de programação oferece um utilitário para escape de URI. Por exemplo, encodeURIComponent() codifica uma cadeia de caracteres para JavaScript.

Depois, inclua hashed_token:"VALUE" na frase de pesquisa, substituindo VALUE pelo hash com escape de URI.

Por exemplo, se o nome da conta corporativa for octo-corp, o comando curl a seguir pesquisá o log de auditoria de @octo-corp de todos os eventos associados ao token cujo hash SHA-256 codificado em URI é EH4L8o6PfCqipALbL%2BQT62lyqUtnI7ql0SPbkaQnjv8.

curl --header "Accept: application/vnd.github+json" --header "Authorization: Bearer YOUR-TOKEN" --header "X-GitHub-Api-Version:2022-11-28" 'https://api.github.com/enterprises/octo-corp/audit-log?phrase=hashed_token:"EH4L8o6PfCqipALbL%2BQT62lyqUtnI7ql0SPbkaQnjv8"'

Leitura adicional