Content last updated 2026-10-13

GitLab セキュリティコンプライアンスコントロール

Visibility: Audit

セキュリティコントロールとは何か?

セキュリティコントロールは、組織の資産およびデータに対するリスクを軽減または緩和するために実装される保護策と対策です。

コントロールの説明:

コントロールの説明は、特定のセキュリティ要件または活動を定義する明確で簡潔な記述です。GCF で適切に書かれたコントロールの説明は、以下の特徴があります。

  • 能動的でプロフェッショナルな言葉を使用する
  • 何をすべきか、またはどのようなセキュリティ対策が整備されているかを記述する
  • ベンダー固有の用語を含まず一般的に書かれている(再利用可能でベンダー中立性を維持するため)
  • 監査人による実行とテストが可能である
  • 目的を明確に伝える

例:

  • EPM-12: ノートパソコンは、データ流出を緩和するためにポータブルストレージデバイスの使用を防止するようデフォルトで構成されており、例外は文書化されマネジメントによって承認されます。
  • PSM-6: セキュリティ意識向上トレーニングは、入社時およびその後年 1 回チームメンバーが完了することが求められます。トレーニングは、組織のセキュリティポリシー、業界のセキュリティベストプラクティス、職務上の責任に関連する脅威の状況などのトピックをカバーします。
  • AIM-6: AI システムは、精度、性能、品質基準が満たされることを保証するために、定義された基準とテスト方法論を使用して検証および妥当性確認されます。

コントロールのオーナーシップ

コントロールが効果的に運用されるためには、明確なオーナーシップとアカウンタビリティが確立される必要があります。コントロールの設計、運用、証跡収集について、2 つの主要な役割が責任を負います。

Control Owner

  • コントロール全体およびそれが緩和するリスクに対するアカウンタビリティを持つ
  • コントロール上の不備および監査での発見事項について、コントロールが監査対応可能な状態になるよう修正する責任を持つ
  • コントロールの実行をスチュワードや責任者に委任することはできるが、最終的なアカウンタビリティを保持する
  • コントロール設計の変更および主要な運用調整を承認する

Process Owner

  • コントロールが実際にどのように運用されているかを理解する専門家
  • Compliance チームと連携して証跡を提供し、コントロールの実装を説明する
  • 技術的な詳細、システムアクセス、またはテストのための運用上の文脈を提供することがある
  • 多くの場合、実際にコントロール活動を実行または監督する人物

注: Control Owner と Process Owner は同一人物の場合もあります。

GitLab Control Framework (GCF)

私たちは現在および将来のセキュリティコンプライアンスニーズに対して包括的なアプローチを取ります。古い大企業は各セキュリティコンプライアンス要件を個別に扱う傾向があり、その結果、独立した Security Compliance チームが内部チームに対して重複した複数のリクエストを送ってしまいます。たとえば、そのような会社では、特定のデータベースがどのように暗号化されているかについて、SOC2 要件に基づいて 1 人のデータベースエンジニアに証跡提出を求め、次に ISO 要件で再度求め、さらに PCI 要件で再度求めるといったことが起こります。

これに対処するため、私たちはGitLab Control Framework (GCF) と呼ばれる共通コントロールフレームワークを開発しました。このアプローチは以下のように可視化できます。

graph TD;
    SOC2_Requirement1-->Team1;
    SOC2_Requirement1-->Team2;
    SOC2_Requirement2-->Team1;
    SOC2_Requirement2-->Team2;
    PCI_Requirement1-->Team1;
    ISO_Requirement1-->Team2;

GitLab の効率性価値を踏まえ、私たちは複数の基礎要件に 1 つのコントロールで対応するセキュリティおよび AI コントロールのセットを作成しました。これにより、Security Compliance チームは Control Owner へのリクエストを減らし、さまざまな監査に必要なすべての証跡を一度に効率的に収集できます。このアプローチは以下のように可視化できます。

graph TD;
    SOC2_Requirement1-->Control1;
    PCI_Requirement1-->Control1;
    SOC2_Requirement2-->Control2;
    ISO_Requirement1-->Control2;
    Control1-->GCF;
    Control2-->GCF;
    GCF-->Team1;
    GCF-->Team2;

GCF の方法論

