メインコンテンツへスキップ

データフロー

このドキュメントでは、Attribute プラットフォームがどのようにお客様のデータを安全に収集・処理・分析し、詳細なクラウドコスト インサイトを提供しているかについて説明します。私たちのアーキテクチャは、堅牢なセキュリティと透明性を基盤として構築されており、すべての段階でお客様のデータが最大限慎重に取り扱われるよう設計されています。

データフローの段階

Attribute のデータフローは、主に次の 3 つの段階に分けられます。

  • 顧客環境内でのデータ収集
  • Attribute バックエンドでのデータ処理
  • Attribute ダッシュボードを通じたデータの提示

Attribute データフロー アーキテクチャ: 顧客環境が Parquet、OpenTelemetry、API 呼び出しを介して GCP 上の Attribute バックエンドに接続される

データ収集

詳細なコストアロケーションを提供するために、Attribute は主に次の 3 種類のデータソースを利用します。

  • 消費データ: 顧客環境内にデプロイされた独自の Attribute Sensor によって収集されます。
  • 財務データ: クラウドの請求レポートから取得されます。
  • テレメトリデータ: クラウド API やその他のテレメトリソースから取得されるリソース利用状況データです。

お客様の環境内におけるデータ収集の中核は Attribute Sensor です。顧客環境のセキュリティと安定性を確保するため、Attribute Sensor はモダンな「セキュリティ ファースト」のアプローチで設計・開発されています。

  • テクノロジー: センサーは eBPF(extended Berkeley Packet Filter)テクノロジー上に構築されており、システムのカーネル内からネットワークパケットを安全に検査します。読み取り専用のサンドボックス環境で動作し、運用上のリスクを最小限に抑えます。
  • デプロイ: センサーは Kubernetes クラスタや単体の仮想マシンなどのコンピュートエンティティ上にデプロイできます。デプロイは高い柔軟性を持っており、どのワークロードを監視するかを詳細に選択できます。
  • 機能: ネットワークパケットを検査することで、センサーは利用状況メトリクスを集約します。たとえば、Kubernetes クラスタ上で動作する特定のサービスを識別し、特定のクエリによって消費されたリソース量を測定できます。センサーは、顧客と明示的に合意しホワイトリスト登録された特定のプロトコルに対するネットワークトラフィックのみを分析します。
  • 匿名化とセキュリティ: 重要な点として、送信前に顧客環境内であらゆる機微情報・個人情報がデータから削除されます。これにより、機微なデータがお客様の環境外へ出ることは決してありません。集約・匿名化されたデータのみが安全に Attribute バックエンドへ送信されます。
  • 送信: データは暗号化された OpenTelemetry プロトコルを使用して送信され、収集されたすべてのデータについて完全な透明性を提供します。この安全な送信は JWT による認証と TLS 暗号化によって保護されています。さらに、OpenTelemetry を利用することで収集データへの完全な可視性が確保されるとともに、任意の OpenTelemetry エンドポイントを実装することで、セキュリティ強化のための追加制限をお客様側で適用できます。

データ処理

顧客の匿名化された利用データと請求情報が Attribute バックエンドに到達すると、処理ステージが開始されます。このプロセス全体は、安全な Google Cloud Platform(GCP)インフラストラクチャ上で実行されます。

  • データ統合: センサーからのデータとクラウド請求レポートからのデータを統合・解析し、真のコストを正確に算出します。
  • コア処理: 処理には堅牢な GCP サービス群を使用します。
    • データ処理: 複雑な ETL(Extract, Transform, Load)ジョブは SparkApplication や Big Data ソリューションによって処理されます。
    • コンピュート: コンテナ化されたアプリケーションは Kubernetes Engine を用いて管理されます。
    • イベントストリーミング: イベントストリーミングには Pub/Sub サービスを使用します。
  • データセキュリティ: バックエンド内でお客様のデータを保護するため、次のような複数の対策を実装しています。
    • 保存時および転送時のデータ暗号化
    • データストア内で顧客ごとに分離されたデータセット
    • 厳格な最小権限アクセスの方法論
  • スケーラビリティと信頼性: すべてのバックエンドコンポーネントは冗長構成およびオートスケーリング対応で設計されており、高い可用性・信頼性・最適なユーザー体験を実現します。

データの提示

