クラウドアーキテクチャ (Pro)

DefectDojo Cloud は、Google Cloud 上の Google Kubernetes Engine(GKE) で稼働するマルチテナント SaaS プラットフォームです。このページでは、 プラットフォームの構成と、顧客環境がどのように分離されているかについて説明します。

DefectDojo Cloud の Kubernetes アーキテクチャ: 顧客のトラフィックは、Google 管理の TLS を使用する Google Cloud Load Balancing を経由してリージョンごとの GKE クラスターに入ります。各顧客は、専用の PostgreSQL データベース、Cloud Storage バケット、Vertex AI プロジェクトを備えた、独自の Kubernetes ネームスペースで実行されます。

リクエストの流れ

  1. 顧客のトラフィック(ブラウザ、API、または CI)は HTTPS 経由で Google Cloud Load Balancing に到達し、そこで Google 管理の証明書を使用して TLS が 終端されます。
  2. ロードバランサーは、リクエストをリージョンごとの GKE クラスター内にある 顧客の環境にルーティングし、そこで web/API 層(django、nginx と uWSGI に よって配信)が処理します。
  3. web 層は、顧客の専用 PostgreSQL データベース専用 Cloud Storage バケットの読み書きを行い、セッション管理とタスクブローカーとして ネームスペース内キャッシュ(Redis/Valkey)を使用します。
  4. スキャンのインポート、重複排除、通知といった時間のかかる処理は、リクエストの 応答性を保つために非同期ワーカー(Celery)に引き渡されます。

テナントの分離

すべての顧客は独自の Kubernetes ネームスペースで実行され、各顧客が保存する データが他の顧客とストアを共有することはありません。

  • 専用データベース: 顧客ごとに独立した PostgreSQL データベース(Cloud SQL)。
  • 専用オブジェクトストレージ: アップロードされたスキャンやメディア用に、 顧客ごとに独立した Cloud Storage バケットがあり、GCS FUSE CSI ドライバー 経由でワークロードにマウントされます。
  • 専用キャッシュ: 各ネームスペースは独自の Redis/Valkey インスタンスを 実行します。
  • 顧客ごとの認証情報: 各環境は、それぞれ独自のシークレット、TLS 証明書、 ホスト名を持ちます。

顧客間でアプリケーションデータプレーンが共有されることはありません。データは、 転送時(TLS)および保存時(Google Cloud のデフォルト暗号化)に暗号化されます。

リージョンとデータレジデンシー

このプラットフォームは、複数の地域にまたがるリージョンごとの GKE クラスター (たとえば北米、欧州、アジア太平洋)で稼働しています。顧客環境は、そのデータ ベースやストレージバケットとともに、その顧客のために選択されたリージョンに 配置されるため、データレジデンシー要件に対応できます。

顧客環境内のワークロード

各ネームスペースには、DefectDojo Pro をエンドツーエンドで実行するために必要な コンポーネントがすべて含まれています。

グループ役割
Web & APIUI と REST API を提供します(django・nginx + uWSGI)。
非同期処理バックグラウンドジョブとスケジューリング(Celery ワーカー + beat)。
オーケストレーションプラットフォーム全体にまたがる複数ステップのワークフローを調整します。
インテグレーションコネクターおよびチケッティング連携。
MCP サーバー独自の AI ツールと連携するための AI インターフェース。
SenseiGoogle の Vertex Platform を通じた AI による修復。
ネームスペース内キャッシュセッションおよびタスクブローカー用の Redis/Valkey。

各デプロイでは、短時間だけ存在するinitializer ジョブが、新しいバージョンが トラフィックを処理し始める前にデータベースマイグレーションを実行します。

Sensei と AI の分離

DefectDojo の AI による修復機能である Sensei は、Google の Vertex Platform を通じて稼働しており、データプレーンの他の部分と同様に顧客ごとに分離されて います。

  • 各顧客の Sensei へのリクエストは、その顧客専用の GCP プロジェクト内で 実行され、顧客ごとの認証情報によって認証されます。
  • AI テナンシーが共有されることはありません。ある顧客のプロンプト、検出事項、 結果が他の顧客の環境を経由することはありません。
  • 外部の AI プロバイダーは、顧客が設定した場合にのみ使用されます (たとえば MCP サーバー経由、または顧客自身が用意した AI インテグレーション 経由など)。

プラットフォームサービスと運用

Google が管理する共有サービスが、テナント間で顧客データを持ち越すことなく、 すべての環境を支えています。

  • Artifact Registry: 署名済みのコンテナイメージ。
  • Secret Manager: シークレットおよび鍵材料。
  • Cloud Monitoring & Logging: オンコールチームが使用するメトリクス、ログ、 アラート。ノードプールは負荷を吸収するためにオートスケールします。

顧客をまたいで共有されるデータは、公開されている脆弱性エンリッチメント情報 (EPSS および KEV)のみです。

インテグレーションはアウトバウンドのみ

メール(SMTP)、チケッティング(Jira、ServiceNow など)、セキュリティスキャナー、 エラーモニタリングといった外部システムへの接続は、顧客によって設定され、 顧客の環境からアウトバウンドで開始されます

ティアごとの分離

DefectDojo Cloud のティアごとのテナント分離: Standard と Pay-as-you-go のテナントは、共有 GKE クラスター上の分離されたネームスペースで実行され、テナントごとの論理データベースを持つ共有 PostgreSQL インスタンスを使用します。Premium のテナントには専用の PostgreSQL データベースが割り当てられます。Dedicated ティアは、独自の GKE クラスター、VPC、GCP プロジェクトで実行されます。

ティアコンピュートデータベースネットワーク境界Sensei
Standard共有クラスター上の分離されたネームスペース共有 PostgreSQL インスタンス上の独自の論理データベースと認証情報共有 VPC、テナントごとのホスト名 + TLS、任意の IP 許可リスト含まれる
Pay-as-you-go (近日提供予定)共有クラスター上の分離されたネームスペース共有 PostgreSQL インスタンス上の独自の論理データベースと認証情報共有 VPC、テナントごとのホスト名 + TLS、任意の IP 許可リスト含まれる
Premium共有クラスター上の分離されたネームスペース顧客ごとの専用 PostgreSQL データベース共有 VPC、テナントごとのホスト名 + TLS、任意の IP 許可リスト含まれる
Dedicated独自の GKE クラスター顧客独自の VPC 内の専用 PostgreSQL データベース独自の GCP プロジェクトと VPC、顧客の IP 範囲に制限された ingress含まれる

Sensei はすべてのティアに含まれており、いずれのティアでも、顧客自身の GCP プロジェクト内で Google の Vertex Platform を通じて、顧客ごとの認証情報を使って 稼働します。

このページで解決しないご質問がありますか?DefectDojo の担当者までお問い合わせ ください。