The Source セキュリティとコンプライアンス
記事

AI時代におけるエンタープライズ規模のセキュリティおよびコンプライアンスポリシー管理

GitLabのセキュリティポリシー管理が、ソフトウェア開発のスピードに対応するセキュリティとコンプライアンスをどのようにサポートするかをご紹介します。

October 17, 2023 8分で読めます

ソフトウェア開発のスピードに追いつくことは、セキュリティチームにとって大きな課題です。中でも、開発プロセスにおけるセキュリティの重要性を軽視するリーダーや、デベロッパーとセキュリティ担当者の人数比などが障害となっています。さらに、AIが登場したことで、開発のスピードはより加速しています。企業がエンタープライズ規模へと成長する中で、開発のスピードはこれからも増していくでしょう。そのため、開発プロセスを管理するセキュリティツールも、その成長に対応するものでなければなりません。

アプリケーションセキュリティ(AppSec)チームは、脆弱性の管理や優先順位付けを適切に行う必要があります。GitLabのセキュリティポリシーや各種セキュリティツールを活用することで、組織はAppSecチームとデベロッパーチームの連携を強化し、脆弱性の検出、トリアージ、修正を効率的に行うことができます。また、セキュリティポリシーを活用することで、コンプライアンスの自動化やエンタープライズ規模の管理も実現できます。

スキャン対象を増やすことで脆弱性の早期発見や解決の機会が広がりますが、膨大なスキャン結果がAppSecチームの負担になることも事実です。スキャンを重ねることで脆弱性に対する理解は進みますが、どの問題に優先的に対応すべきかを見極めることがますます難しくなります。

脆弱性管理トリアージのプロセス

脆弱性のトリアージにおける現在の一般的なアプローチは以下のとおりです。

  • **共通脆弱性評価システム(CVSS):**CVSSは、脆弱性の重大度を評価するための標準的な方法です。CVSSスコアを活用することで、組織は脆弱性の影響をもとに優先順位を決定し、リソースを適切に割り当てることができます。

  • **リスクベースのスコアリング:**リスクベースのスコアリングは、脆弱性の悪用される可能性やビジネスへの影響を基に評価する方法です。組織は、アセットの価値、脅威アクターの能力、脆弱性の悪用頻度などの要素を考慮して、優先順位を付けることができます。- **脅威モデリング:**システムやアプリケーションに対する潜在的な脅威を特定して評価します。システムの設計やデータフロー、攻撃経路の詳細な分析を行い、悪用されるリスクの高い脆弱性に優先順位をつけます。このアプローチは、悪用される可能性の高い脆弱性に焦点を当てることで、リソースを効果的に配分するのに効果的です。

  • **ビジネスインパクト分析(BIA):**BIAは、脆弱性がビジネス運営や目標に与える影響を評価します。重要なアセットを特定し、組織への重要度を評価して、攻撃が成功した場合に生じる可能性のある影響を分析します。財務的、評判的、運営的な影響を考慮することにより、組織はビジネスの最も重要な機能にリスクを与える脆弱性に優先順位をつけることができます。

AIによって生成されたコードが増加することで、意図しない脆弱性も増えてきています。こうした方法は、企業が脆弱性を効果的にトリアージし、優先順位を決めるために不可欠です。では、これらの方法を実際どのように適用するか、具体的に見ていきましょう。

セキュリティポリシー管理

セキュリティポリシーは、ビジネスレベルのポリシーやコンプライアンス要件を、具体的な運用指針として分解し、DevSecOpsのプラクティスやソフトウェア開発ライフサイクルに組み込むための手段です。GitLabのセキュリティポリシーでルールを作成することにより、組織は脆弱性評価の詳細な基準を設定でき、実際に対処すべき問題を検出できるようになります。

セキュリティポリシーを使うと、セキュリティやコンプライアンスの要件やベストプラクティスをコードでインスタンス化して実行できます。スキャン実行ポリシーは、特定のプロジェクトでスキャナーを実行することを強制し、コードが本番環境にマージされる前に脆弱性や漏えいが検出されることを保証します。

また、マージリクエスト承認ポリシーを活用して、脆弱性への対応を効率化するカスタマイズワークフローを作成できます。このポリシーは、セキュリティおよびコンプライアンススキャナーの結果を評価し、定義したルールに基づいて、徹底的にレビューと承認を受けない限り、マージリクエストのマージを防止またはブロックします。

マージリクエスト承認ポリシーとスキャン実行ポリシーを活用することで、開発プロセスに監視機能を追加できます。これにより、人間またはAIによって書かれたコードが自動的にスキャンされ、ポリシー違反があった場合に、エンジニアリングとAppSecが協力して迅速に対応できるようになります。

マージリクエスト承認ポリシーにおける詳細なルールの設定

