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