株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

GitとCI/CDに関する知識ゼロのSEが、適当なリポジトリでGitLabのAuto DevOpsのSASTを超お手軽に試すだけの話

2022/05/20 GitLabのデモ動画を作りました!このブログの末尾にリンクを張ったのでよろしければご視聴ください。 

皆様こんにちは。SEの小池と申します。
今回はGitLabのAuto DevOpsでSASTをお試しする超簡単な方法を紹介いたします。

本記事の対象の方

  • GitLabでSAST機能をお試しなさりたい方。
  • SASTができる製品を探していらっしゃる方。
  • SASTに限らず、GitLabのAuto DevOpsの実装方法がよくわからない方。

今回のブログのゴール

このブログのゴールはこちらです。

今回のゴール
  • 任意のリポジトリを使って、GitLabのAutoDev OpsでSASTをお試しする。

このブログをお読みいただくにあたっての事前ご連絡事項

  • 本記事は後述する環境があり、且つ、CI/CDパイプラインを正常に実行できる状態であることが前提です。
  • 本記事は GitLab Enterprise Edition 14.6.1-ee (Ultimate) における仕様をベースに記載しております。それ以外のエディションやバージョンではこの記事に記載の通りではない可能性がございます。
  • 本記事の操作説明と画面ショットはGitLabのローカライズを日本語にした状態で説明しております。それ以外の言語をご利用の方は適宜読み替えてください。
  • 本記事はGitやCI/CDに関する知識ゼロのSEによるなんちゃって記事です。GitLabのディープな使用法についてはGitLabの公式オンラインドキュメント (こちら) をご参照ください。

Step1: 用意するもの (環境)

GitLabの AutoDevOps でSASTを使うにあたって用意するものは以下の通りです。

  • GitLab : 1環境
    SaaS版 (GitLab.com) 利用時は特に考慮事項なし。
    オンプレミス版の場合は、インターネットにアクセス環境な環境であること。
    エディションは何でも可。
  • Runner : 1個以上
    SaaS版 (GitLab.com) にはデフォルトで共用Runnerがあり、これを利用する場合はRunnerの用意は不要。
    オンプレミス版の場合は、Runnerが以下のすべて満たす必要がある。
    • 11.5以降であること。
    • エグゼキューターが docker または kubernetes であること。

Step2: SASTの対象リポジトリをつくる

まず、SASTの対象となるプロジェクトとリポジトリを用意しましょう。
リポジトリ内容は・・・とりあえず、GitLabのAuto SASTでサポートされている言語とフレームワークが含まれていれば、あとは何でもいいです。
参考: Static Application Security Testing (SAST) | GitLab

既にSASTの対象となるリポジトリがある場合は、このStepをスキップして「Step3: リポジトリに .gitlab_ci.yml を作成する」を実施してください。

余談ですが、GitLabのプロジェクトページで、リポジトリ一覧の少し上にカラフルな線が一本表示されています。
この線、実はリポジトリに含まれる言語の種類とその割合を示しています。
マウスオーバーするとどういう言語がどのくらい使われているのかがわかります。

SASTのサポート対象か否かを見極めるために使えます・・・と思います、多分
後は、「Step1: 用意するもの (環境)」に記載したRunnerをこのプロジェクトで使用可能な状況にしておけばOKです。

Step3: リポジトリに .gitlab_ci.yml を作成する

GitLabでCI/CDパイプラインときたら、もう反射的に .gitlab_ci.yml です
Auto DevOpsにおけるSASTも、もれなくこのymlファイルを使います。

既にリポジトリに .gitlab_ci.yml ファイルがある場合は、このステップをスキップし、「Step4: Auto DevOpsのAuto SASTを有効にする」から実施してください。
ゼロから作る場合は、後続手順を実施してymlファイルを作ります。

リポジトリのルートに .gitlab_ci.yml を作成します。
プロジェクトページで、SASTの対象となるブランチを表示した状態で、[Web IDE] をクリックします。

左側のリポジトリ一覧で [新規ファイル] をクリックします。

