GitLabとGit Essentials - ハンズオンラボ: 静的アプリケーションセキュリティテスト(SAST)

このハンズオンガイドでは、コード内のセキュリティの脆弱性を追跡するためのSASTジョブの設定方法について説明します。"

完了までの見積時間: 30分

目的

このラボでは、CI/CDパイプラインのオプション機能であるSASTを使用して、コード内のセキュリティの脆弱性を特定します。GitLabの脆弱性レポートでは、各パイプライン実行で見つかった古いまたは新しい脆弱性が表示されます。詳細については、ドキュメントを参照してください。

タスクA. CI TestプロジェクトでSASTを有効にする

  1. CI Testプロジェクトに移動します。

  2. .gitlab-ci.ymlファイルをクリックし、編集 > 単一ファイルを編集をクリックします。

  3. 次の行をgitlab-ci.ymlファイルの最後にコピーします:

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

    SASTスキャンを.gitlab-ci.ymlファイルに統合する方法について詳しくは、ドキュメントを参照してください。

  4. 現在の.gitlab-ci.ymlファイルは次のようになります:

    stages:
      - build
      - test
    
    build1:
      stage: build
      script:
        - echo "Do your build here"
    
    test1:
      stage: test
      script:
        - echo "Do a test here"
        - echo "For example run a test suite"
    
    include:
      - template: Jobs/SAST.gitlab-ci.yml
    

    includeは、CI/CD構成で外部のYAMLファイルを含めることができます。1つの長い.gitlab-ci.ymlファイルを複数のファイルに分割して可読性を向上させたり、同じ構成を複数の場所で重複させることを減らすことができます。includeキーワードについて詳しくは、ドキュメントを参照してください。

  5. 適切なコミットメッセージを入力します。

  6. ターゲットブランチmainに設定します。

  7. 変更をコミットボタンをクリックします。

タスクB. run.pyを追加し、SASTスキャン結果を確認する

このタスクでは、既知の脆弱性を持つファイルを追加し、SASTがそれを検出するかどうかを確認します。

  1. パンくずリストセクションでプロジェクト名をクリックして、プロジェクトの概要ページに戻ります。

  2. プロジェクトランディングページの上部で、ブランチドロップダウンの右側にある、(+) > このディレクトリ > 新しいファイルをクリックします。

  3. ファイル名フィールドにrun.pyと入力してください。

  4. 以下の内容をファイルにコピーしてください:

    import subprocess
    
    in = input("Enter your server ip: ")
    subprocess.run(["ping", in])
    
    print("Attempting to connect to the server")
    print("Application authentication was successful")
    
  5. 適切なコミットメッセージを追加してください。

  6. ターゲットブランチmainに設定してください。

  7. 変更をコミットボタンをクリックしてください。

  8. 左側のナビゲーションパネルでビルド> パイプラインをクリックしてください。

  9. パイプラインのテーブルの行の上部で、running(まだ実行中の場合)またはpassed(パイプラインが完了した場合)ステータスラベルをクリックしてください。

    SASTスキャンには少し時間がかかる場合がありますので、待っている間にコーヒーを飲んでください。

  10. パイプラインが完了したら、左側のナビゲーションパネルでSecure > 脆弱性レポートをクリックしてください。

  11. いずれかの脆弱性をクリックし、run.pyでSASTスキャンで検出された潜在的なセキュリティ問題について読んでください。

  12. 問題を修正するためにコードを編集しても構いません(例:subprocess.runコマンドを削除する)、変更をコミットしてください。脆弱性レポートは問題がまだ存在するとしていますか?

ラボガイド完了

このラボ演習が完了しました。他のこのコースのラボガイドをご覧いただけます。

提案はありますか?

ラボに変更を提案したい場合は、マージリクエストを介して提出してください。