セキュリティコンプライアンスの目標と要件が進化するにつれて、セキュリティコントロールフレームワークに関連する要件と制約も進化してきました。私たちの GCF は、GitLab 独自のインフラストラクチャ、ビジネスモデル、セキュリティ体制のために特別に開発された独自のコントロールセットです。

GCF は以下の包括的な分析プロセスを通じて開発されました。

  1. 私たちが維持し、また取得を目指している認証およびアテステーション(SOC 2、ISO 27001、ISO 42001、PCI DSS、FedRAMP など)からのコンプライアンス要件を分析
  2. 業界のベストプラクティスに沿うことを保証するために、NIST Cybersecurity Framework (CSF)、NIST SP 800-53、Secure Controls Framework (SCF) などの業界フレームワークと比較
  3. GitLab のオールリモート、クラウドネイティブ、AI 駆動型の DevSecOps 環境に合わせたカスタムコントロールドメインとコントロールを作成

このアプローチにより、無関係なコントロールを排除し、必要に応じて GitLab 固有のコントロールを追加しながら、すべてのコンプライアンス要件へのマッピングを維持できます。フレームワークはカスタマイズ可能でスケーラブルになるよう設計されており、追加の認証を追求する際やビジネスが進化する際に、新しいドメインやコントロールを作成できます。

GCF の範囲とアセスメントアプローチ

GCF には、外部認証の対象範囲を超えるコントロールが含まれており、コンプライアンス必須コントロールとリスク駆動型コントロールの両方をカバーします。毎年、コントロールをテストおよびモニターするためのアセスメントスケジュールが作成され、四半期ごとにアセスメントがグループ化されて Compliance チームのメンバーに割り当てられます。

  • コンプライアンスコントロール: 外部認証に必須。少なくとも年 1 回テストされる
  • リスクベースコントロール: システムの重要度(Tier 1/2)またはデータの機密性(RED/ORANGE)によって駆動される。キャパシティとリスク優先度に基づいてテストされる

GCF の構造とデータ

従来のコントロールフレームワークは通常、コントロール ID、説明、オーナーといった最小限の情報を追跡します。GCF はより包括的なアプローチを取り、コントロール実装の詳細、コントロールがマッピングされている要件、コントロールの範囲(コントロールに含まれる資産とプロセス)、その他関連する詳細を以下のコントロールフィールドに文書化することで、コントロールに関する文脈を提供する広範なデータをキャプチャします。

GitLab Control Framework は、私たちの GRC ソリューションである GAS (GitLab Assurance Solution) で管理されています。この一元化されたリポジトリにより、効率的なコントロール管理、コントロール関係マッピングの可視化、監査準備、GitLab のセキュリティ体制の継続的モニタリングが可能になります。

エージェントがマージリクエストのレビューまたは承認のコントロールを実施する場合は、次の情報を記録します。

  • エージェントの識別情報。
  • エージェントの設定。
  • 説明責任を負うチームメンバー。

エージェントの識別情報、設定、または説明責任を負うチームメンバーを変更する場合は、このフレームワークに従ってください。コントロールの証跡は、変更や削除から保護し、Compliance チームがエージェントによるコントロールをサンプリングできるよう、人間によるレビューと承認をエージェントによるレビューと承認から区別できるようにしなければなりません。

GCF コントロールドメイン

業界フレームワークとコンプライアンス要件の分析を通じて、GitLab のセキュリティプログラムの構造と運用モデルに沿った論理的なファミリーにコントロールを整理するカスタムコントロールドメインを作成しました。

