GitLab Security Essentials - ハンズオンラボ: スキャン実行ポリシーを使用したスキャンの有効化と実行
推定所要時間: 15 分
目標
コンプライアンススキャンを使用すると、インスタンス、グループ、プロジェクト内のマージリクエストとセキュリティスキャンを制御できます。このラボでは、グループレベルでセキュリティポリシーとマージリクエストポリシーを有効化する方法を実演します。
タスク A. セキュリティポリシーの設定
グループに移動します。
左サイドバーで Secure > Policies を選択します。
New policy を選択します。
Scan execution policy の下で Select policy を選択します。
Name に
Group security policyと入力します。Policy status が Enabled に設定されていることを確認します。
Policy Scope で、**このグループ内のすべてのプロジェクト(例外なし)**に適用します。
Actions で、SAST スキャンを実行するスキャンを設定します。Runner Tags が selected automatically に設定され、Security job template が default に設定されていることを確認します。
Conditions で Triggers を選択します。ポリシーをすべてのブランチで例外なしで実行するように設定します。
Configure with a merge request を選択します。
Merge を選択して設定を完了します。
タスク B. セキュリティポリシースキャンの動作確認
グループに移動します。
New project を選択します。
Create blank project を選択します。
Project name フィールドに
Security Compliance Testingと入力します。他のすべてのオプションをデフォルトのままにして Create project を選択します。
プロジェクトリポジトリで + > New file を選択します。
Filename に
main.pyと入力します。ファイルに次のコードを追加します。
print("Testing scanners!")Commit changes を選択します。
左サイドバーで Build > Pipelines を選択します。
コミットから作成されたパイプラインを選択します。
パイプライン内のジョブを確認します。
.gitlab-ci.yml設定が存在しないにもかかわらず、このコミットでSASTスキャンが実行されていることを確認します。
これで、.gitlab-ci.yml ファイルにまだ定義されていなくても、グループ内のプロジェクトには常にセキュリティスキャンが実行されます。
タスク C. マージリクエストポリシー
セキュリティスキャンが整備されたので、セキュリティ脆弱性を含むマージリクエストをブロックできるようにすると理想的です。このセクションでは、この目標を達成するためのマージリクエストポリシーを作成します。
グループに移動します。
左サイドバーで Secure > Policies を選択します。
New policy を選択します。
Merge request approval policy の下で Select policy を選択します。
Name に
Merge Request Securityと入力します。Policy status で Enabled が選択されていることを確認します。
Policy Scope で、例外なしにこのグループ内のすべてのプロジェクトにポリシーを適用します。
Rules でスキャンタイプを Security Scan に設定します。
スキャナーには All scanners を選択します。
すべてのデフォルトブランチに対してスキャンを実行します。
スキャンに例外なしで任意の脆弱性が見つかることを指定します。
深刻度レベルを All severity levels に設定します。
ステータスを New と All vulnerability states に設定します。
Actions で Owner ロールからの承認を 1 件要求します。
Override project approval settings で、Prevent approval by merge request’s author と Prevent approval by commit author オプションのチェックを外してください。
グループに 1 つのアカウントしかないため、これらのオプションをオフに設定しています。本番環境では、これらはしばしばオンに設定されます。
他のすべてのオプションをデフォルトのままにして Configure with a merge request を選択します。
Merge を選択します。
タスク D. マージリクエストポリシーの動作確認
グループに戻ります。
Security Compliance Testing プロジェクトを選択します。
左サイドバーで Code > Branches を選択します。
New branch を選択します。
ブランチ名を
test_policyにして、Create branch を選択します。Create merge request を選択します。
Mark as draft のチェックを外して、Create merge request を選択します。
Code > Open in Web IDE を選択します。
main.pyファイルを開いて次のコードを追加します。in = input("Enter your server ip: ") subprocess.run(["ping", in]) print("Attempting to connect to the server") print("Application authentication was successful")ブランチアイコンを選択して、
Commit and push to 'test_branch'を選択します。MR に戻ります。
パイプラインが完了するまで待ちます。完了したら、
This merge request has policy violations and errorsというコメントに注目します。これらの問題を解決するには、Code > Open in Web IDE を選択します。
main.pyファイルを開いてmain.pyのコードを次のように編集します。print("Attempting to connect to the server") print("Application authentication was successful")ブランチアイコンを選択して、
Commit and push to 'test_branch'を選択します。MR に戻ります。
パイプラインが完了するまで待ちます。完了したら、
Security policy violations have been resolvedというコメントに注目します。
ラボガイド完了
このラボ演習を完了しました。このコースの他のラボガイドを参照できます。
ご提案
GitLab Security Essentials ハンズオンガイドへの変更を提案される場合は、マージリクエストで提出してください。
