关于企业审核日志中的令牌数据
企业的审核日志包含了用户或集成执行的每个操作的事件。 如果操作发生在 GitHub 的 Web UI 之外,该事件的数据将显示有关用户或集成身份验证方式的详细信息。
如果得知某个令牌已被盗用,可以通过在审核日志中搜索与该令牌相关联的所有事件,了解由被盗用令牌执行的操作。
对于以下身份验证方法,令牌数据会出现在审核日志中。
- Personal access token
- OAuth 令牌
- GitHub Apps(作为应用安装或代表用户进行的身份验证)
审核日志事件中的令牌数据
以下有关令牌使用的数据显示在审核日志中,旨在帮助你了解用户或集成如何进行身份验证。
Information | 说明 |
---|---|
hashed_token | 用于身份验证的令牌的 SHA-256 哈希。 |
programmatic_access_type | 使用的身份验证的类型。 |
token_scopes | 如果适用,则表示令牌的范围。 |
标识与令牌关联的事件
在识别与特定令牌关联的事件时,可以使用 UI 或 REST API。 若要识别任何事件,首先需要知道令牌的 SHA-256 哈希。
为令牌生成 SHA-256 哈希值
如果只有原始令牌值,则需要先生成 SHA-256 哈希值,然后才能搜索令牌。
对于 macOS 和 Linux,可使用 echo -n TOKEN | openssl dgst -sha256 -binary | base64
并将 TOKEN 替换为令牌值。
对于 Powershell,可以使用以下脚本返回给定字符串的 SHA-256 哈希值。
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('-', '')
在 GitHub
上进行搜索
在 GitHub 上搜索审核日志时,在搜索查询中添加 hashed_token:"VALUE"
,并将 VALUE
替换为令牌的 SHA-256 哈希值。
Note
确保将经过哈希处理的令牌值用引号括起来。
使用 REST API 进行搜索
在生成 SHA-256 哈希值后,还需要对该哈希值进行 URI 转义,然后才能使用 REST API 搜索令牌。 大多数主要的编程语言都提供了用于 URI 转义的实用工具。 例如,encodeURIComponent() 会对 JavaScript 字符串进行编码。
然后,在搜索短语中添加 hashed_token:"VALUE"
,并将 VALUE 替换为 URI 转义的哈希。
例如,如果企业帐户的名称为 octo-corp
,则以下 curl 命令将在 @octo-corp 的审核日志中搜索与令牌相关联的所有事件,该令牌的 URI 编码的 SHA-256 哈希值为 EH4L8o6PfCqipALbL%2BQT62lyqUtnI7ql0SPbkaQnjv8
。
curl --header "Accept: application/vnd.github+json" --header "Authorization: Bearer YOUR-TOKEN" --标头 "X-GitHub-Api-Version:2022-11-28" 'https://api.github.com/enterprises/octo-corp/audit-log?phrase=hashed_token:"EH4L8o6PfCqipALbL%2BQT62lyqUtnI7ql0SPbkaQnjv8"'