略語ドメイン説明
AAMAudit & Accountability Managementシステム活動のロギング、モニタリング、監査証跡の維持に関するコントロール
AIMArtificial Intelligence ManagementAI システムの開発、デプロイ、ガバナンスに固有のコントロール
ASMAsset Management組織資産の特定、追跡、管理に関するコントロール
BCABackups, Contingency, and Availability Management事業継続、災害復旧、システム可用性に関するコントロール
CHMChange Managementシステム、アプリケーション、インフラストラクチャの変更管理に関するコントロール
CSRCustomer Security Relationship Management顧客とのコミュニケーション、透明性、セキュリティコミットメントに関するコントロール
DPMData Protection Managementデータの機密性、完全性、プライバシーの保護に関するコントロール
EPMEndpoint Managementエンドユーザーデバイスとワークステーションのセキュリティに関するコントロール
GPMGovernance & Program Managementセキュリティガバナンス、ポリシー、プログラム監督に関するコントロール
IAMIdentity, Authentication, and Access Managementユーザーアイデンティティ、認証メカニズム、アクセスコントロールに関するコントロール
INCIncident Managementセキュリティインシデントの検知、対応、復旧に関するコントロール
ISMInfrastructure Security Managementネットワーク、サーバー、基盤インフラストラクチャのセキュリティに関するコントロール
PSMPeople Security Management人的セキュリティ、トレーニング、意識向上に関するコントロール
PASProduct and Application Security Managementブランチ保護やコードセキュリティスキャンなど、GitLab の開発を保護するためにドッグフーディングされている GitLab 製品に組み込まれたセキュリティ機能に関するコントロール
SDLSoftware Development & Acquisition Life Cycle Managementセキュアな SDLC プラクティスとサードパーティソフトウェアの調達に関するコントロール
SRMSecurity Risk Managementリスク評価、対応、管理に関するコントロール
TPRThird Party Risk Managementベンダーおよびサプライヤーからのセキュリティリスク管理に関するコントロール
TVMThreat & Vulnerability Managementセキュリティ脆弱性の特定と修正に関するコントロール

GCF コントロールフィールド

GCF は、コントロールごとに以下のフィールドを追跡し、コンテキストの提供、効率的な管理の実現、監査活動のサポートを行います。

コアコントロール情報

コントロール ID

  • コントロールに対する一意の識別子

  • フォーマットはコントロールレベルによって異なる:

    • レベル 1: [Domain]-[Number](例: IAM-4)
    • レベル 2: [Domain]-[Number]-[Environment](例: IAM-4-GitLab.com、IAM-4-Dedicated、IAM-4-Entity)
    • レベル 3: [Domain]-[Number]-[Environment]-[Asset](例: IAM-4-GitLab.com-GCP、IAM-4-Entity-Okta)
  • コントロール階層全体で一貫した追跡と参照を可能にする

GitLab は複数の製品デプロイメント(GCP 上の GitLab.com、AWS 上の GitLab Dedicated)を運営しており、コンプライアンス要件は通常、製品オファリングごとにスコープされています。コントロール ID の環境コンポーネントは、顧客データが維持・管理される場所に基づいて、製品固有のコントロールと組織全体のコントロールを区別します。資産コンポーネントは製品を構成する特定のシステムを識別します。

コントロール名

  • コントロールの本質を示す高レベルのサマリ
  • コントロールの目的を一目で理解できるようにする
  • 例: 「監査ログポリシー」、「多要素認証」、「AI システムの検証と妥当性確認」

説明

  • コントロールの実装または活動に関する記述
  • コントロールが何をするか、それが達成するセキュリティ目標を定義する
  • ベンダー固有の参照を含まない、明確で実行可能な言葉で書かれる

ドメイン

  • 関連するコントロールを整理するコントロールファミリーまたはカテゴリ
  • 例: Audit & Accountability Management、Identity Authentication and Access Management、Artificial Intelligence Management
  • コントロール関係のナビゲートと理解に役立つ
コントロール実装の詳細

ステータス

  • コントロールの現在の状態
  • 値: In Existence または Gap
  • コントロールが運用中であるか、修正が必要な確認済みまたは潜在的なコントロール上の不備を表しているかを示す

実装の詳細

  • GitLab の環境内でコントロールがどのように実装されているかについての具体的な詳細
  • システム固有の構成、責任チーム、または運用手順を含む場合がある
  • 実用的な実装アプローチに関する文脈を提供する

オーナー

  • コントロールに責任を負う個人
  • コントロールの設計、運用、修正に対するアカウンタビリティを保証する
  • Control Owner は証跡を提供し、監査リクエストに対応する

環境

  • コントロールが対応するエンティティまたは製品/サービスオファリング
  • 値: Entity(組織全体)、GitLab.com(マルチテナント SaaS)、GitLab Dedicated(シングルテナント)
  • 異なるデプロイメントモデルにおけるコントロールの適用範囲を定義する

