チュートリアル: マージリクエスト承認ポリシーをセットアップする
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このチュートリアルでは、マージリクエスト承認ポリシーを作成および構成する方法を説明します。これらの承認ポリシーは、スキャン結果に基づいてアクションを実行するように設定できます。たとえば、このチュートリアルでは、脆弱性がマージリクエストで検出された場合に、指定された2人のユーザーからの承認を必要とするポリシーを設定します。
マージリクエスト承認ポリシーをセットアップするには、:
はじめる前
- このチュートリアルで使用するネームスペースには、あなた自身を含め、最低3人のユーザーが含まれている必要があります。他に2人のユーザーがいない場合は、最初に作成する必要があります。詳細については、ユーザーの作成を参照してください。
- 既存のグループに新しいプロジェクトを作成するための権限が必要です。
テストプロジェクトを作成
- 左側のサイドバーの上部で、新規作成( )を選択し、新規プロジェクト/リポジトリを選択します。
- 空のプロジェクトの作成を選択します。
- フィールドに入力します。
- プロジェクト名:
sast-scan-result-policy - 静的アプリケーションセキュリティテスト (SAST) を有効にするチェックボックスを選択します。
- プロジェクト名:
- プロジェクトを作成を選択します。
- 新しく作成したプロジェクトに移動し、保護されたブランチを作成します。
マージリクエスト承認ポリシーを追加
次に、テストプロジェクトにマージリクエスト承認ポリシーを追加します:
左側のサイドバーで、検索または移動先を選択し、
sast-scan-result-policyプロジェクトを見つけます。セキュリティ > ポリシーを選択します。
新規ポリシーを選択します。
マージリクエスト承認ポリシーで、ポリシーの選択を選択します。
フィールドに入力します。
- 名前:
sast-scan-result-policy - ポリシーステータス: 有効
- 名前:
次のルールを追加します:
IF |Security Scan| from |SAST| find(s) more than |0| |All severity levels| |All vulnerability states| vulnerabilities in an open merge request targeting |All protected branches|アクションを次のように設定します:
THEN Require approval from | 2 | of the following approvers:2人のユーザーを選択します。
マージリクエスト経由で設定を選択します。
アプリケーションは、リンクされた承認ポリシーを格納するための新しいプロジェクトを作成し、承認ポリシーを定義するためのマージリクエストを作成します。
マージを選択します。
左側のサイドバーで、検索または移動先を選択し、
sast-scan-result-policyプロジェクトを見つけます。セキュリティ > ポリシーを選択します。
前の手順で追加された承認ポリシーのリストを確認できます。
マージリクエスト承認ポリシーをテスト
よくできました。マージリクエスト承認ポリシーを作成しました。これをテストするには、いくつかの脆弱性を作成して結果を確認します:
左側のサイドバーで、検索または移動先を選択し、
sast-scan-result-policyプロジェクトを見つけます。コード > リポジトリを選択します。
追加( )ドロップダウンリストから、新しいファイルを選択します。
ファイル名フィールドに、
main.tsと入力します。ファイルの内容に、以下をコピーします:
// Non-literal require - tsr-detect-non-literal-require var lib: String = 'fs' require(lib) // Eval with variable - tsr-detect-eval-with-expression var myeval: String = 'console.log("Hello.");'; eval(myeval); // Unsafe Regexp - tsr-detect-unsafe-regexp const regex: RegExp = /(x+x+)+y/; // Non-literal Regexp - tsr-detect-non-literal-regexp var myregexpText: String = "/(x+x+)+y/"; var myregexp: RegExp = new RegExp(myregexpText); myregexp.test("(x+x+)+y"); // Markup escaping disabled - tsr-detect-disable-mustache-escape var template: Object = new Object; template.escapeMarkup = false; // Detects HTML injections - tsr-detect-html-injection var element: Element = document.getElementById("mydiv"); var content: String = "mycontent" Element.innerHTML = content; // Timing attack - tsr-detect-possible-timing-attacks var userInput: String = "Jane"; var auth: String = "Jane"; if (userInput == auth) { console.log(userInput); }コミットメッセージフィールドに、
Add vulnerable fileと入力します。Target Branch(ターゲットブランチ)フィールドに、
test-branchと入力します。変更をコミットするを選択します。新しいマージリクエストフォームが開きます。
マージリクエストを作成を選択します。
新しいマージリクエストで、
Create merge requestを選択します。パイプラインが完了するまで待ちます。これには数分かかる場合があります。
マージリクエストセキュリティウィジェットは、セキュリティスキャンが1つの潜在的な脆弱性を検出したことを確認します。マージリクエスト承認ポリシーで定義されているように、マージリクエストはブロックされ、承認を待機しています。
脆弱性をキャッチするために、マージリクエスト承認ポリシーを設定して使用する方法を理解できました。