Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-07-09. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

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

可以在企业中标识由特定令牌执行的操作。

关于企业审核日志中的令牌数据

企业的审核日志包含了用户或集成执行的每个操作的事件。 如果操作发生在 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 哈希值。

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 哈希值。

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

使用 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"'

延伸阅读