セキュリティ設定プロファイルを管理する
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
セキュリティ設定プロファイルは、プロジェクト全体でセキュリティスキャナーをどのように、いつ実行するかを定義する集中化された設定です。セキュリティ設定プロファイルを使用して、組織全体のセキュリティスキャナーを効率的に管理します。プロファイルベースのアプローチでは、最小限の手動セットアップでベストプラクティスが適用されます。
概要については、セキュリティ設定プロファイルの紹介をご覧ください。
グループにプロファイルを適用すると、そのグループ内の個々のプロジェクトすべてに適用されます。プロファイルはグループ自体にはアタッチされず、プロファイル間やサブグループ間には継承はありません。
デフォルトプロファイルを使用すると、数分で、最小限の設定で事前設定済みのセキュリティスキャンを有効にできます。
セキュリティスキャナーを設定する
プロファイルを評価および管理するには、グループのセキュリティインベントリを中央ダッシュボードとして使用します。
テストカバレッジをレビューする
グループ内のSAST、DAST、シークレット検出のようなスキャナーのハイレベルなステータス(有効、Not Enabled、または失敗)を表示するには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- セキュリティ > セキュリティインベントリを選択します。
- セキュリティインベントリで、テストカバレッジ列をレビューします。
個々のプロジェクトのカバレッジを変更する
特定のプロジェクトを設定するには、次の手順に従います:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- セキュリティ > セキュリティインベントリを選択します。
- プロジェクトの横にある縦方向の省略記号( )を選択し、Manage tool coverageを選択します。
- 個々のスキャナーをオンまたはオフにします。
複数のプロジェクトにプロファイルを適用する
時間を節約するために、複数のプロジェクトにセキュリティ設定を一度に適用できます:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- セキュリティ > セキュリティインベントリを選択します。
- 複数のプロジェクトまたはサブグループ全体を選択して、設定を適用します。
- Bulk Actionドロップダウンを選択し、セキュリティスキャナーの管理を選択します。
- デフォルトプロファイルをすべてに適用を選択して、選択範囲全体のセキュリティ対策状況を標準化します。
デフォルトプロファイル
GitLabには、事前設定済みのスキャナー設定であるデフォルトプロファイルが用意されているため、最小限の設定でセキュリティスキャンを有効にできます。
シークレット検出プロファイル
シークレット検出プロファイルを適用すると、開発ワークフロー全体でシークレットに対する推奨されるベースライン保護が有効になります。プロファイルは以下のスキャントリガーを有効にします:
- Push protection: すべてのGitプッシュイベントをスキャンし、シークレットが検出されたプッシュをブロックすることで、シークレットがコードベースに侵入するのを防ぎます。
- マージリクエストパイプライン: 新しいコミットがオープンなマージリクエストのあるブランチにプッシュされるたびに、自動的にスキャンを実行します。結果は、マージリクエストによって導入された新しい脆弱性にスコープされます。ターゲット: すべてのブランチ。
- ブランチパイプライン(デフォルトのみ): 変更がデフォルトブランチにマージまたはプッシュされると自動的に実行され、デフォルトブランチのシークレット検出の状況を完全に把握できます。ターゲット: デフォルトブランチ。
プロファイルの詳細
シークレット検出プロファイルに関する技術的な詳細を表示するには、次の手順に従います:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- セキュリティ > セキュリティインベントリを選択します。
- シークレット検出プロファイルを選択します。
- 次の情報をレビューします:
- アナライザータイプ: プロファイルの種類(例: シークレットの検出)。
- スキャントリガー: プロファイルがサポートするトリガー(例: Push Protection、マージリクエストパイプライン、Branch Pipelines)。
- 状態: カバレッジステータスインジケーターを使用して、現在のコンテキストに対してプロファイルが現在アクティブであるか無効であるかを表示します。
カバレッジステータスインジケーター
システムは、プロジェクトが保護されているかどうかを示すために、インベントリで視覚的なブロックを使用します:
- 緑色のバー(全面表示): スキャナーが完全に有効化され、稼働しています。
- グレー/空のバー: スキャナーはまだ設定されていないか、有効化されていません。
- 一部のみ表示されたバー: 一部の保護がアクティブです(例: プロファイルで利用可能な一部のトリガーは有効になっていますが、その他は無効です)。
- ツールチップ: 各カバレッジバーにカーソルを合わせると、パイプラインベースのスキャンにおける最終スキャンの日付と、該当パイプラインのステータスを確認できます。
パイプラインベースのスキャンとは異なり、プッシュ保護はプッシュプロセス中にリアルタイムで実行されるため、最終スキャン日がありません。
トラブルシューティング
セキュリティ設定プロファイルを使用する際に、次の問題が発生する可能性があります。
プッシュ保護の最終スキャン日が表示されない
プッシュ保護はイベントベースであり、スケジュールベースではありません。これはgit pushプロセス中にシークレットをリアルタイムでインターセプトします。pushコマンドの実行時に有効となるため、パイプラインベースのスキャナーのような最終スキャンの日付は存在しません。
スキャナーのステータスがダッシュボードではアクティブだが、インベントリのツールチップでは有効になっていない
これは、プロジェクトがレガシー設定を使用していると同時に、新しいプロファイルが割り当てられている場合に発生する可能性があります。
この問題を解決するには、次の手順に従います:
- 最も正確な現在のプロファイル状態については、Security Configurationページを確認してください。
- 必要に応じて、
.gitlab-ci.ymlファイルからレガシースキャナーの設定を削除して、プロファイルベースの設定のみに依存するようにします。
インベントリのツールチップは、レガシー設定とプロファイルベースの設定の両方の結合されたステータスを反映するように改良されています。
レガシーとプロファイルベースの設定の違いについて
レガシースキャナーの設定からプロファイルベースの設定に移行する場合は、次の違いに注意してください:
- レガシー設定: スキャナーを有効にするには、YAMLファイルまたは個々のプロジェクト設定を手動で編集する必要があります。
- プロファイルベースの設定: 中央集権型システムを使用し、コードを修正することなく、複数のプロジェクトにデフォルトプロファイルを一度に適用できます。
プロファイルベースの設定を使用することで、プロジェクト間での管理が容易になり、一貫性も向上します。