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

データフロー

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

データフローのステージ

Attribute におけるデータフローは、主に3つのステージに分けられます。

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

Attribute data flow architecture: customer environment connects to the Attribute backend on GCP via Parquets, OpenTelemetry, and API calls

データ収集

詳細なコストアロケーションを提供するために、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 Dashboard を通じて提供されます。

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

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

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

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

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

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

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

2. 機微情報の能動的な除外

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

  • シークレットおよび認証情報: Attribute Sensor は、シークレット、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. の登録商標です。その他のすべての商標は各所有者に帰属します。