GitHub Actionsのシークレット管理とCI/CDセキュリティ:ワークフロー漏洩リスクの実態と対策ガイド

当ページのリンクには広告が含まれています。
🔐
セキュリティスキルを評価してくれる環境で働きたいなら

お疲れ様です!IT業界で働くアライグマです!

「GitHub Actionsのシークレットって、どこまで安全なんだろう?」「悪意あるPRからシークレットが漏洩するって本当?」

CI/CD環境におけるシークレット管理は、多くのエンジニアが「なんとなく大丈夫だろう」と思いながらも、実は十分に理解していない領域です。先日公開されたZennの記事「GitHub Actionsのシークレットは簡単に見れる」がSNSで話題になったことからも、この問題への関心の高さがうかがえます。

実際のプロジェクトでは、シークレットの漏洩がインシデントにつながるケースが増えています。本記事では、GitHub Actionsにおけるシークレット管理の仕組みと、CI/CD環境を安全に運用するための実践的な対策を解説します。

目次

GitHub Actionsのシークレット管理の基本と落とし穴

💡 DevSecOpsを実践できる環境で働きたいなら
セキュリティを重視した開発文化を持つ企業で、スキルを活かしませんか?

GitHub Actionsでは、APIキーやトークンなどの機密情報をSecretsとして保存し、ワークフロー内で安全に参照できます。しかし、この機能には多くの開発者が見落としがちな落とし穴があります。

シークレットの基本的な仕組み

  • 暗号化保存: シークレットはLibsodium sealed boxで暗号化され、GitHubのサーバーに保存される
  • ログマスキング: ワークフローのログ出力時に自動的にマスクされる(***表示)
  • スコープ: リポジトリレベル、環境レベル、Organizationレベルで設定可能

見落としがちなリスク

  • フォークからのPRで漏洩: pull_request_targetイベントを使うと、フォークからのPRでもシークレットにアクセスできてしまう
  • ログへの間接的な出力: base64エンコードやURLエンコードなど、変換後の文字列はマスク対象外
  • アーティファクトへの混入: ビルド成果物にシークレットが含まれると、ダウンロード可能になる

GitHub Actionsのセキュリティ設定については、MongoDBセキュリティ設定ガイドで紹介したDBセキュリティの考え方と同様、デフォルト設定を過信しないことが重要です。

IT女子 アラ美
シークレットってログに出力されないから安全だと思ってました。

ITアライグマ
マスキングはあくまで補助的な機能です。根本的には、シークレットが必要な処理を最小限にする設計が大切ですよ。

ワークフローにおける攻撃ベクトルと防御策

GitHub Actionsを狙った攻撃は、主に以下のパターンに分類されます。ここでは各攻撃手法と、それに対する具体的な防御策を解説します。

攻撃パターン1: 悪意あるPRによるシークレット窃取

最も一般的な攻撃パターンは、フォークリポジトリから悪意あるPRを送り、ワークフロー内でシークレットを外部に送信するものです。


# 危険な設定例(pull_request_targetでcheckoutするケース)
on:
  pull_request_target:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # PRのコードをcheckoutすると、悪意あるコードが実行される
      uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}
      run: npm install  # package.jsonのpostinstallで攻撃可能

対策: ワークフローの分離とラベルベースの承認


# 安全な設定例
on:
  pull_request:  # pull_request_targetではなくpull_requestを使用
    types: [opened, synchronize]

jobs:
  # シークレット不要な処理は通常のPRイベントで実行
  test:
    runs-on: ubuntu-latest
    steps:
      uses: actions/checkout@v4
      run: npm test

  # シークレット必要な処理はラベル付与後に別ワークフローで実行

GitHub Actionsのベストプラクティスについては、IaCツール入門の記事でも触れたとおり、宣言的な設定で意図を明確にすることがセキュリティにもつながります。

IT女子 アラ美
pull_request_targetは使わないほうがいいんですか?

