GitLab Security Essentials - ハンズオンラボ: スキャン実行ポリシーを使用したスキャンの有効化と実行

このハンズオンガイドでは、GitLab プロジェクトでスキャン実行ポリシーを有効化して使用する方法を解説します。

推定所要時間: 15 分

目標

コンプライアンススキャンを使用すると、インスタンス、グループ、プロジェクト内のマージリクエストとセキュリティスキャンを制御できます。このラボでは、グループレベルでセキュリティポリシーとマージリクエストポリシーを有効化する方法を実演します。

タスク A. セキュリティポリシーの設定

  1. グループに移動します。

  2. 左サイドバーで Secure > Policies を選択します。

  3. New policy を選択します。

  4. Scan execution policy の下で Select policy を選択します。

  5. NameGroup security policy と入力します。

  6. Policy statusEnabled に設定されていることを確認します。

  7. Policy Scope で、**このグループ内のすべてのプロジェクト(例外なし)**に適用します。

  8. Actions で、SAST スキャンを実行するスキャンを設定します。Runner Tagsselected automatically に設定され、Security job templatedefault に設定されていることを確認します。

  9. Conditions で Triggers を選択します。ポリシーをすべてのブランチ例外なしで実行するように設定します。

  10. Configure with a merge request を選択します。

  11. Merge を選択して設定を完了します。

タスク B. セキュリティポリシースキャンの動作確認

  1. グループに移動します。

  2. New project を選択します。

  3. Create blank project を選択します。

  4. Project name フィールドに Security Compliance Testing と入力します。

  5. 他のすべてのオプションをデフォルトのままにして Create project を選択します。

  6. プロジェクトリポジトリで + > New file を選択します。

  7. Filenamemain.py と入力します。

  8. ファイルに次のコードを追加します。

    print("Testing scanners!")
    
  9. Commit changes を選択します。

  10. 左サイドバーで Build > Pipelines を選択します。

  11. コミットから作成されたパイプラインを選択します。

  12. パイプライン内のジョブを確認します。.gitlab-ci.yml 設定が存在しないにもかかわらず、このコミットで SAST スキャンが実行されていることを確認します。

これで、.gitlab-ci.yml ファイルにまだ定義されていなくても、グループ内のプロジェクトには常にセキュリティスキャンが実行されます。

タスク C. マージリクエストポリシー

セキュリティスキャンが整備されたので、セキュリティ脆弱性を含むマージリクエストをブロックできるようにすると理想的です。このセクションでは、この目標を達成するためのマージリクエストポリシーを作成します。

  1. グループに移動します。

  2. 左サイドバーで Secure > Policies を選択します。

  3. New policy を選択します。

  4. Merge request approval policy の下で Select policy を選択します。

  5. NameMerge Request Security と入力します。

  6. Policy statusEnabled が選択されていることを確認します。

  7. Policy Scope で、例外なしにこのグループ内のすべてのプロジェクトにポリシーを適用します。

  8. Rules でスキャンタイプを Security Scan に設定します。

  9. スキャナーには All scanners を選択します。

  10. すべてのデフォルトブランチに対してスキャンを実行します。

  11. スキャンに例外なし任意の脆弱性が見つかることを指定します。

  12. 深刻度レベルを All severity levels に設定します。

  13. ステータスを NewAll vulnerability states に設定します。

  14. ActionsOwner ロールからの承認を 1 件要求します。

  15. Override project approval settings で、Prevent approval by merge request’s authorPrevent approval by commit author オプションのチェックを外してください。

    グループに 1 つのアカウントしかないため、これらのオプションをオフに設定しています。本番環境では、これらはしばしばオンに設定されます。

  16. 他のすべてのオプションをデフォルトのままにして Configure with a merge request を選択します。

  17. Merge を選択します。

タスク D. マージリクエストポリシーの動作確認

  1. グループに戻ります。

  2. Security Compliance Testing プロジェクトを選択します。

  3. 左サイドバーで Code > Branches を選択します。

  4. New branch を選択します。

  5. ブランチ名を test_policy にして、Create branch を選択します。

  6. Create merge request を選択します。

  7. Mark as draft のチェックを外して、Create merge request を選択します。

  8. Code > Open in Web IDE を選択します。

  9. main.py ファイルを開いて次のコードを追加します。

    
    in = input("Enter your server ip: ")
    subprocess.run(["ping", in])
    
    print("Attempting to connect to the server")
    print("Application authentication was successful")
    
  10. ブランチアイコンを選択して、Commit and push to 'test_branch' を選択します。

  11. MR に戻ります。

  12. パイプラインが完了するまで待ちます。完了したら、This merge request has policy violations and errors というコメントに注目します。

  13. これらの問題を解決するには、Code > Open in Web IDE を選択します。

  14. main.py ファイルを開いて main.py のコードを次のように編集します。

    print("Attempting to connect to the server")
    print("Application authentication was successful")
    
  15. ブランチアイコンを選択して、Commit and push to 'test_branch' を選択します。

  16. MR に戻ります。

  17. パイプラインが完了するまで待ちます。完了したら、Security policy violations have been resolved というコメントに注目します。

ラボガイド完了

このラボ演習を完了しました。このコースの他のラボガイドを参照できます。

ご提案

GitLab Security Essentials ハンズオンガイドへの変更を提案される場合は、マージリクエストで提出してください。