最終段階では、計算済みデータおよびクラウドコスト インサイトが Attribute ダッシュボードを通じて提供されます。

  • 安全なインフラストラクチャ: ダッシュボードのアプリケーションレイヤーも、安全でスケーラブルな GCP インフラストラクチャ上に構築されています。
  • データリポジトリ: ClickHouse、BigQuery、Atlas MongoDB® がダッシュボードのデータ基盤として機能し、バックエンドと同等レベルのセキュリティ、データ分離、および暗号化を維持します。
  • ユーザーアクセス: ダッシュボードへのアクセスは、安全な Single Sign-On(SSO)認証によって管理され、厳格なデータガバナンスを実現します。
  • 高可用性: ダッシュボードコンポーネントも冗長構成およびオートスケーリングに対応して設計されており、常に安定して利用できるようになっています。

付録 A — 機微データの安全な取り扱い

本付録では、データのプライバシーおよび送信に関する懸念に対応するために、Attribute プラットフォームに組み込まれている厳格なセキュリティ対策について説明します。お客様の環境から機微なデータが当社へ送信されることは一切ありません。

このプラットフォームは、お客様の環境内でローカルにデータを処理し、コスト分析に必要な最小限の非機微メタデータのみを送信するように設計されています。このアーキテクチャにより、専有情報や機密情報がお客様のシステム外へ出ることはありません。私たちはデータ最小化の原則に基づいた「セキュリティ ファースト」「ゼロトラスト」アプローチを採用しています。

1. プロトコル解析とイベントベースの送信

Attribute Sensor は生のネットワークパケットを送信しません。その代わりに、お客様の環境内で動作するインテリジェントなデータプロセッサとして機能します。

  • 選択的なプロトコル解析: センサーは、事前に明示的な合意を行いホワイトリストに登録した特定のプロトコルに対するネットワークトラフィックのみを検査します。これらのプロトコルに該当しないトラフィックはすべて無視されます。
  • パケット転送ではなくイベント生成: ホワイトリスト登録されたプロトコルについて、Attribute Sensor のパーサーはコストアロケーションに必要な特定のメタデータのみを抽出します。このメタデータを用いて構造化された「イベント」を生成します。送信されるのは、この目的に特化した最小限のイベントであり、元のネットワークパケットではありません。このプロセスにより、ネットワークトラフィックに含まれる不要なデータや機微なデータはソース側で破棄されます。参考として、第 3 節にサンプルイベントを構築するためのコード抜粋を記載しています。

2. 機微情報の事前排除

センサーは解析中に機微なデータを検出・除外するよう明示的に設計されています。この除外処理はすべて顧客環境内で行われるため、そのようなデータが Attribute のバックエンドに送信されることはありません。

  • Secrets および認証情報: Attribute Sensor は Secrets、API キー、パスワード、認証トークンを解析・送信しません。
  • Cookie: ネットワークトラフィック内の Cookie データはすべて無視されます。
  • 個人を特定できる情報(PII): クエリ内に存在する可能性のある PII は、一般的なライブラリを用いて編集・マスクされます。

3. イベントを構築するコード例

r.metricBuilder.BuildCompoundMetric(func(metric metricbuilder.CompoundMetric) {
metric = setMetricResourceAttributesFromEnvInfo(metric, envInfo.Region, envInfo.Host, metricDescriptor.Name)

for fields, values := range data.Values {
wl := fields.Workload

scope := metric.NewScope("workload", "")
scope = setScopeAttributeFromWorkload(scope, wl)
scope = setScopeAttributeFromEnvInfo(scope, envInfo.Name, envInfo.Type)

scopeFillAttributesFromMetricFields(&fields, scope)

gauge := scope.NewGauge("metric")

measurement := gauge.NewMeasurement()
measurement.SetTimestamp(eventTime)
measurement.SetAttribute("attributes", map[string]interface{}{
"host": fields.F0,
"method": fields.F1,
"path": fields.F2,
"request.count": values.Count,
"request.total.time.ns": values.V0,
})
}
})

商標: Google Cloud は Google LLC の商標です。MongoDB は MongoDB, Inc. の登録商標です。Kubernetes および OpenTelemetry は The Linux Foundation の商標です。Apache Spark は Apache Software Foundation の商標です。ClickHouse は ClickHouse, Inc. の登録商標です。その他の商標はすべて、それぞれの所有者に帰属します。