ITアライグマ
使い方次第ですね。PRのコードをcheckoutせず、ラベル付与や通知だけに使うなら安全です。重要なのは、何にシークレットがアクセスできるかを常に意識することですよ。

シークレットローテーションと最小権限の実装

シークレットが漏洩した場合の影響を最小化するには、ローテーション最小権限の原則が不可欠です。

シークレットローテーションの自動化


# シークレットローテーション用ワークフロー
name: Rotate Secrets
on:
  schedule:
    cron: '0 0 1 * *'  # 毎月1日に実行
  workflow_dispatch:

jobs:
  rotate:
    runs-on: ubuntu-latest
    steps:
      name: Generate new token
        id: new_token
        run: |
          # 新しいトークンを生成(サービス固有のAPI呼び出し)
          NEW_TOKEN=$(curl -X POST ... | jq -r '.token')
          echo "::add-mask::$NEW_TOKEN"
          echo "token=$NEW_TOKEN" >> $GITHUB_OUTPUT

      name: Update secret
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.ADMIN_TOKEN }}
          script: |
            const sodium = require('libsodium-wrappers');
            await sodium.ready;
            // シークレットを更新するロジック

最小権限トークンの設計

  • Fine-grained Personal Access Token: リポジトリ単位で権限を絞ったトークンを使用
  • GitHub App: 必要な権限だけを持つAppを作成し、Installation Tokenを使用
  • OIDC連携: AWS/GCP/Azureへのアクセスは短命なトークンをOIDCで取得

CI/CD環境におけるセキュリティインシデント原因

OIDCによるクラウド連携については、ワークフローエンジン実装ガイドで紹介した認証パターンも参考になります。

IT女子 アラ美
OIDCって設定が複雑そうで避けてたんですが、やっぱり使ったほうがいいですか?

ITアライグマ
最初は設定に手間がかかりますが、長期認証情報をGitHubに保存しなくて済むメリットは大きいです。特にAWSやGCPを使うプロジェクトでは強くおすすめしますよ。

依存関係とサプライチェーンセキュリティ

GitHub Actionsのセキュリティは、利用するActionやパッケージの安全性にも依存します。サプライチェーン攻撃への対策も重要です。

Actionのピン留め


# 悪い例: タグ指定(後から書き換えられる可能性)
uses: actions/checkout@v4

# 良い例: コミットSHA指定(イミュータブル)
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11

Dependabotとセキュリティアラート

  • Dependabot version updates: Actionのバージョンアップを自動PR化
  • Secret scanning: 誤ってコミットされたシークレットを検出
  • Code scanning: CodeQLによるワークフローファイルの静的解析

セキュリティスキャンの導入については、脆弱性検出ツール導入ガイドも参考にしてください。

IT女子 アラ美
SHA指定だとバージョンアップのたびに書き換えが必要で面倒ですよね。

ITアライグマ
Dependabotを設定しておけば、新バージョンがリリースされると自動でPRが作られます。手動管理の手間はほとんどなくなりますよ。

ケーススタディ:CI/CD環境のセキュリティ強化プロジェクト

💡

セキュリティを武器にキャリアアップを目指すなら
DevSecOpsの経験は市場価値が高まっています。セキュリティスキルを評価してくれる企業への転職も選択肢に入れてみませんか?

ここでは、あるWebサービス開発チームがGitHub Actionsのセキュリティを強化した事例を紹介します。

状況(Before)

  • チーム規模: エンジニア8名、リポジトリ15個
  • 課題: シークレットがOrganization全体で共有され、誰がどの権限を持つか不明確
  • リスク: 1つのリポジトリが侵害されると、全サービスの認証情報が漏洩する恐れ
  • 運用状況: シークレットのローテーションは手動で年1回程度、OIDC未導入