注: 「RBCT」も、コンプライアンス目的でテストされていないコントロールを区別するための「環境」として使用されます。

コントロールの特性

分類

  • コントロールがスコープに含まれる理由と、コントロールが適用されるシステムや要件の種類を示す
  • リスクおよびコンプライアンス要因に基づいて、コントロールテストとリソース配分の優先順位付けに役立つ
  • 値:
値説明
Externalコントロールは外部認証およびアテステーションのスコープに含まれる
Internalコントロールはリスク駆動型で、システム固有(データの機密性または重要度に基づく)または組織のリスク評価で特定されたリスクに対処するもの

内部コントロールのリスク要因は以下を通じて定義されます。

頻度

  • コントロールが実行または運用される頻度
  • 値: Annual、Semi-Annual、Quarterly、Monthly、Weekly、Daily、Automated、Ad-hoc
  • 運用ケイデンスとテスト間隔を定義する

性質

  • コントロール実行における自動化の度合い
  • コントロールが実際にどのように運用されるかを記述する
  • 値:
値説明
Manualコントロールは自動化なしで手動で実行される
Semi-Automatedコントロール実行は自動化された活動と手動の活動を組み合わせている
Automatedコントロールは手動介入なしで自動的に実行される

タイプ

  • コントロールのセキュリティ機能の分類
  • 全体的なセキュリティプログラムにおけるコントロールの役割を定義する
  • 値:
値説明
Preventativeコントロールはセキュリティイベントやポリシー違反の発生を防止する
Detectiveコントロールはセキュリティイベント、ポリシー違反、または異常を発生後に検知する
Correctiveコントロールは検知型コントロールを通じて特定されたイベントを修正または改善する
Recoveryコントロールはイベント後にシステムまたはデータを通常の運用に復元する
Administrativeコントロールはポリシー、手順、またはマネジメント活動で構成される
Compensatingコントロールは主要なコントロールを実装できない場合に代替的な保護を提供する

カテゴリ

  • スコープと実装ポイントによる分類
    • コントロールが適用される場所(組織全体、製品固有(GitLab.com または Dedicated)、インフラストラクチャレベル、リポジトリレベルなど)の特定を可能にする
  • 値:
値説明例
ELC - Administrative組織全体のポリシー、手順、管理的コントロールセキュリティポリシー、リスク評価プロセス、トレーニングプログラム、ガバナンスフレームワーク
ELC - Technicalすべてのシステムにわたって展開される企業全体の技術的コントロールSIEM/集中ロギング・モニタリング、企業ウイルス対策、エンドポイントセキュリティエージェント
SaaS - Administrativeサービス提供業務のための管理的コントロールで、プロセスやオーナーシップが GitLab.com と Dedicated で異なるもの顧客データ取り扱い手順、SLA 管理、サービスステータス通知
Technical - Asset複数のシステムと文脈にまたがって適用される基盤的な IT 全般統制アクセスのプロビジョニングとデプロビジョニング、特権アクセス管理、変更管理手順、職務分掌
Technical - Infrastructureネットワーク、サーバー、基盤インフラストラクチャに関するコントロールファイアウォール、ロードバランサー、ネットワークセグメンテーション、時間同期
Technical - Project/Repoコードリポジトリと開発プロジェクト内のコントロールブランチ保護ルール、マージリクエスト承認、コードスキャン
Technical - SaaSGitLab.com または GitLab Dedicated サービスの提供に固有の技術的コントロールマルチテナンシー分離、プラットフォーム可用性監視、バックアップレプリケーション、顧客データ分離、GitLab.com 固有のセキュリティ構成

GitLab Platform

  • コントロールが GitLab 製品を使用して実装されているかどうかを示す
  • GitLab が自社プラットフォームを使ってどのコントロールをドッグフーディングしているかを示すために使用される
  • 値: チェックボックス(Yes/No)
  • 目的: GitLab 機能を活用するコントロールを特定し、フレームワークの潜在的なオープンソース採用に向けた実世界での使用を示すことを可能にする

レベル

  • 組織階層内のコントロールの粒度とスコープを示す
  • 広範なポリシーから具体的な実装まで、階層内のコントロールの位置を定義する
  • 値:
