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

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

推定所要時間: 15 分

目標

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

タスク A. セキュリティポリシーのセットアップ

  1. My Test Group - XXXXX(X はユーザー名に置き換えてください)というグループに移動します。

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

  3. 新しいポリシー を選択します。

  4. スキャン実行ポリシー の下で ポリシーを選択 を選択します。

  5. 名前Group security policy と入力します。

  6. ポリシーステータス有効 に設定されていることを確認します。

  7. ポリシースコープ には、例外なくこのグループのすべてのプロジェクトに適用 を選択します。

  8. 設定タイプを テンプレート から カスタム に変更します。

  9. アクションの下で、スキャンが SAST スキャン を実行するように設定します。Runner タグ自動的に選択 に設定され、セキュリティジョブテンプレートデフォルト に設定されていることを確認します。

  10. 条件の下で トリガー を選択します。例外なしすべてのブランチ に対してポリシーを実行するように設定します。

  11. 新しいポリシーで新しいプロジェクトを作成 を選択します。

  12. マージ を選択して設定を完了します。

タスク B. スキャン実行ポリシーの動作確認

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

  2. 新しいプロジェクト を選択します。

  3. ブランクプロジェクトを作成 を選択します。

  4. プロジェクト名 フィールドに Security Compliance Testing と入力します。

  5. 他のすべてのオプションはデフォルトのままにして、プロジェクトを作成 を選択します。

  6. プロジェクトリポジトリで + > 新しいファイル を選択します。

  7. ファイル名main.py と入力します。

  8. ファイルに以下のコードを追加します:

    print("Testing scanners!")
    
  9. 変更を main ブランチにコミットします。

  10. 左サイドバーで ビルド > パイプライン を選択します。

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

  12. パイプライン内のジョブを確認します。.gitlab-ci.yml 設定が存在しないにもかかわらず、このコミットに対して SAST スキャンが実行されていることに注目してください。これにより、グループ内のプロジェクトは .gitlab-ci.yml ファイルにまだ定義されていない場合でも、常にセキュリティスキャンが実行されます。

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

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

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

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

  3. 新しいポリシー を選択します。

  4. マージリクエスト承認ポリシー の下で ポリシーを選択 を選択します。

  5. 名前Merge Request Security と入力します。

  6. ポリシーステータス の下で 有効 が選択されていることを確認します。

  7. ポリシースコープ については、ポリシーが例外なくこのグループのすべてのプロジェクトに適用されていることを確認します。

  8. ルール の下で、スキャンタイプセキュリティスキャン に設定します。

  9. スキャナーには すべてのスキャナー を選択します。

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

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

  12. 重大度レベルを すべての重大度レベル に設定します。

  13. ステータスを 新規すべての脆弱性の状態 に設定します。

  14. アクション の下で オーナー ロールからの承認を 1 件要求します。

  15. プロジェクト承認設定を上書き で、マージリクエストの作成者による承認を防止するコミット作成者による承認を防止する のオプションのチェックを外すようにします。

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

  16. 他のすべてのオプションはデフォルトのままにして、マージリクエストで設定 を選択します。

  17. マージ を選択します。

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

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

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

  3. 左サイドバーで コード > ブランチ を選択します。

  4. 新しいブランチ を選択します。

  5. ブランチ名を test_policy とし、ブランチを作成 を選択します。

  6. マージリクエストを作成 を選択します。

  7. ドラフトとしてマーク のチェックを外し、マージリクエストを作成 を選択します。

  8. コード > Web IDE で開く を選択します。

  9. main.py ファイルを開き、以下のコードを追加します:

    import subprocess
    
    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_policy' を選択します。

  11. MR に戻ります。

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

  13. これらの問題を解決するには、コード > 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_policy' を選択します。

  16. MR に戻ります。

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

ラボガイド完了

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

ご提案・改善点

ラボに変更を加えたい場合は、マージリクエストで変更内容を送信してください。