GitLab Security Essentials - ハンズオンラボ: スキャン実行ポリシーを使用したスキャンの有効化
推定所要時間: 15 分
目標
コンプライアンススキャンを使用すると、インスタンス、グループ、プロジェクトのマージリクエストとセキュリティスキャンを制御できます。このラボでは、グループレベルでセキュリティポリシーとマージリクエストポリシーを有効化する方法を示します。
タスク A. セキュリティポリシーのセットアップ
My Test Group - XXXXX(X はユーザー名に置き換えてください)というグループに移動します。左サイドバーで Secure > ポリシー を選択します。
新しいポリシー を選択します。
スキャン実行ポリシー の下で ポリシーを選択 を選択します。
名前 に
Group security policyと入力します。ポリシーステータス が 有効 に設定されていることを確認します。
ポリシースコープ には、例外なくこのグループのすべてのプロジェクトに適用 を選択します。
設定タイプを
テンプレートからカスタムに変更します。アクションの下で、スキャンが SAST スキャン を実行するように設定します。Runner タグ が 自動的に選択 に設定され、セキュリティジョブテンプレート が デフォルト に設定されていることを確認します。
条件の下で トリガー を選択します。例外なし で すべてのブランチ に対してポリシーを実行するように設定します。
新しいポリシーで新しいプロジェクトを作成 を選択します。
マージ を選択して設定を完了します。
タスク B. スキャン実行ポリシーの動作確認
グループに移動します。
新しいプロジェクト を選択します。
ブランクプロジェクトを作成 を選択します。
プロジェクト名 フィールドに
Security Compliance Testingと入力します。他のすべてのオプションはデフォルトのままにして、プロジェクトを作成 を選択します。
プロジェクトリポジトリで + > 新しいファイル を選択します。
ファイル名 に
main.pyと入力します。ファイルに以下のコードを追加します:
print("Testing scanners!")変更を main ブランチにコミットします。
左サイドバーで ビルド > パイプライン を選択します。
コミットから作成されたパイプラインを選択します。
パイプライン内のジョブを確認します。
.gitlab-ci.yml設定が存在しないにもかかわらず、このコミットに対してSASTスキャンが実行されていることに注目してください。これにより、グループ内のプロジェクトは.gitlab-ci.ymlファイルにまだ定義されていない場合でも、常にセキュリティスキャンが実行されます。
タスク C. マージリクエストポリシー
セキュリティスキャンが整ったので、セキュリティ脆弱性を含むマージリクエストをブロックできることが理想的です。このセクションでは、この目標を達成するためのマージリクエストポリシーを作成します。
グループに移動します。
左サイドバーで Secure > ポリシー を選択します。
新しいポリシー を選択します。
マージリクエスト承認ポリシー の下で ポリシーを選択 を選択します。
名前 に
Merge Request Securityと入力します。ポリシーステータス の下で 有効 が選択されていることを確認します。
ポリシースコープ については、ポリシーが例外なくこのグループのすべてのプロジェクトに適用されていることを確認します。
ルール の下で、スキャンタイプ を セキュリティスキャン に設定します。
スキャナーには すべてのスキャナー を選択します。
すべてのデフォルトブランチ に対してスキャンを実行します。
スキャンに 例外なし で 任意の 脆弱性が見つかることを指定します。
重大度レベルを すべての重大度レベル に設定します。
ステータスを 新規 と すべての脆弱性の状態 に設定します。
アクション の下で オーナー ロールからの承認を 1 件要求します。
プロジェクト承認設定を上書き で、マージリクエストの作成者による承認を防止する と コミット作成者による承認を防止する のオプションのチェックを外すようにします。
これらのオプションをオフに設定しているのは、グループに 1 つのアカウントしかないためです。本番環境では、これらのオプションはしばしばオンに設定されます。
他のすべてのオプションはデフォルトのままにして、マージリクエストで設定 を選択します。
マージ を選択します。
タスク D. マージリクエストポリシーの動作確認
グループに戻ります。
Security Compliance Testing プロジェクトを選択します。
左サイドバーで コード > ブランチ を選択します。
新しいブランチ を選択します。
ブランチ名を
test_policyとし、ブランチを作成 を選択します。マージリクエストを作成 を選択します。
ドラフトとしてマーク のチェックを外し、マージリクエストを作成 を選択します。
コード > Web IDE で開く を選択します。
main.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 and push to 'test_policy'を選択します。MR に戻ります。
パイプラインが完了するまで待ちます。完了したら、
This merge request has policy violations and errorsというコメントに注目してください。これらの問題を解決するには、コード > Web IDE で開く を選択します。
main.pyファイルを開き、main.pyのコードを以下のように編集します:print("Attempting to connect to the server") print("Application authentication was successful")ソース管理アイコンを選択し、
Commit and push to 'test_policy'を選択します。MR に戻ります。
パイプラインが完了するまで待ちます。完了したら、
Security policy violations have been resolvedというコメントに注目してください。
ラボガイド完了
このラボ演習が完了しました。このコースの他のラボガイドを参照できます。
ご提案・改善点
ラボに変更を加えたい場合は、マージリクエストで変更内容を送信してください。
