こんにちは!日々の開発、本当にお疲れ様です。
新しいツールや技術に触れるときって、ワクワクする半面、「ちゃんと自分の環境で動くかな…」と少し緊張しますよね。
今回は、GitLabが標準で持っている強力な武器、「セキュリティスキャン(SAST・DAST)」についてお話しします。
「セキュリティチェックって、リリース前の大変な時期に専門チームがやるものでしょ?」
そんな風に思っていませんか?
実はこれ、コードを書いた瞬間に自動でチェックが走り、バグと同じ感覚で脆弱性を直せるという、開発者にとってめちゃくちゃありがたい機能なんです。これをマスターすれば、毎日のコードレビューやリリース前のドキドキが劇的に楽になりますよ。
専門知識がなくても大丈夫。今日からあなたのプロジェクトを要塞化できるように、優しく丁寧にお手伝いしますね。
—
1. GitLabセキュリティスキャンとは?(初心者向け全体像)
GitLabのセキュリティスキャンは、いわば「あなたのコード専属の超優秀なセキュリティ・ガードマン」です。
主な役割を持つ機能がいくつかありますが、今回は特に重要な2つを覚えましょう。
- SAST(Static Application Security Testing / 静的アプリケーションセキュリティテスト)
- 役割: コンパイルや実行をする前に、ソースコードを直接読んで「おいおい、ここにパスワードが直書きされてるぞ!」「この書き方は危ない!」と見つけてくれる機能です。
- イメージ: コードの誤字脱字をチェックする赤ペン先生のセキュリティ版。
- DAST(Dynamic Application Security Testing / 動的アプリケーションセキュリティテスト)
- 役割: アプリケーションを実際に動かして、外側からハッカー目線で攻撃を仕掛け、「侵入できる隙がないか」をテストしてくれる機能です。
- イメージ: 完成した家(アプリ)の鍵がちゃんとかかっているか、泥棒役になって試してみるテスト。
これらをGitLabのCI/CDパイプライン(自動化の仕組み)に組み込むことで、コードをプッシュするたびに全自動でセキュリティ診断が行われる環境を作ることができます。
—
2. 【基礎セットアップ】SASTをパイプラインに組み込む設定
それでは実際に、GitLabでSASTを動かしてみましょう!
驚くほど簡単です。GitLabのプロジェクトルートに、`.gitlab-ci.yml`という設定ファイルが1つあれば、それだけで準備完了です。
魔法の1行(インクルード)を使う
GitLabには、あらかじめ用意された便利なテンプレートを読み込む「テンプレート機能(Include)」があります。これを使えば、複雑な設定を書く必要は一切ありません。
以下のコードを、あなたのプロジェクトの `.gitlab-ci.yml` に記述してみてください。
.gitlab-ci.yml
パイプラインのステージを定義
stages:
- test
GitLab公式が提供するSASTテンプレートを呼び出す
include:
- template: Security/SAST.gitlab-ci.yml
これだけで、自動的にSASTスキャンが「test」ステージで実行されます!
たったこれだけです!このファイルをリポジトリにプッシュして、GitLab上でパイプラインが走るのを眺めてみてください。これだけで、あなたのコードの静的解析が始まります。
—
3. 【動作確認】あえて脆弱性を仕込んで検知させてみよう
新しいツールを入れたときは、「ちゃんと動くこと(検知できること)」を確認するのが一番安心ですよね。
初心者の方に向けて、安全な範囲で「あえて脆弱性のあるコード」を置いて動作確認(HelloWorld的なテスト)をしてみましょう。
ステップ1: 脆弱性を含むサンプルコードの作成
例えば、Pythonのプロジェクトだとします。`app.py` というファイルを作り、わざと安全ではないコード(OSコマンドインジェクションの脆弱性)を書いてみます。
app.py
import os
def run_command(user_input):
# 【警告】ユーザーからの入力をそのままOSコマンドとして実行してしまう危険なコード
# SASTはこの危険なパターンを見逃しません!
os.system(“echo ” + user_input)
if __name__ == “__main__”:
run_command(“Hello World”)
ステップ2: コードをプッシュしてパイプラインを走らせる
このファイルをGitLabにプッシュ(`git push`)します。すると、先ほど設定した `.gitlab-ci.yml` が自動で働き、SASTスキャンが実行されます。
数分待ってパイプラインが「緑(成功)」または「完了」になったら、次のステップへ進みましょう!
—
4. 検出された脆弱性の確認と修正フロー
スキャンが終わったら、いよいよ結果を確認します。ここがGitLabの最も感動的なポイントです。
検出結果の確認方法
1. GitLabのプロジェクト画面を開く。
2. 左側メニューの [セキュリティとコンプライアンス (Secure)] > [脆弱性レポート (Vulnerability Report)] をクリック。
3. すると……おっと!先ほど仕込んだ脆弱性がリストアップされています。
> 「OS Command Injection」といった分かりやすいタイトルで、「どのファイルの何行目に問題があるか」がピンポイントで表示されます。
開発者のための修正フロー
GitLabが素晴らしいのは、ここからがシームレスなところです。
1. レポート画面から、該当の脆弱性をクリックします。
2. 「Create Issue(課題の作成)」 ボタンを押すと、この脆弱性を直すためのタスク(チケット)がワンクリックで作成できます。
3. さらに、その画面から「Create merge request(マージリクエストの作成)」へと繋げられ、修正用のブランチを即座に生み出すことができます。
「見つける ➔ 記録する ➔ 直す」というサイクルが、GitLabという一つのプラットフォームの中で完結するんです。これを体験すると、もう元の開発スタイルには戻れなくなりますよ。
—
5. 無料版(Free)と有料版(Ultimate)の機能差分
「こんなに便利な機能、お高いんでしょ?」と思われるかもしれませんが、実はGitLabは無料版(Freeプラン)でも十分すぎるほど強力です。
ざっくりとした機能の差分を整理しておきますね。
| 機能カテゴリ | Free(無料版) | Ultimate(最上位の有料版) |
| :— | :— | :— |
| SAST(静的解析) | 多くの主要言語で利用可能(基本はカバー!) | より高度な深層解析、対応言語の拡大 |
| DAST(動的解析) | 簡易的な実行時スキャン | 本格的な脆弱性スキャン、APIファジングなど |
| 脆弱性レポートの閲覧 | ダッシュボードで一覧確認が可能 | 組織全体での横断管理、ポリシー自動化 |
| ライセンスコンプライアンス| 利用不可 | 使用しているOSSのライセンス違反チェック |
先輩からのアドバイス:
まずは、無料の FreeプランのままでSASTを導入 してみてください。これだけでも、パスワードのハードコードや基本的な脆弱性の9割は防げるようになります。プロジェクトの規模が大きくなり、セキュリティ要件が厳しくなってから有料版を検討するスタイルで全く問題ありません。
—
おわりに
お疲れ様でした!
GitLabのセキュリティスキャン(SAST)の設定から動作確認、修正フローまでの一連の流れを見てきましたが、いかがだったでしょうか?
「難しそう」と感じていたセキュリティ対策も、GitLabのパイプラインに任せてしまえば、日々の開発の自然な一部になります。
これをマスターすれば、あなたの書くコードの信頼性はグッと跳ね上がり、チーム全体の安心感も段違いになります。「毎日の作業が劇的に楽になる」その実感を、ぜひ今日の開発から味わってみてくださいね。
あなたの開発ライフが、より安全で、より楽しいものになりますように!