本文へ移動
情シスの相棒
ニュース約6分で読めます

GitHub Actionsのログもシークレット検出 通知はまだ来ない

GitHub Actionsのログに出たAPIキーを、GitHubがプレビューで見つけるようになりました。通知が出ず過去のログも調べないといったコードの検出との違いと、見つかった日の手順が分かります。

公開 更新 執筆・監修:佐々木 航人が監修しながらAIを活用して執筆
文字
GitHub Actionsのログもシークレット検出 通知はまだ来ない

この記事のまとめ

  • GHECでSecret ProtectionかGHASを使う企業が、ポリシーで有効にできます。
  • プレビュー中は通知が出ず、有効にする前に終わった実行のログは調べません。
  • 見つかったら、先にキーを止めてからログを消します。アラートは残ります。
こんな方に#30代#40代#50代実務

90日。GitHub Actionsのワークフローのログが、設定を変えなければ残る日数です。その間にログへ出てしまったキーを、これまでGitHubは拾っていませんでした。

GitHubは米国時間の11月9日、シークレットスキャンの対象にActionsのワークフローのログを加えました。これまではコードのほか、Issue、Wiki、Discussions、プルリクエストが対象でした。今回は公開プレビューです。対象はGitHub Enterprise Cloud(GHEC)の企業のうち、GitHub Secret ProtectionかGitHub Advanced Security(GHAS)を使うところです。

ただし、見つけても知らせてはくれません。

Alerts from Actions workflow logs don't generate notifications during the preview, so check your repository's secret scanning alert list directly.

出典: GitHub Changelog「Secret scanning detects secrets in GitHub Actions workflow logs」

プレビューの間、ログで見つかったアラートは通知を出さず、リポジトリのアラートの一覧に並ぶだけです。だれかが一覧を開かない限り、見つかったキーは見つかっていないのと変わりません。

ログは、リポジトリを読める人なら開ける

そもそも、ログに出たキーはなぜ困るのでしょうか。GitHubのドキュメントによると、ワークフローのログは、リポジトリの読み取り権限があれば見ることもダウンロードすることもできます。公開リポジトリなら、GitHubにログインした人はだれでも開けます。

Actionsは登録したシークレットの値をログで伏せます。ただ、伏せきれない場合があるとドキュメントは注意しています。Base64やURLエンコードで形を変えた値、JSONやYAMLにまとめた値、秘密鍵から作ったJWTのような値は、そのままログに出ることがあります。

ログの保存期間は、公開リポジトリなら1日から90日、非公開のリポジトリなら1日から400日の間で変えられます。

つまり、一度ログに出たキーは、長ければ400日、読める人の目にふれ続けるかもしれません。しかもログが消えても、キーそのものは使えるままです。GitHubも、伏せられずに出たシークレットは、ログの削除とシークレットの入れ替えの両方が要るとしています。

コードの検出と比べて見える、3つの穴

では、ログの検出はコードの検出と何が違うのか。同じ項目でそろえると、プレビューの穴が見えてきます。

見る所 コードとGitの履歴 Actionsのログ(プレビュー)
有効にする前の分 全ブランチの履歴を調べる 有効にする前に終わった実行のログは調べない
通知 管理者などに設定に応じて届く。新しくコミットした分は本人にも必ず届く(履歴の調べでは届かない) 出ない
汎用パターン、カスタムパターン、AIによる検出 有効にすれば使える 検出しない
まだ使えるキーかの確認 対応する種類で使える 対応する種類で使える
使える契約 公開リポジトリは無料、非公開はTeamかGHECでSecret Protection GHECでSecret ProtectionかGHAS
既定の状態 公開リポジトリは自動、非公開は有効にして使う エンタープライズのポリシーで無効

出典: GitHub Changelog(2026年11月9日)とGitHubのドキュメント(2026年11月10日に確認)。

まず見たいのは通知の行です。コードなら、新しくコミットしたキーは、本人に必ず知らせが届きます。履歴をさかのぼった調べでは本人に届きませんが、管理者などには設定に応じて届きます。ログでは、キーを出した人も、管理者も、何も受け取りません。

次は、有効にする前に終わった実行のログ。保存期間が既定のままなら、有効にした時点で最大90日分のログが、調べられないまま残ります。保存期間を延ばした非公開のリポジトリなら、もっと長い期間です。

3つ目は汎用パターンでした。ドキュメントでは、秘密鍵や接続文字列、特定のサービスに結びつかないAPIキーが汎用パターンの例で、パスワードはAIによる検出の対象です。ログの検出はどれも拾いません。社内のデータベースのパスワードのように、特定のサービスの形を持たない値は、ログに出てもアラートにならないわけです。

