GitLab 基礎 - ハンズオンラボ: セキュリティスキャナーの実装
完了までの推定時間: 30 分
目標
このラボでは、CI/CD パイプラインのオプション機能である SAST を使用して、コードのセキュリティ脆弱性を特定します。GitLab の脆弱性レポートは、各パイプライン実行で見つかった新旧の脆弱性を表示します。詳細はドキュメントを参照してください。
タスク A. SAST コンポーネントの検索
GitLab には様々な CI/CD コンポーネントが用意されており、プロジェクトに含めることができるビルド済みの CI/CD 設定です。GitLab インスタンスで利用可能なすべてのコンポーネントを確認するには:
左サイドバーで Search or go to を選択してください。
表示されるダイアログで Explore を選択してください。
左サイドバーで CI/CD Catalog を選択してください。これにより、GitLab インスタンスで利用可能なすべての CI/CD カタログアイテムの一覧が表示されます。このラボでは、プロジェクトに SAST を追加してください。SAST コンポーネントを選択してください。
CI/CD コンポーネントを選択すると、コンポーネントの使用方法と設定オプションを説明する Readme が表示されます。SAST コンポーネントでは、次のコードを使って含めることができると示されています:
include:
- component: $CI_SERVER_FQDN/components/sast/[email protected]
これを CI/CD ファイルに追加しましょう。
タスク B. SAST コンポーネントの追加
ページの左上にある Tanuki ロゴをクリックして CI/CD プロジェクトに移動し、
Cool App QAプロジェクトをクリックしてください。左サイドバーで Code > Branches を選択してください。
initial-codeブランチを選択してください。Build > Pipeline Editor を選択してください。
ファイルの先頭(image の下)に、現在のバージョンの SAST インポートを追加してください。
include: - component: $CI_SERVER_FQDN/components/sast/[email protected]ファイルの stages セクションに、以下のように
testという名前のステージを追加します:stages: - build - testこれらの変更を加えると、ファイルは次のようになります:
default: image: golang include: - component: $CI_SERVER_FQDN/components/sast/[email protected] stages: - build - test build go: stage: build script: - go build - ./arrayBranch が
initial-codeに設定されていることを確認してください。Commit changes を選択してください。変更をコミットした後、左サイドバーで Build > Pipelines に移動してください。
最新のパイプラインを選択してください。
semgrep-sast という名前の新しいジョブが表示されます。このジョブは、
includeキーワードを使用してインポートされたセキュリティスキャンです。
タスク C. run.py の追加と SAST スキャン結果の確認
このタスクでは、既知の脆弱性を含むファイルを追加し、SAST がそれを検出するかどうかを確認してください。
パンくずリストのプロジェクト名をクリックして Project overview ページに戻ってください。
ブランチのドロップダウンリストを使用して
initial-codeブランチに切り替えてください。プロジェクトランディングページの上部、ブランチのドロップダウンリストの右側にある (+) > This directory > New file をクリックしてください。
File name フィールドに
run.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")Commit changes を選択し、適切な Commit message を追加して、Commit changes ボタンをクリックしてください。
initial-codeブランチのコードをマージします。左側のナビゲーションペインで Build > Pipelines をクリックしてください。
パイプラインテーブルの行の上部で、running(まだ実行中の場合)または passed(パイプラインが完了した場合)のステータスラベルをクリックしてください。
SAST スキャンには少し時間がかかる場合があります。コーヒーでも飲みながらお待ちください。
SAST スキャンが完了したら、ページを更新して、パイプラインの詳細ページに表示される Security という新しいタブをクリックしてください。
一覧表示されている脆弱性をクリックして、
run.pyの SAST スキャンで検出された潜在的なセキュリティ問題について確認してください。問題を修正するためにコードを編集し(
subprocess.runコマンドを削除するなど)、変更をコミットしてみてください。脆弱性レポートにまだその問題が表示されますか?
ラボガイド完了
このラボの演習を完了しました。このコースの他のラボガイドを確認できます。
ご提案はありますか?
このラボへの変更を希望する場合は、マージリクエストを通じて変更を送信してください。
a1f3c26a)