公開:2025年1月22日
17分で読めます
SOC2セキュリティ要件に対応する、GitLab DevSecOpsプラットフォームのアプリケーションセキュリティ機能について解説します。

機密性の高い顧客情報を扱う企業にとって、SOC(システムおよび組織管理)2コンプライアンスの達成は単なる推奨事項ではなく、多くの場合、必要不可欠です。SOC2は、米国公認会計士協会(AICPA)が策定した厳格な監査基準であり、サービス組織のセキュリティ、可用性、処理の完全性、機密性、プライバシーに関する管理体制を評価します。 SOC2は法的義務ではありませんが、ニュースで頻繁に報じられる情報漏洩事件の影響もあり、重要性が高まっています。SOC2コンプライアンスを達成することで、顧客データを適切に保管し、第三者によるセキュリティ管理の評価を受けていることが伝わり、顧客からの信頼を得られます。 本ガイドでは、SOC2コンプライアンスの要件を解説し、GitLabがどのように組織のアプリケーションセキュリティの最高水準の達成に役立つかをご紹介します。
SOC2コンプライアンスを達成するには、独立した監査担当者による監査が必要となります。監査では、組織の管理体制の設計および運用の有効性を評価します。監査プロセスは非常にコストがかかることが多く、多くの組織は監査前の準備を十分に行えていないのが現状です。通常、SOC2監査は約1年を要するため、効率的な事前監査プロセスを確立することが重要です。 SOC2コンプライアンスを達成するには、組織は以下のトラストサービス規準に基づく要件を満たす必要があります。
| 規準 | 要件 |
|---|---|
| セキュリティ | - 不正アクセスを防ぐための管理策を実施 - リスクの特定と軽減のための手順を確立 - セキュリティインシデントを検知および対応するためのシステムを構築 |
| 可用性 | - 合意されたとおりにシステムの稼働を保証 - 現在の使用状況と容量をモニタリング - システム可用性に影響を与えうる環境リスクを特定・対処 |
| 処理の完全性 | - システムの入力・出力の正確な記録を維持 - システムエラーを迅速に特定し修正する手順を実施 - 製品・サービスが仕様を満たすよう処理作業を定義 |
| 機密性 | - 機密情報を特定し保護 - データ保持期間のポリシーを策定 - 保持期間終了後、機密データを安全に破棄する方法を確保 |
| プライバシー | - 機密個人情報を収集する前に同意を取得 - プライバシーポリシーを明確かつわかりやすく伝達 - 法的手段を通じて信頼できる情報源からのみデータを収集 |
なお、これらの要件は一度達成すれば終わりではなく、継続的に準拠する必要があります。監査担当者は一定期間にわたる管理策の有効性の有無を評価します。
GitLabには、SOC2のセキュリティ要件を満たすためにすぐに活用できる機能が数多く用意されています。
| セキュリティ要件 | 対応機能 |
|---|---|
| 不正アクセスを防ぐための管理策を実施 | - 非公開のイシュー/マージリクエスト - カスタムロールときめ細かい権限設定 - セキュリティポリシー - 検証済みコミット - コンテナイメージの署名 - CodeOwners - 保護ブランチ |
| セキュリティインシデントを検知および対応するためのシステムを構築 | - 脆弱性スキャン - マージリクエスト内セキュリティウィジェット - 脆弱性インサイトコンプライアンスセンター - 監査イベント -脆弱性レポート依存関係リスト - AIによる脆弱性の説明 - AIによる脆弱性の修正 |
| リスクの特定と軽減のための手順を確立 | 上記すべてのツールを活用して、セキュリティチームが脆弱性発見時の対応および軽減手順を確立できます |
それでは、各要件に対応するセキュリティ機能についてさらに詳しく解説しましょう。なお、上記のほとんどの機能は、GitLab Ultimateプランのサブスクリプションおよび適切なロールと権限設定が必要となります。詳細については、該当するドキュメントをご確認ください。
組織の資産を保護して、規制遵守を達成し、業務の継続性を維持し、信頼を築くためには、強固なアクセス制御の実装が不可欠です。GitLabでは、最小権限の原則に従ったアクセス制御を実装でき、不正アクセスからの保護を実現します。ここでは以下の項目について簡単に紹介します。
GitLabのセキュリティポリシー(いわゆるガードレール)を使用すると、セキュリティおよびコンプライアンスチームは組織全体で一貫した制御を実装できます。これにより、セキュリティインシデントの予防、コンプライアンス基準の維持、一括でのベストプラクティスの自動適用によるリスクの低減が可能になります。
マージリクエスト承認ポリシーの活用例
以下のようなポリシーを利用できます。
セキュリティポリシーの作成方法については、GitLabのセキュリティポリシーに関するページをご覧ください。
GitLabのカスタム権限を使用すると、標準のロールベースの権限ではできないきめ細かいアクセス制御を実装できます。これにより、以下のような利点が得られます。