[.gitlab_ci.yml] をクリックします。

ymlファイルが作成されます。

この画面の状態のまま、次の「Step4: Auto DevOpsのAuto SASTを有効にする」へ進んでください。

Step4: Auto DevOpsのAuto SASTを有効にする

.gitlab_ci.yml ファイルの任意の場所に以下の2行を追記します

include:
  - template: Security/SAST.gitlab-ci.yml

変更をコミットします。
この時直接コミットしてもマージリクエストを作ってもどちらでもOKです。

Step5-1: 【全エディション共通】SASTの結果をjson形式でダウンロードする

SASTの結果はjson形式でダウンロードできます
エディションを問わず、マージリクエストの下図赤枠部分からjson形式で結果をダウンロードできます。

また、エディション問わず、上のjson形式のファイルと同じものをCI/CDパイプライン履歴一覧からもダウンロードできます。

なお、Ultimate版の場合は、ダウンロード以外にCI/CDパイプライン上にSASTの結果が出ていて、そこからCI/CDパイプラインの [セキュリティ] タブに飛ぶことができます。

Step5-2: 【Ultimate版の場合】SASTの結果をCI/CDパイプラインの実行履歴から確認する

パイプラインの実行履歴からSASTの結果を参照します
左側のメニューから [CI/CD] > [パイプライン] を開き、最新のパイプラインの実行履歴を参照します。

ステージ [Test] でAuto SASTによりいくつかジョブが自動生成されていることを確認できます。
なお、自動生成されるジョブはリポジトリの内容によって異なりますので、下の画面はあくまで例としてご参照ください。

同画面で [セキュリティ] タブを開くと、Auto SASTによって発見された脆弱性の件数と一覧を確認することができます。

また、[Download results] から、自動生成されたジョブ毎で発見された脆弱性をjson形式でダウンロードできます。

Step5-3: 【Ultimate版の場合】SASTの結果を脆弱性レポートから確認する

CI/CDパイプラインの実行履歴からもSASTの結果は確認できますが、[セキュリティとコンプライアンス] > [Vulnerability report] からも確認できます
こちらだと、脆弱性の各重要度で何件検知しているかを確認しやすいです。

また、画面右上の [Export] より、検知した脆弱性をcsv形式でダウンロードできます。

以上が、GitLabのAuto DevOpsを使ってAuto SASTを実装する超簡単な方法でした。

(余談) エディションの違いとSAST以外のAuto DevOpsについて

今回紹介したSASTの確認だけでも、エディションによってアレができるコレができる・・・と結構細かいです。
詳細は下のGitLab Docsをご参照ください。
参考:Static Application Security Testing (SAST) | GitLab

また、GitLabのAuto DevOpsはSAST以外も色々あります。
実装可能なAuto DevOpsは下のGitLab Docsをご参照ください。
なお、一部はPremium以上でなければ利用できないものもありますので、ご注意ください。
参考:Auto DevOps | GitLab

最後に

この度はGitもCI/CDもよくわかっていないど素人SEによるGitLab検証ブログをお読みいただき、誠にありがとうございます。
このブログの目標は以下のとおりでしたが、皆さまはいかがでしたでしょうか。

今回のゴール
  • 任意のリポジトリを使って、GitLabのAutoDev OpsでSASTをお試しする。

GitLabのSASTはCI/CDパイプラインで実装する必要があります。
で、筆者のような開発経験がないGit使ったことないCI/CDわかんない人間からすると、試すことすらハードル高い…となる方もいらっしゃるかもしれません。
そんな方にこの記事が少しでもお役に立ったのであれば幸いです。
最後までお読みいただき、誠にありがとうございました。


GitLabに関するお問い合わせは、以下のフォームからお願い致します。
GitLab製品 お問い合わせ

2022/05/20追記
GitLab操作デモ動画 (基本編) を作っちゃいました。
つたない内容ではありますが、ご興味がおありでしたら是非ご視聴いただければと存じます。

www.youtube.com