レベル説明例
Level 1組織全体に適用される単一の共通コントロール管理者アクセスは承認が必要であり、最小権限の原則に基づいて付与される
Level 2エンティティレベルの運用または製品オファリング(GitLab.com、Dedicated)にコントロールを実装する共有プロセス。すべてのレベル 2 コントロールは外部認証のスコープに含まれるGitLab.com をサポートする本番インフラストラクチャ向けの管理者アクセスワークフロー
Level 3特定の資産またはコンポーネントに対する最も詳細なコントロール実装(各レベル 2 に対して複数のレベル 3 コントロールが存在し得る)PostgreSQL データベースへの管理者アクセス、Redis キャッシュへの管理者アクセス、Kubernetes クラスターへの管理者アクセス
コントロールレベルがどのように機能するか(クリックで展開)

GCF は、スケーラブルなコントロール管理を可能にするために 3 レベル階層を使用します。この構造により、レベル 1 で 1 度コントロールを定義し、その後、共有プロセス(レベル 2)と特定の資産(レベル 3)を通じて私たちのサービスオファリング全体で一貫して実装できるため、何十もの独立したコントロールを作成する必要がありません。

なぜこれが重要か:

  • レベルなし: 「GCP 上の MFA」、「AWS 上の MFA」、「踏み台ホスト上の MFA」など、別々のコントロールが必要になります - 何百もの切り離されたコントロールになる可能性があります
  • レベルあり: 1 つのレベル 1 コントロール(IAM-10: MFA Required)が製品固有の実装(レベル 2)にカスケードし、それが資産固有の構成(レベル 3)にカスケードします

監査スコープとの整合:

この階層構造は、外部監査が通常スコープされる方法と整合しています。

  • エンティティレベル監査はレベル 1 コントロール - 組織全体のポリシー、ガバナンス、企業コントロールに焦点を当てる
  • 製品オファリング監査はレベル 2 コントロール - GitLab.com、GitLab Dedicated、または GitLab Dedicated for Government (FedRAMP) に固有のコントロールに焦点を当てる
  • レベル 3 コントロールは、レベル 2 アセスメントをサポートする詳細な証跡と実装の詳細を提供する

このアプローチにより、各製品オファリングのコントロールドキュメントを重複させたり、別個のコントロールフレームワークを作成したりすることなく、複数の監査タイプを効率的に準備しサポートできます。

可視化された階層:

%%{init: { "fontFamily": "GitLab Sans" }}%%
graph TD
    accTitle: Visualization of control hierarchy - Admin Access Example
    accDescr: Flowchart showing how a Level 1 admin access control cascades to Level 2 product and entity-level processes, then to Level 3 asset-specific implementations.

  L1["Level 1: IAM-4<br/>Administrator access is granted based on<br/>job roles and responsibilities"];
  L2A["Level 2: IAM-4-GitLab.com<br/>Shared admin access process for systems supporting GitLab.com"];
  L2B["Level 2: IAM-4-Dedicated<br/>Shared admin access process for systems supporting Dedicated"];
  L2C["Level 2: IAM-4-Entity<br/>Shared admin access process for entity-level systems"];
  L3A1["Level 3: GCP Admin"];
  L3A2["Level 3: Google Workspace Admin"];
  L3B1["Level 3: AWS Accounts Admin"];
  L3B2["Level 3: Password Manager Admin"];
  L3C1["Level 3: Okta Admin"];
  L3C2["Level 3: SIEM Admin"];
  L3C3["Level 3: Antivirus Admin"];
  L3C4["Level 3: MDM Linux Devices Admin"];
  L3C5["Level 3: MDM macOS Devices Admin"];
  L1-->L2A;
  L1-->L2B;
  L1-->L2C;
  L2A-->L3A1;
  L2A-->L3A2;
  L2B-->L3B1;
  L2B-->L3B2;
  L2C-->L3C1;
  L2C-->L3C2;
  L2C-->L3C3;
  L2C-->L3C4;
  L2C-->L3C5;

