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の下)に、mainバージョンの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コマンドを削除するなど)、変更をコミットしてみてください。脆弱性レポートにまだその問題が表示されますか?
ラボガイド完了
このラボの演習を完了しました。このコースの他のラボガイドを確認できます。
ご提案はありますか?
ラボへの変更を希望する場合は、マージリクエストで変更を送信してください。