3つを合わせると、今回の機能は、伏せ損ねたクラウドやSaaSのキーを、有効にした日から拾う網と言えそうです。Actionsが伏せた値を拾わないのは、もともとログに値が残らないからでしょう。

地味ですが、ログを消してもアラートは残る点は助かります。キーを替えたらすぐにログを消しても、何が出ていたかの記録は一覧に残るからです。

GitHub Changelogの記事の本文。Actionsのワークフローのログのシークレットスキャンの仕組み、GitHub Enterprise CloudでSecret ProtectionかAdvanced Securityを使う企業がエンタープライズの設定のPoliciesからAdvanced Securityを開いて有効にする手順、既定では無効なこと、有効にした後の実行だけを調べて過去のログは調べないこと、汎用パターンなどは検出しないこと、プレビュー中は通知が出ないことが英語で書かれている
GitHubのチェンジログ。プレビュー中は通知が出ないと書いている出典: 出典: GitHub Changelog(2026年11月9日)(引用)

対象になる会社と、待つことになる会社

  • GHECでSecret ProtectionかGHASを契約している企業は、エンタープライズのオーナーがポリシーで有効にできます。効くのは、シークレットスキャンを有効にしたリポジトリだけです。
  • GHE.comでデータの保存先を選んだ企業も対象です。GitHubのドキュメントでは、保存先の地域に日本も入っています。
  • GitHub TeamでSecret Protectionを使う組織、エンタープライズに入っていない組織、GitHub Enterprise Serverは、今は使えないと読めます。チェンジログが提供先を「GHECのエンタープライズ」とし、エンタープライズのポリシーの説明でも、有効にできるのはエンタープライズのオーナーだけだからです。

正式提供の時期と、ログ由来のアラートが監査ログやWebhookに流れるかどうかは、発表に書かれていません。シークレットスキャンの監査ログを外へ送っている会社は、監査ログの企業を表す欄(business)の形式が11月12日に変わる件と合わせて、受け側で確かめておくとよいでしょう。

有効にする前の段取り

  1. エンタープライズのオーナーが、Secret ProtectionかGHASの契約と、シークレットスキャンを有効にしたリポジトリの範囲を確認します。設定はエンタープライズの「Policies」の「Advanced Security」にあり、既定では無効です。
  2. アラートの一覧を見る人と、見る間隔を決めます。通知が来ない間は、たとえば週に1度、デプロイ用のワークフローがあるリポジトリから順に見ると、漏れが減るでしょう。
  3. 見つかったときの順番を決めます。まずキーを無効にして作り直し、次にその実行のログを消し、最後にアラートを閉じます。キーを先に止めるのは、GitHubがアラートを受けたら認証情報をすぐ替えるよう求めていて、ログを消してもアラートは残るからです。ログを消すには、リポジトリの書き込み権限が要ります。
  4. 有効にする前のログをどうするかを決めます。クラウドの認証情報を扱うワークフローだけでも、残っているログを見るか消すかを選びます。保存期間を短くしても、すでにあるログには効きません。
  5. 伏せ損ねを減らす設定も見直します。形を変えた値は::add-mask::で伏せる対象に加え、JSONにまとめたシークレットは1つずつに分けます。クラウドに入るためだけのキーなら、OIDCに替えて長く使うキーを持たない手もあります。

3の順番で手間取るのは、キーを止めたときに何が止まるかが分からない場面です。だれが作り、どの処理で使うキーか。漏れたAPIキー140万件の失効計画の記事にあるキーの台帳があれば、通知の来ないアラートにも、その日のうちに手を打てるはずです。

出典・参考

人が監修しながらAIを活用して執筆しています。公開したあとも、人が内容を確かめています。

執筆・監修

佐々木 航株式会社Game

代表取締役。工学部出身で、21歳で起業してからシステム会社の経営一筋で8期目。アプリの受託開発から始め、いまはAIを使ったシステムソリューションを手がけています。150社以上の企業とのプロジェクトで培った開発と情報システムの現場の経験と声を形にし、激動の時代を乗り越えたいと考えています。

記事は、人が監修しながらAIを活用して執筆しています。何を書くかと中身は人が決めて確かめ、記事の中身の責任は編集部(執筆・監修者)が負います。くわしくはAI の使い方に書いています。まちがいに気づいたら訂正・ご指摘からお知らせください。直したら更新日を改め、記事の最後に何を直したかを書きます。

役に立ったら、いいねと共有をお願いします