チュートリアルスキャン結果ポリシーの設定

このチュートリアルでは、スキャン結果ポリシーを作成および設定する方法を説明します。これらのポリシーは、スキャン結果に基づいてアクションを実行するように設定できます。たとえば、このチュートリアルでは、マージリクエストで脆弱性が検出された場合に、指定した2人のユーザーの承認を必要とするポリシーを設定します。

前提条件:

このチュートリアルで使用するネームスペースは、以下のものでなければなりません:

  • このチュートリアルで使用するネームスペースは、以下を満たす必要があります。他のユーザが 2 人いない場合は、まずそのユーザを作成する必要があります。詳細は、ユーザの作成 を参照してください。

スキャン結果ポリシーを設定するには

  1. テストプロジェクトを作成します。
  2. スキャン結果ポリシーを追加します。
  3. スキャン結果ポリシーをテストします。

テストプロジェクトの作成

  1. 左サイドバーの上部にある「新規作成({plus})」と「新規プロジェクト/リポジトリ」を選択します。
  2. 空白プロジェクトの作成」を選択します。
  3. 各項目を入力してください。
    • プロジェクト名sast-scan-result-policy.
    • Enable Static Application Security Testing(SAST)チェックボックスを選択します。
  4. Create projectを選択します。

スキャン結果ポリシーの追加

次に、テストプロジェクトにスキャン結果ポリシーを追加します:

  1. 左側のサイドバーで、[検索]を選択するか、 sast-scan-result-policy プロジェクトを検索します。
  2. セキュリティ > ポリシーを選択します。
  3. 新しいポリシー] を選択します。
  4. スキャン結果ポリシー] で、[ポリシーの選択] を選択します。
  5. 各項目を入力してください。
    • お名前 sast-scan-result-policy
    • ポリシーの状態 有効
  6. 次のルールを追加します:

    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|
    
  7. アクションを以下のように設定します:

    THEN Require approval from | 2 | of the following approvers:
    
  8. ユーザーを2人選択します。
  9. マージリクエストで設定を選択します。

    アプリケーションは、リンクされたポリシーを保存する新しいプロジェクトを作成し、ポリシーを定義するマージリクエストを作成します。

  10. マージ] を選択します。
  11. 左側のサイドバーで、[検索]を選択するか、 sast-scan-result-policy プロジェクトを検索します。
  12. セキュリティ > ポリシーを選択します。

    前の手順で追加したポリシーの一覧が表示されます。

スキャン結果ポリシーのテスト

スキャン結果ポリシーを作成しました。それをテストするために、いくつかの脆弱性を作成し、結果をチェックしてください:

  1. 左側のサイドバーで、[検索]を選択するか、 sast-scan-result-policy プロジェクトを検索します。
  2. Code > Repositoryを選択します。
  3. Add({plus})] ドロップダウンリストから、[New file] を選択します。
  4. ファイル名]フィールドに「main.ts 」と入力します。
  5. ファイルの内容に以下をコピーします:

    // 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);
    }
    
  6. コミットメッセージフィールドにAdd vulnerable file.
  7. ターゲットブランチ]フィールドには、「test-branch 」と入力してください。
  8. 変更をコミット を選択します。新しいマージリクエストフォームが開きます。
  9. マージリクエストを作成を選択します。
  10. 新しいマージリクエストで、Create merge requestを選択します。

    パイプラインが完了するまで待ちます。数分かかるかもしれません。

マージリクエストセキュリティウィジェットは、セキュリティスキャンによって 1 つの脆弱性が検出されたことを確認します。スキャン結果ポリシーで定義されているように、マージリクエストはブロックされ、承認者を待っています。

これで、脆弱性を検出するためにスキャン結果ポリシーを設定して使用する方法がわかりました!