【入門編】 CI/CD環境におけるパイプライン定義ファイルの保護 – インフラ・ネットワーク & クラウドセキュリティ防御ガイド

「家の設計図」を勝手に書き換えさせない!CI/CDパイプラインを鉄壁にする防犯術

こんにちは!セキュリティの現場で日々、泥臭い攻防を繰り広げているエンジニアです。

今日は、開発現場の心臓部とも言える「CI/CDパイプライン」の守り方についてお話しします。「CI/CDなんて難しそう…」と思うかもしれませんが、実は「家の防犯」と同じなんです。

皆さんが毎日使うGitHub ActionsやGitLab CIの定義ファイル。これ、実は「あなたの家がどうやって建つか」を書いた設計図そのものなんですよ。

—

1. なぜ「設計図」が狙われるのか?

想像してみてください。あなたは今、信頼できる大工さん(自動化ツール)に「この設計図通りに家を建ててね」とお願いしています。

もし、泥棒がこっそりその設計図を書き換えて、「裏口の鍵を最初から開けておけ」とか「窓に警報装置を設置するな」という指示を書き足したらどうなるでしょう?

大工さんは何も知らずに、泥棒が入りやすい家をせっせと作ってしまいますよね。これが、CI/CDパイプラインにおける「不正なコード注入」の正体です。攻撃者は直接システムを攻撃するよりも、「システムを作るプロセス」を汚染する方が、ずっと簡単でバレにくいことを知っているのです。

—

2. 第一の防犯:設計図の変更を「二重チェック」する

まず一番大切なのは、「設計図(YAMLファイル)を書き換えるときは、必ず別の人の許可をもらう」というルールです。

GitHubなどの「コードオーナー制(CODEOWNERS)」を使いましょう。これを使えば、「このファイルを変更するなら、絶対にこのセキュリティ担当(またはシニアエンジニア)の許可が必要!」というロックをかけられます。

設定例:GitHubの .github/CODEOWNERS

# パイプライン定義の変更には、必ずセキュリティチームの承認を求める設定
/.github/workflows/  @security-team-lead

たったこれだけですが、これで「勝手に設計図を書き換えて裏口を作る」という犯行を防ぐための大きな壁ができます。

—

3. 第二の防犯:信頼できない「部品」を締め出す

パイプラインの中では、世界中の人が作った便利なツール(Action)を読み込むことがよくあります。しかし、見ず知らずの人が作った「合鍵」を玄関の鍵穴に差し込んでいるのと同じ状態だとしたら、怖くないですか?

これに対処するには、ツールを読み込むときに「指紋(ハッシュ値)」を指定することです。

良い例:指紋を指定してロックする

- name: 外部ツールを実行
  # バージョン名だけでなく、具体的な指紋(SHA)を指定して固定する
  # これにより、ツールが途中で悪意あるものに差し替えられても動作を拒否できる
  uses: actions/checkout@v8 # 本来はここに長大なハッシュ値が入ります
  with:
    # 信頼できる「指紋」を確認済みであることを明示
    sha: 8e5e7e5ab8b370d6c329ec480221332ada57f0ab

こうしておけば、たとえ配布元のツールが乗っ取られても、あなたのパイプラインは「あ、これいつもの指紋と違うぞ!」と気づいてストップしてくれます。

—

4. 第三の防犯:パイプラインに「過度な権限」を与えない

皆さんの家の掃除ロボットが、家の鍵だけでなく「銀行の金庫の鍵」まで持っていたら不安ですよね。CI/CDパイプラインも同じです。

「本番環境のサーバーを全部操作できる権限」を、開発用のパイプラインに与えていませんか?

  • 権限の最小化: 「読み取り」だけ必要な場所には「書き込み」権限を与えない。
  • 一時的な鍵の発行: GitHub Actionsなどからクラウド(AWSなど)に接続する際、長期的なパスワードを保存するのではなく、「使うときだけ発行される10分間限定の通行証(OIDC)」を使いましょう。

—

最後に:完璧な防犯なんて存在しない

ここまで読んで「よし、これで完璧だ!」と思った方、素晴らしい心構えです。でも、最後に一つだけ覚えて帰ってください。

セキュリティに「終わり」はありません。泥棒は常に新しい手口を考えています。だからこそ、「パイプラインが勝手に書き換えられていないか、定期的におかしいログが出ていないか」を監視する目を持ち続けることが、プロのエンジニアとしての第一歩です。

まずは今日、自分のリポジトリの .github/workflows/ を覗いてみてください。「誰でも書き換えられる状態」になっていませんか?そこから一緒に、少しずつ「要塞化」していきましょう!

何か不安なことや、もっと深く知りたいことがあれば、いつでも相談してくださいね。応援しています!

コメント

タイトルとURLをコピーしました