【入門編】Bitbucket Pipelinesでの「依存関係の脆弱性スキャン」の自動化:Snykとの統合術 – バージョン管理・CI/CD活用バイブル

こんにちは。DevOpsの深淵を覗き込み、現場の「痛い目」を幾度となく乗り越えてきたエンジニアです。

今日は、多くのチームが後回しにしがちな、しかし「事故が起きたら最後」という極めて重要なトピックについてお話しします。それは、Bitbucket PipelinesとSnykを統合し、脆弱性のあるコードを「物理的にマージさせない」強力なセキュリティゲートウェイの構築です。

「脆弱性スキャン? 手動でやってるよ」「Snykって何?」という方、安心してください。今日ここから始めれば、あなたのチームの品質は劇的に向上します。

—

なぜ「手動」ではいけないのか?

開発の現場では、日々何百ものライブラリが更新されます。あなたが今日使っている便利なパッケージが、明日の朝には脆弱性を含んでいるかもしれません。それを人間が追いかけるのは不可能です。

セキュリティは「自動化」して初めて武器になります。 パイプラインがコードをビルドする瞬間に、Snykが「このライブラリは危ない!」と検知し、ビルドを強制停止する。この「物理的な拒絶」こそが、健全な開発環境を維持する秘訣です。

—

1. 準備:SnykとBitbucketの握手

まず、Snykのアカウントを作成し、APIトークンを取得してください。

1. [Snyk公式サイト](https://snyk.io/)でアカウントを作成。
2. アカウント設定から「API Token」を取得します。
3. Bitbucketのリポジトリを開き、「Settings」>「Pipelines」>「Repository variables」に移動します。
4. `SNYK_TOKEN` というキーで、先ほどのトークンを登録してください(「Secured」にチェックを入れるのを忘れずに!)。

これで、パイプラインからSnykへ安全にアクセスする準備が整いました。

—

2. bitbucket-pipelines.yml の極意

さて、ここからが本番です。`bitbucket-pipelines.yml` を以下のように設定します。

image: node:18 # あなたのプロジェクトに合わせて変更してください

pipelines:
default:

  • step:

name: 脆弱性スキャンとビルドゲートウェイ
script:
# Snyk CLIをインストール

  • npm install -g snyk

# Snykに認証(環境変数を利用)

  • snyk auth $SNYK_TOKEN

# 脆弱性スキャン実行
# –severity-threshold=high: 高リスクな脆弱性のみでビルドを失敗させる
# –fail-on=all: 何か一つでも見つかれば即停止

  • snyk test –severity-threshold=high –fail-on=all

# スキャンをパスしたらビルドとテストを実行

  • npm install
  • npm test

ここが技術のポイント:

  • `–severity-threshold=high`: ここが重要です。初期段階から全ての脆弱性に反応すると、開発が止まりすぎてチームが疲弊します。まずは「致命的なもの(High以上)」だけをゲートウェイにするのが、継続させるコツです。
  • `–fail-on=all`: これにより、Snykが脆弱性を検知した場合、パイプラインの終了コードが非ゼロとなり、Bitbucketが自動的に「ビルド失敗」と見なします。

—

3. HelloWorld 的な動作確認

正しく動いているか確認するために、あえて古いバージョンのパッケージを一つインストールしてみましょう。

脆弱性が含まれることが既知の古いパッケージをインストール
npm install lodash@4.17.15

この状態でコミットし、プッシュしてください。Bitbucket Pipelinesの画面を開くと、Snykが即座にエラーを吐き出し、パイプラインが赤く染まるはずです。

「ゲートウェイが作動した!」

これで、あなたのプロジェクトに脆弱なコードが混入することは物理的に不可能になりました。これが、プロの現場の守り方です。

—

先輩エンジニアからのアドバイス

このセキュリティゲートウェイを導入すると、最初はビルドが落ちてイライラするかもしれません。しかし、それは「事故を未然に防いだ」という勲章です。

  • 自動修正を検討する: Snykには `snyk wizard` や `snyk monitor` という強力なコマンドがあります。これらを組み合わせれば、修正案まで自動で提示してくれるようになります。
  • チームと共有する: 「なぜビルドが失敗したのか」をチームに説明してください。これは責めるためではなく、「僕たちのコードを一緒に守るため」の仕組みだと周知することが、導入を成功させる鍵です。

今日からあなたのパイプラインは、ただのビルドマシンから「最強の番人」へと進化しました。この安心感を手に入れると、もう以前の「脆弱性に怯える日々」には戻れませんよ。

何か詰まったら、いつでも聞いてください。DevOpsの道は険しいですが、その先には非常に快適な開発体験が待っています。応援しています!

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