次のステップとして、以下に挙げるフィルターや属性をもとに、マージリクエスト承認ポリシー内できめ細かいルールを設定することも可能です。これらのルールにより、最も対応すべき脆弱性を特定し、静的なデータの中から重要な情報を見つけることができます。

  • **脆弱性の状態:**脆弱性のステータスに基づいて、セキュリティポリシーの対象を絞ることができます。通常は、トリアージが必要な新しく検出された脆弱性に焦点を当てます。また、過去に検出された脆弱性の重大度に基づいてルールを作成したり、無視された脆弱性を含める/除外することも可能です。

  • ブランチ: 特定のブランチに対してのみ適用できます。たとえば、重要なプロジェクトのデフォルトブランチに集中的に適用したり、保護ブランチにターゲットを絞ったりできます。

  • **修正の有無:**修正が可能でない依存関係とコンテナのスキャン結果から結果を除外します。通常、こうした問題は外部のアップストリームの変更に依存しており、実行可能ではありません。脆弱性からイシューを作成し、修正が可能になった時点で対応するための期日を設定できます。

  • **誤検出:**GitLabスキャナーが(コンテナや依存関係のスキャンにおいて)誤検出と判断した場合、脆弱性の状態を記録します。セキュリティポリシーはこれを利用して、セキュリティポリシーの監視対象から誤検出を除外することができます。これにより、AppSecエンジニアとデベロッパーはこれらの検出結果を無視して、そのままコードをマージすることができます。必要な場合は、脆弱性レポートから脆弱性を詳細に分析できます。

  • 期間またはサービス品質保証(SLA): 重大度の低い脆弱性については、組織が一時的に許容できる場合もありますが、妥当なSLAの範囲内で対応するよう計画する必要があります。セキュリティポリシーを使用すると、発見された脆弱性の重大度に基づいてSLAを設定できます。たとえば、中程度の脆弱性に対しては、承認なしで60日間のSLA内でマージを許可することができます(その後、期日付きのフォローアップのイシューで対応します)。しかし、その脆弱性が60日のSLAを超えた場合、マージリクエストはブロックされ、脆弱性の対応が求められます。

security-policies-rules-ds-all-filters

組織全体での重要な検出結果を優先する

脆弱性の膨大な量を処理するための一般的なアプローチの1つは、小さなことから始めて、組織全体で発見された最も重要な脆弱性を優先することです。脆弱性管理のトリアージSLAは、脆弱性の重大度に基づいて、脆弱性に対処するルールを定義することにより優先順位を付けるため、これを達成するのに役立ちます。ここでは、GitLabのマージリクエスト承認ポリシーを活用して、脆弱性の重大度レベルごとに異なるSLAを適用する方法をご紹介します。この例では、重大度が高い脆弱性が発見された場合、マージリクエストは30日間ブロックされず、デベロッパーはSLA期間内に問題を修正する時間を確保できます。

職務分離(SoD)の徹底

セキュリティポリシーはいろいろな方法で管理できますが、セキュリティの専門家と開発チームの間のSoDを確実にするために、GitLabの専用プロジェクト内で管理するのが一番です。ポリシーはYAML形式で管理されます。この「Policy as Code」のアプローチは、セキュリティチームを支援し、多くのメリットを提供します。これには、ポリシーの変更履歴をGitで管理することによる可視化、バージョン管理を通じて混乱を引き起こす変更を簡単に元に戻すことができる点、必要に応じてポリシー変更の監査と承認が可能である点、GitLab監査イベントによる可監査性、監査担当者に証拠として共有できる具体的な管理が含まれます。

gitlab security-policies policy-yml

まとめ

増え続ける脆弱性の取り扱いには、徹底したスキャンと効率的なトリアージおよび修正をバランスよく行う精密なアプローチが求められます。GitLabのセキュリティポリシーは、コラボレーションを促進し、カスタマイズ可能なポリシールールを定義する柔軟性を提供し、ビジネス要件やコンプライアンスフレームワークを正確に実現する手段となります。GitLabのセキュリティツールを活用し、カスタムフィルタと属性を適用することで、組織は脆弱性管理を効率化し、最も重大なリスクへの対応に集中することができ、その結果、全体的なセキュリティ体制を強化し、外部機関の要件を満たすことが可能となります。AIによって生成されたコードに対する懸念が高まる中でも、セキュリティの3つの柱(人、プロセス、技術)は変わりません。ビジネスプロセスにセキュリティポリシーを組み込むことで、こうしたリスクからビジネスを守ることができるのです。

GitLab DevSecOpsプラットフォームは、セキュリティポリシーをPolicy as Codeとして適用するだけでなく、多機能なセキュリティツールをまとめて提供します。2023年のグローバルDevSecOpsレポートによると、セキュリティ専門家の57%がソフトウェア開発に6つ以上のツールを使用しており、69%がツールチェーンの統合を望んでいます。多くのCISOがツール統合を重視しており、GitLabはツールチェーンの氾濫を抑制する役割を果たします。GitLabは、静的アプリケーションセキュリティテスト(Infrastructure as Code対応を含む)、シークレット検出、動的アプリケーションセキュリティテスト(API対応を含む)、依存関係スキャン、APIセキュリティなどの主要なセキュリティスキャンソリューションを提供しています。また、動的脆弱性レポートを活用したAppSecチーム向けの脆弱性管理も可能です。さらに、コンプライアンスフレームワーク、コンプライアンス遵守レポート、監査イベントを通じて、コンプライアンスの課題を解決します。

GitLabを活用したアプリケーションセキュリティ管理の詳細はリンクをご確認ください。

次回: GitLabのCISO、Josh Lemosが、一般的なセキュリティに関する不満を解決する方法を紹介します。

主要なポイント
  • AIの影響でさらに加速するソフトウェア開発に対応することは、セキュリティチームにとって課題となっています。強固なセキュリティを維持するには、効果的な脆弱性管理が欠かせません。
  • GitLabのセキュリティポリシーはコンプライアンスを自動化し、AppSecチームとデベロッパーチームの連携を促進することで、脆弱性の効率的な検出と修正を実現します。
  • CVSSやリスクベースのスコアリングといった優先順位付け手法を活用することで、脆弱性を管理し、AI生成コードの脆弱性が増加する中、重要な問題に確実に集中できます。