Skip to main content

アクセス トークンによって実行される監査ログ イベントの識別

組織内の特定のトークンによって実行されるアクションを識別できます。

組織の監査ログのトークン データについて

組織の監査ログには、ユーザーまたは統合が実行する各アクションのイベントが含まれています。 アクションが GitHub の Web UI の外部で発生した場合、イベントのデータには、ユーザーまたは統合の認証方法に関する詳細が表示されます。

トークンが侵害されたことが判明した場合は、そのトークンに関連付けられているすべてのイベントに関する監査ログを検索することで、侵害されたトークンによって実行されたアクションを把握できます。

トークン データは、次の認証方法の監査ログに表示されます。

  • Personal access token
  • OAuth トークン
  • GitHub Apps(アプリのインストールまたはユーザーの代理としての認証)
  • デプロイ キー
  • SSH キー

: 監査ログ内の SSH キーとデプロイ キーのトークン データの表示は パブリック プレビュー 段階であり、変更される可能性があります。

監査ログ イベントのトークン データ

トークンの使用に関する次のデータが監査ログに表示され、ユーザーまたは統合がどのように認証されたかを理解するのに役立ちます。

情報説明
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 ハッシュに置き換えます。

注: ハッシュされたトークン値を引用符で囲んでください。

GitHub を使用して検索した場合、Git イベントは返されません。

REST API を使用した検索

REST API を使用してトークンを検索する前に、SHA-256 ハッシュを生成した後、ハッシュを URI エスケープする必要もあります。 ほとんどの主要なプログラミング言語で、URI エスケープのためのユーティリティが提供されます。 たとえば、encodeURIComponent() は JavaScript の文字列をエンコードします。

次に、検索語句に hashed_token:"VALUE" を含め、VALUE を URI エスケープ ハッシュに置き換えます。

REST API を使用した検索では、Git イベントは返されません。

たとえば、組織アカウントの名前が octo-org の場合、次の curl コマンドは、URI でエンコードされた SHA-256 ハッシュが EH4L8o6PfCqipALbL%2BQT62lyqUtnI7ql0SPbkaQnjv8 であるトークンに関連付けられているすべてのイベントで @octo-org の監査ログを検索します。

curl --header "Accept: application/vnd.github+json" --header "Authorization: Bearer YOUR-TOKEN" --header "X-GitHub-Api-Version:2022-11-28" 'https://api.github.com/orgs/octo-org/audit-log?phrase=hashed_token:"EH4L8o6PfCqipALbL%2BQT62lyqUtnI7ql0SPbkaQnjv8"'

Git イベントの識別

特定のトークンで認証された Git イベントを識別できます。 監査ログから Git イベント データをエクスポートすると、認証に関する詳細を含むフィールドが出力に表示されます。詳細については、「Organization の Audit log をレビューする」を参照してください。

: 監査ログ内の Git イベントのトークン データの表示は パブリック プレビュー であり、変更される可能性があります。

参考資料