どのように機能するか:

  • レベル 1(1 つのコントロール): 組織のポリシー - 何をしなければならないかを定義する

    • 例: IAM-4 - 「管理者アクセスは職務役割と責任に基づいて付与され、認可された担当者に限定される」
  • レベル 2(数個のコントロール): 製品/環境の実装 - オファリングごとにどのように行われるかを定義する

    • 例: IAM-4-GitLab.com - 「GitLab.com をサポートするシステムの共有管理者アクセスプロセス」
    • 例: IAM-4-Dedicated - 「Dedicated をサポートするシステムの共有管理者アクセスプロセス」
    • 例: IAM-4-Entity - 「エンティティレベルシステム向けの共有管理者アクセスプロセス」
    • 注: すべてのエンティティレベルコントロール(ELC)はレベル 2 コントロールである
  • レベル 3(多数のコントロール): 資産固有の構成 - 実際にどこで強制されるか

    • 例: IAM-4-GitLab.com-GCP - 「GCP の管理者アクセス」
    • 例: IAM-4-GitLab.com-Bastion - 「踏み台ホストへの管理者アクセス」
    • これはコントロールがテストされ証跡が収集される最も粒度の細かいレベル

重要な洞察: レベル 3 は実装が行われる場所です。この詳細なアプローチにより、組織のポリシーへのトレーサビリティを維持しながら、正確なテスト、明確なオーナーシップ、効率的な監査証跡収集が可能になります。

コントロールテストの詳細

テスト計画

  • コントロールが効果的に運用されているかテストするために使用される手順
  • コントロールがどのように検査、レビュー、または検証されるべきかを定義する
  • ステップバイステップのテストガイダンスを提供する

ソース

  • コントロール証跡の発生源となるシステム、ツール、または場所
  • 例: GitLab ハンドブック、AWS Inspector、Okta
  • コントロール運用の証拠を収集する場所を識別する

テスト自動化

  • コントロールテスト活動における自動化のレベル
  • 継続的なコントロールモニタリングのための自動化成熟度を示す(テストに伴う手作業)
  • 値:
値説明
Manualコントロールテストは自動化ツールなしで手動で実行される
Semi-Automatedコントロールテストの一部の側面は自動化されており、他は手作業を必要とする
Fully Automatedコントロールテストは完全に自動化されており、手動介入は不要

証跡自動化

  • 証跡収集における自動化のレベル
  • 監査証跡収集のための自動化成熟度を示す
  • 値:
値説明
Manual証跡収集は自動化ツールなしで手動で実行される
Semi-Automated証跡収集の一部の側面は自動化されており、他は手作業を必要とする
Fully Automated証跡収集は完全に自動化されており、手動介入は不要

アセスメント頻度

  • コントロールがアセスメントまたはテストされる頻度
  • リスク、規制要件、コントロールの重要度によって決定される
  • コントロールリスクに基づく継続的モニタリングスケジュールを確立する
  • 値:
値説明典型的なユースケース
3 Yearsコントロールは 3 年ごとにアセスメントされるポリシーレベルのコントロールや変更が最小限のコントロールなど低リスクのコントロール
2 Yearsコントロールは 2 年ごとにアセスメントされる中リスクコントロールや変更が稀なコントロール
Annuallyコントロールは年 1 回アセスメントされるほとんどのコントロールに対する標準的な頻度
Quarterlyコントロールは四半期ごとにアセスメントされる高リスクコントロールやクリティカルシステムをサポートするコントロール
Ad-hocコントロールは必要に応じてアセスメントされるイベント駆動型コントロールや、インシデントや変更への対応としてテストされるコントロール

3. Security Compliance の追加手順

Security Compliance が外部認証スコープへの組み込み評価を実施したのち、チームはこれらのコントロールのウォークスルーやテストを実施することを選択する場合があります。

さらに、システムが環境に高いリスクをもたらす場合(スコープに関わらず)、チームは追加のコントロールテストを実施することもあります。Production Readiness Assessment Template(テンプレート開発中)を使用してこのテストを文書化することができます。

4. ドキュメント化

Security Compliance は以下のドキュメント更新を行います。

  • GAS - 実施されたコントロールテストの結果は GAS Assessments に文書化される
  • External Audit ‘Technical Scope’ - スコープへの変更はこの wiki ページに反映される
  • 継続的コントロールモニタリング(CCM)のテスト Issue/スケジュール - スコープ変更に基づく CCM の必要な更新は、将来のテストが確実に実施されるよう行われる

参考資料

Security Compliance チームページに戻る