行動(Action)

  • シークレット棚卸しを実施し: 全リポジトリのシークレット一覧を作成、不要なものを約40%削除した
  • OIDC連携を導入し: AWS/GCPへのアクセスをすべてOIDCに移行したところ、長期認証情報の保存が不要になった
  • 環境単位のシークレット分離を適用し: production/staging/developmentごとに別シークレットを設定した結果、影響範囲を限定できるようになった
  • ワークフロー監査を導入し: pull_request_targetの使用箇所を洗い出し、3箇所を安全な実装に改修した
  • 全体期間: 計画から完了まで約6週間

結果(After)

  • GitHub外に保存する長期認証情報が約70%削減
  • シークレットのスコープが明確化され、インシデント時の影響範囲を限定できるように
  • セキュリティレビューがCI/CDプロセスに組み込まれ、新規ワークフロー追加時のチェックが定着
  • チームのセキュリティ意識が向上し、開発者からの改善提案も増加

セキュリティ強化プロジェクトの進め方については、AIエージェント時代のキャリア戦略で紹介した「自動化に飲まれない価値の作り方」の視点も参考になります。

IT女子 アラ美
6週間でここまで改善できるんですね。うちのチームでもやってみたいです。

ITアライグマ
最初はシークレットの棚卸しから始めるのがおすすめです。意外と使われていない古いシークレットが残っていることが多いですよ。

継続的なセキュリティ運用に向けて

CI/CDセキュリティは一度対策すれば終わりではなく、継続的な運用が必要です。

  • 定期的な監査: 四半期ごとにシークレットとワークフローの棚卸しを実施
  • インシデント対応手順: シークレット漏洩時の対応フローを事前に整備
  • セキュリティ教育: 新メンバー向けにCI/CDセキュリティのオンボーディングを実施

チームセキュリティの強化については、自律型AIエージェント構築ガイドで紹介した㏄ール設計の知見も参考になります。

さらなる年収アップやキャリアアップを目指すなら、ハイクラス向けの求人に特化した以下のサービスがおすすめです。

比較項目 TechGo レバテックダイレクト ビズリーチ
年収レンジ 800万〜1,500万円ハイクラス特化 600万〜1,000万円IT専門スカウト 700万〜2,000万円全業界・管理職含む
技術スタック モダン環境中心 Web系に強い 企業によりバラバラ
リモート率 フルリモート前提多数 条件検索可能 原則出社も多い
おすすめ度 S技術で稼ぐならここ A受身で探すなら Bマネジメント層向け
公式サイト 無料登録する - -
IT女子 アラ美
年収を上げたいんですが、ハイクラス求人ってハードルが高そうで迷います…
ITアライグマ
技術力を武器に年収を上げたいならTechGo一択!でも、自分の市場価値を幅広くチェックしたいならビズリーチも登録しておくと安心ですよ。

まとめ

GitHub ActionsとCI/CD環境のセキュリティは、「なんとなく大丈夫」では済まされない領域です。

  • シークレットの仕組みを理解する: マスキングの限界と攻撃ベクトルを把握
  • pull_request_targetの取り扱いに注意: フォークからのPRでシークレットにアクセスできる設定を避ける
  • OIDCで長期認証情報を減らす: クラウドへのアクセスは短命トークンで
  • ActionのSHA指定とDependabot: サプライチェーン攻撃への対策

セキュリティは開発速度を下げるものではなく、安心して開発を続けるための土台です。今日からできる対策から始めてみてください。

IT女子 アラ美
セキュリティって難しそうで後回しにしがちでしたが、この記事で具体的にやるべきことがわかりました。

ITアライグマ
まずはシークレットの棚卸しと、pull_request_targetの使用箇所チェックから始めてみてください。小さな一歩が大きな改善につながりますよ。

厳しめIT女子 アラ美による解説ショート動画はこちら

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITアライグマのアバター ITアライグマ ITエンジニア / PM

都内で働くPM兼Webエンジニア(既婚・子持ち)です。
AIで作業時間を削って実務をラクにしつつ、市場価値を高めて「高年収・自由な働き方」を手に入れるキャリア戦略を発信しています。

目次