DevSecOpsプラットフォームとしてGitLabを使用することでSOC 2の審査プロセスが楽になったという声が、お客様から寄せられています。このブログ記事では、SOC 2フレームワークと、SOC 2審査に役立つGitLabの機能についてご説明します。
SOC 2の紹介
SOC 2は「System and Organization Controls(システムおよび組織管理)2」の略称であり、組織が顧客データをどのように管理すべきかを定めた自主的なコンプライアンス基準です。企業はSOC 2審査レポートによって、ビジネス顧客に対して自社が提供するソフトウェアの信頼性を証明できます。
SOC 2は国際公認職業会計士協会(AICPA)によって開発されたもので、以下の5つのトラストサービス基準(TSC)に焦点を当てています。
- セキュリティ:顧客データを脆弱性や不正利用から保護すること
- 可用性:可用性に関するサービスレベル契約を満たすために、負荷が高い状況でもシステムの耐障害性と性能を確保すること
- 処理の完全性:システムが脆弱性やエラー、バグなしに設計どおりに機能すること
- 機密性:アプリケーションのソースコード、ユーザー名やパスワード、クレジットカード情報などの機密情報を保護し、業務上アクセスが必要な人のみがアクセスできるようにすること
- プライバシー:機密性の高い個人を特定できる情報を権限のないユーザーから守ること
すべての審査で必須となる基準は、セキュリティのみです。その他の基準は、提供されるサービスにおいて重要であるとみなされる場合に、審査に追加される可能性があります。
セキュリティのTSC
セキュリティ基準は、サーバーや物理システムのセキュリティだけでなく、アプリケーションのセキュリティにも関係します。ソフトウェアに脆弱性があると、攻撃者にアプリケーションに侵入され、顧客のデータが危険にさらされてしまう恐れがあります。GitLabは、こうしたリスクに対処するのに役立ちます。
GitLabでは、企業が開発するアプリケーションに潜む脆弱性を特定するために、次のようなセキュリティスキャンを使用できます。
- 静的アプリケーションセキュリティスキャン(SAST):ソースコードをスキャンし、潜在的なバグや脆弱性(意図しないコード実行の原因となる安全でないコードなど)を特定します
- 依存関係スキャン:アプリケーションと依存関係にあるソフトウェアに潜むセキュリティの脆弱性を検出します
- コンテナスキャン:コンテナ化されたアプリケーションのオペレーティングシステムの依存関係に潜むセキュリティの脆弱性を検出します
- 動的アプリケーションセキュリティスキャン(DAST):実行中のウェブアプリケーションをスキャンし、攻撃リスクにつながるセキュリティの脆弱性を検出します
- Infrastructure as Code(IaC)スキャン:Terraform、Ansible、AWS CloudFormation、KubernetesなどのInfrastructure as Code設定ファイルをスキャンし、セキュリティの脆弱性を特定します
また、GitLabには、上記のスキャン結果に基づき、スキャン対象のアプリケーションに含まれる既知の脆弱性をすべて表示する脆弱性レポート機能もあります。さらに、CycloneDX JSON形式のソフトウェア部品表(SBOM)も利用可能で、ソフトウェアレベルおよびオペレーティングシステムレベルの依存関係と既知の脆弱性をすべて確認できます。
定期的な脆弱性スキャンと強力な脆弱性レポートにより、以下の3つのセキュリティ基準を満たすのに役立ちます。
- CC7.1:企業は、自社の目的を達成するために、(1)新たな脆弱性の発生につながる設定変更、および(2)新たに発見された脆弱性に影響を受けやすい状態を特定するための検出および監視手順を採用すること。
- CC4.1(COSO原則16):企業は、内部統制の構成要素が存在し、機能しているかどうかを確認するために、継続的および/または個別の評価手順を選択、開発、実施すること。
- CC4.2(COSO原則17):企業は、速やかに内部統制の不備を評価し、必要に応じて、経営陣や取締役会など、是正措置を講じる責任を有する関係者に伝達すること。
セキュリティスキャンにおいて重要な要素は、ガバナンスと実施です。GitLabでは、スキャンを定期的に実行し、ソフトウェア開発チームがそれを回避できないようにする機能をご用意しています。以下にその一部をご紹介します。
- ロールベースのアクセス制御:プロジェクトレベルの構成設定に変更を加えられるユーザーを制限します
- スキャン実行ポリシー:各コードリポジトリでスキャンの実行を強制します
- [スキャン結果ポリシー]https://docs.gitlab.com/ee/user/application_security/policies/merge_request_approval_policies.html):スキャン結果が適切なセキュリティ担当者によってレビューおよび承認されるようにすることで、新たに発見された脆弱性がデプロイ後のソフトウェアに導入されるのを阻止します
- コンプライアンスレポート:GitLabの設定に加えられた変更のうち、現行のセキュリティプロセスに違反する可能性のあるものを提示します
これらの設定を導入することで、組織はソフトウェアセキュリティがアプリケーションにおいて最優先事項であり、セキュリティ対策が確実に実施されていることを証明できます。
「可用性」と「処理の完全性」のTSC
GitLabは、「可用性」と「処理の完全性」のTSC準拠にも役立ちます。これらの基準は、アプリケーション自体の品質とパフォーマンスに焦点を当てています。GitLabでは、以下の機能を通じて、これらの基準への準拠をサポートします。
- コードカバレッジレポート:ユニットテストの結果とコードカバレッジの変更を提示し、ソースコードがテストスイートで検証されていることを保証します
- Code Quality:ソースコードの品質と複雑さを分析し、可読性と保守性を高めます
上記のアプローチは、高品質かつテスト済みのコードを確保するためにソフトウェア開発ライフサイクルの早い段階で使用されるものです。これに加え、GitLabは、稼働中のアプリケーションが想定通りに動作していることを確認するための、さまざまな自動テストに使えるテンプレートも提供しています。これらのテンプレートは、以下のようなテストに対応しています。
- ブラウザのパフォーマンステスト:開発ライフサイクル中にウェブサイトのロード時間を測定し、コード変更によるブラウザのパフォーマンスへの影響をテストします
- ロードパフォーマンステスト:開発ライフサイクル中にアプリケーションのバックエンドのシステムパフォーマンスを測定し、コード変更によるパフォーマンスへの影響をテストします
- カバレッジファジング:予期しないデータや不正な形式のデータ、ランダムなデータをアプリケーションに送信し、不安定な動作やクラッシュの発生有無を監視します
- ウェブAPIファズテスト:予期しないデータや不正な形式のデータ、ランダムなデータをAPIエンドポイントに送信し、バグやセキュリティ問題の有無を確認します
組織はGitLabを使用して強力なDevSecOps手法に重点を置いて、高品質で安全なアプリケーションの構築に取り組むことで、顧客データの安全性を証明するSOC 2審査に合格しやすくなります。
詳しく見る:セキュア・バイ・デザインの原則でサイバーセキュリティ態勢を強化しましょう。