ロールと権限の設定(カスタムロールを含む)
カスタムロールに関するページを参照して、きめ細かな権限を設定できるカスタムロールの作成方法をご確認ください。
GitLabでは、次の2つの主要な機能により、コードに変更を加えられるユーザーをさらに厳密に管理できます。
これらの機能を組み合わせることで、適切な担当者がレビュー・承認を行う体制を構築でき、コードのセキュリティと品質を高い水準で維持できます。
保護ブランチの設定
保護ブランチとCodeOwnersの設定方法については、保護ブランチおよびCodeOwnerのページをご参照ください。
コミットにデジタル署名を追加することで、なりすましではなく、本当に自分が作成したものであることを証明できます。デジタル署名は、自分だけが発行できる「電子印鑑」のようなものです。GitLabに公開GPG鍵を登録すれば、署名が正しいかを確認でき、マッチすればそのコミットにはVerified(検証済み)のマークが付きます。さらに、未署名のコミットを拒否したり、本人確認ができていないユーザーのコミットをブロックしたりするルールも設定可能です。

検証済み署名付きコミット コミットには以下の方法で署名できます。
検証済みコミットの詳細は、署名付きコミットに関するページをご覧ください。
強固なセキュリティ対策状況の維持、規制遵守の確保、被害の最小化、変化し続ける脅威への迅速な対応には、セキュリティインシデントを検知し対応するシステムの構築が不可欠です。 GitLabには、アプリケーションのライフサイクル全体を対象とするセキュリティスキャンと脆弱性管理機能が備わっています。以下の機能について簡単に説明します。
GitLabには以下のような多様なセキュリティスキャナーが備わっており、アプリケーションのライフサイクル全体をカバーします。
stages:
- test
include:
- template: Jobs/Dependency-Scanning.gitlab-ci.yml
- template: Jobs/SAST.gitlab-ci.yml
これらのジョブは環境変数やGitLabジョブ構文を使ってすべて設定可能です。パイプラインが起動すると、セキュリティスキャナーが動作し、現在のブランチとターゲットブランチの差分から脆弱性を検出します。検出された脆弱性はマージリクエスト(MR)内で確認でき、コードがターゲットブランチにマージされる前に細部まで監視する必要があります。MRには脆弱性に関して以下の情報が表示されます。

脆弱性を紹介するMRの表示画面
デベロッパーはこれらの情報を活用して、セキュリティチームのワークフローを妨げることなく脆弱性を修正できます。デベロッパーは、レビュープロセスにかかる時間を短縮するために、理由を添えて脆弱性を無視したり、もしくは脆弱性を追跡するための非公開イシューを作成したりすることが可能です。
マージリクエストのコードがデフォルトブランチ(通常は本番環境レベル)にマージされると、脆弱性レポートにセキュリティスキャナーの結果が反映されます。セキュリティチームはこれらの結果をもとに、本番環境で見つかった脆弱性の管理・トリアージを行います。
バッチステータス設定が表示された脆弱性レポート
脆弱性レポート内の脆弱性の説明をクリックすると、MRと同じ脆弱性データが表示される脆弱性ページに移動します。これらの情報は、影響評価や修正作業の際に信頼できる唯一の情報源として活用できます。脆弱性ページでは、GitLab DuoのAI機能を使って脆弱性の説明を生成したり、修正のためのMRを作成したりして、解決までの時間を短縮できます。
GitLabに含まれるセキュリティスキャナーや脆弱性管理の詳細は、アプリケーションセキュリティに関するページをご覧ください。
GitLabはソフトウェアで使用されているコンポーネント(部品)の詳細をリスト化できます。これはコードの「材料表」のようなもので、ソフトウェア部品表(SBOM)と呼ばれます。プロジェクトで使われている外部コードに関して、直接使われているコードやそれらが依存するコードも含め、すべてを把握できます。各項目について、使用バージョンやライセンス情報、既知のセキュリティ問題の有無も表示されます。これにより、自社のソフトウェアの構成を把握し、潜在的なリスクを見つけやすくなります。

グループレベルの依存関係リスト(SBOM)
依存関係リストのアクセス方法と活用法は、依存関係リストに関するページをご参照ください。
GitLabは、誰がいつ何を変更したかなど、システム内のすべての動きを記録します。コードを監視するセキュリティカメラのようなものだと考えてください。これにより、以下が可能になります。

プロジェクトレベルの監査イベント
監査イベントの詳細については、監査イベントに関するページをご覧ください。
GitLabのセキュリティダッシュボードは、すべてのセキュリティリスクを1か所で表示する「コントロールルーム」のような機能です。複数のセキュリティツールを個別に確認する必要はなく、全プロジェクトの調査情報を1つの画面でまとめて把握できます。これにより、プロジェクトに潜む問題の早期発見と迅速な対応が可能になります。

グループレベルのセキュリティダッシュボード
セキュリティダッシュボードの詳細については、セキュリティダッシュボードに関するページをご覧ください。
脆弱性には特定のライフサイクルがあります。たとえば、セキュリティポリシーを使って、脆弱なコードを保護ブランチにマージするには承認が必要という手続きを設けることができます。さらに、本番環境で脆弱なコードが検出された場合、優先的に対応し、評価・修正・検証を行うという流れを定めることも可能です。
GitLabの詳細、またGitLabがSOC2コンプライアンスの達成とセキュリティ対策状況の強化にどのように役立つかについては、以下のリソースをご覧ください。
このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成してあなたの声を届けましょう。
フィードバックを共有する