Skip to main content

标识由访问令牌执行的审核日志事件

可以标识组织中特定令牌执行的操作。

关于组织审核日志中的令牌数据

组织的审核日志包含了用户或集成执行的每个操作的事件。 如果操作发生在 GitHub 的 Web UI 之外,该事件的数据将显示有关用户或集成身份验证方式的详细信息。

如果得知某个令牌已被盗用,可以通过在审核日志中搜索与该令牌相关联的所有事件,了解由被盗用令牌执行的操作。

对于以下身份验证方法,令牌数据会出现在审核日志中。

  • Personal access token
  • OAuth 令牌
  • GitHub Apps(作为应用安装或代表用户进行的身份验证)
  • 部署密钥
  • SSH 密钥

Note

在审核日志中显示 SSH 密钥和部署密钥的令牌数据的功能为 公共预览版,可能随时更改。

审核日志事件中的令牌数据

以下有关令牌使用的数据显示在审核日志中,旨在帮助你了解用户或集成如何进行身份验证。

Information说明
hashed_token用于身份验证的令牌的 SHA-256 哈希。
programmatic_access_type使用的身份验证的类型。
token_scopes如果适用,则表示令牌的范围。

标识与令牌关联的事件

在识别与特定令牌关联的事件时,可以使用 UI 或 REST API。 若要识别 Git 事件,需要从审核日志导出事件。若要识别任何事件,首先需要知道令牌的 SHA-256 哈希。

为令牌生成 SHA-256 哈希值

如果只有原始令牌值,则需要先生成 SHA-256 哈希值,然后才能搜索令牌。

对于 macOS 和 Linux,可使用 echo -n TOKEN | openssl dgst -sha256 -binary | base64 并将 TOKEN 替换为令牌值。

对于 Powershell,可以使用以下脚本返回给定字符串的 SHA-256 哈希值。

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('-', '')

在 GitHub

上进行搜索

在 GitHub 上搜索审核日志时,在搜索查询中添加 hashed_token:"VALUE",并将 VALUE 替换为令牌的 SHA-256 哈希值。

Note

确保将经过哈希处理的令牌值用引号括起来。

使用 GitHub 的搜索不会返回 Git 事件。

使用 REST API 进行搜索

在生成 SHA-256 哈希值后,还需要对该哈希值进行 URI 转义,然后才能使用 REST API 搜索令牌。 大多数主要的编程语言都提供了用于 URI 转义的实用工具。 例如,encodeURIComponent() 会对 JavaScript 字符串进行编码。

然后,在搜索短语中添加 hashed_token:"VALUE",并将 VALUE 替换为 URI 转义的哈希。

使用 REST API 的搜索不会返回 Git 事件。

例如,假设组织帐户的名称为 octo-org,则以下 curl 命令将在 @octo-org 的审核日志中搜索与令牌相关联的所有事件,该令牌的 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/orgs/octo-org/audit-log?phrase=hashed_token:"EH4L8o6PfCqipALbL%2BQT62lyqUtnI7ql0SPbkaQnjv8"'

表示 Git 事件

可以识别使用特定令牌进行身份验证的 Git 事件。 从审核日志导出 Git 事件数据时,包含有关身份验证的详细信息的字段将出现在输出中。 有关详细信息,请参阅“审查组织的审核日志”。

Note

在审核日志中显示 Git 事件的令牌数据的功能为 公共预览版,可能随时更改。

延伸阅读