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.
Observação: 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"'