GitLab Security Essentials - ハンズオンラボ: ライセンスコンプライアンスの有効化と設定

このハンズオンガイドでは、GitLab プロジェクトでライセンスコンプライアンスを有効化して使用する方法を解説します。

推定所要時間: 15 分

目標

プロジェクトに新しい依存関係を追加するときは、依存関係のライセンスがプロジェクトに与える影響を慎重に検討する必要があります。ライセンス要件が満たされていることを確認するために、新しく検出されたライセンスに対して承認を必要とするポリシーを追加できます。

依存関係の脆弱性をスキャンするほかに、依存関係スキャナーは各依存関係が使用するライセンスも記録します。

ライセンスコンプライアンスレポートは、プロジェクトポリシーに準拠していないプロジェクトで検出されたすべてのライセンスのリストを生成します。

前提条件

  1. ラボ 1 で作成した Security Labs プロジェクトをブラウザで開きます。

    タブを閉じたかリンクを失った場合は、セルフペーストレーニングの場合はブラウザのタブを開いて URL に https://gitlab.com/gitlab-learn-labs と入力すると、プロジェクトが履歴に表示されるはずです。

  2. このラボを開始する前に、CI/CD パイプラインで依存関係スキャンのテンプレートが有効になっていることを確認してください。確認するには、.gitlab-ci.yml ファイルを確認します。include の下に Security/Dependency-Scanning.gitlab-ci.yml テンプレートが表示されているはずです。

    include:
    - template: Security/Dependency-Scanning.gitlab-ci.yml
    

    ライセンススキャンは依存関係スキャナーによって完了されます。このテンプレートはプロジェクトのライセンスコンプライアンスレポートを生成して表示するために必要です。

タスク A. ライセンスコンプライアンススキャン

  1. Secure > Dependency list に移動します。

  2. ライセンスをクリックするとライセンスとコンプライアンス要件の詳細を確認できます。

タスク B. ライセンスの承認と拒否

チームが MIT ライセンスを承認したと仮定します。MIT ライセンス以外のライセンスが依存関係に存在する場合は、マージリクエストを完了する前に承認が必要です。

  1. Secure > Policies に移動します。

  2. New policy ボタンをクリックします。

  3. Merge request approval policy > Select policy をクリックします。

  4. ポリシーの名前(例: ScanApprovedPolicy)と説明を入力します。

  5. Policy statusEnabled に設定します。

  6. Rules で、Select scan type ドロップダウンメニューを License Scan に設定します。マージリクエストのターゲットとして all protected branchesNo exceptions が選択されていることを確認します。

  7. Status is ドロップダウンメニューを Newly Detected に設定します。

  8. License is セクションの最初のドロップダウンを Except に設定します。

    マルチセレクトドロップダウンを閉じるには、その外側をクリックしてください。

  9. Select license types ドロップダウンで MIT License をクリックします。類似した名前のライセンスがいくつかあるため、正しいものを選択してください。

  10. Actions セクションで、個人ユーザーから 1 件の承認を要求します。承認ユーザーとして自分のユーザー名をクリックします。

  11. Override project approval settings のチェックボックスを選択したままにして、Configure with a merge request をクリックします。

  12. 作成されたマージリクエストで Merge ボタンをクリックします。

  13. ポリシーを作成すると、GitLab はポリシーを管理するための新しいプロジェクトを作成します。Merge をクリックした後、元のプロジェクトに戻る必要があります。

タスク C. パイプラインのライセンスコンプライアンスレポートを表示する

  1. 左サイドバーで Build > Pipelines を選択します。

  2. ページ右上の New pipeline ボタンを選択します。

  3. すべてのオプションをデフォルト値のままにして、New pipeline を選択します。

  4. パイプラインを監視して、各ジョブが正常に完了するまで待ちます。

  5. すべてのジョブが完了したら、ページを更新します。Licenses タブを選択します。

  6. MIT License 以外のすべてのライセンスがポリシー違反として説明されていることを確認します。このレポートは、承認していないライセンスを含む可能性のある既存の依存関係にフラグを立てるのに役立ちます。

タスク D. 拒否されたライセンスを持つ依存関係を追加する MR を作成する

  1. add-dnspython-dependency という名前の新しいブランチを作成します。

  2. add-dnspython-dependency ブランチ(main ブランチではなく!)に新しい依存関係を追加するために、requirements.txt の末尾に新しい行として dnspython==2.1.0 をペーストします。

  3. Create merge request ボタンをクリックします。

  4. すべてのフィールドをデフォルト値のままにして Create merge request をクリックします。

  5. マージリクエストのパイプラインが完了するまで待ちます。

  6. パイプラインが完了したら、ページを更新します。ライセンスコンプライアンススキャンが表示され、1 件の新しいライセンスが検出されます。

  7. マージリクエストの概要に戻ります。

  8. ライセンスコンプライアンスレポートには、プロジェクトポリシーに準拠しなくなったすべてのライセンスがリストされます。マージステータスが Requires 1 approval from policy と表示されることに注意してください。

  9. マージリクエストのアクティビティに新しいコメントも追加され、ポリシー違反が検出されたことが示されます。

    このマージリクエストは、dnspython が承認されたライセンスを使用していないため、追加の承認が必要になりました。レビュアーはマージを進める前にライセンスが問題ないかどうかを確認できます。

タスク E. ラボのポリシークリーンアップ

承認なしでブランチを main にマージできるようにするために、ポリシーを無効化するのがベストです。

  1. Secure > Policies に移動します。

  2. 作成したポリシーをクリックします。Edit policy をクリックします。

  3. Delete Policy をクリックします。

  4. 作成されたマージリクエストで Merge をクリックします。

ラボガイド完了

このラボ演習を完了しました。このコースの他のラボガイドを参照できます。

ご提案

GitLab Security Essentials ハンズオンガイドへの変更を提案される場合は、マージリクエストで提出してください。