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ções | Descrição | 
|---|---|
| hashed_token | Hash SHA-256 do token usado para autenticação. | 
| programmatic_access_type | Tipo de autenticação usado. | 
| token_scopes | Se 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.
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('-', '')
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"'