ゼロトラストアーキテクチャによるセキュリティ強化:Uberの実踐と技術的課題

はじめに

現代のクラウド環境では、セキュリティの確保が企業の継続的な運営に直結する重要な課題となっています。Uberは、その規模に応じたゼロトラストアーキテクチャ(Zero Trust Architecture: ZTA)の導入を通じて、すべてのワークロード(サービス、データベース、バッチ処理など)間の暗號化、認証、権限管理、監査を実現しています。本記事では、UberがZTAを実裝する中で直面した課題、採用した技術的アプローチ、およびその成果について詳しく解説します。

ゼロトラストアーキテクチャの実裝と技術的特徴

ゼロトラストアーキテクチャの定義と基本概念

ゼロトラストアーキテクチャは、ネットワークの境界を前提とせず、すべてのアクセス要求を厳格に検証するセキュリティフレームワークです。これにより、內部ネットワークや外部ネットワークを問わず、すべてのリソースへのアクセスが「信頼されていない」として扱われ、常に認証と暗號化が求められます。Uberでは、このアプローチを採用し、すべてのビット(bit)を保護することを目標としています。

キーポイント:性能と拡張性

Uberの環境では、百萬単位のコンテナワークロード、毎秒百萬人規模のリクエスト(RPS)、百TB規模のトラフィック、十億規模の接続數を管理する必要があります。このため、ゼロトラストの導入は、性能への影響を最小限に抑えつつ、スケーラビリティを確保することが不可欠です。CNCF(Cloud Native Computing Foundation)のツール、特にEnvoyとSpireを活用することで、この課題に挑戦しています。

実裝戦略と技術的アプローチ

1. 最小共通分母の原則

すべてのサービスはTCPプロトコルを基盤としており、接続層での暗號化と認証を目標としています。ISTIOやZTunnelの設計を參考にし、EnvoyやSpireなどの既存ツールを再利用することで、実裝の効率化を図っています。これにより、サービス所有者がSLA(サービスレベルアグリーメント)を維持しながら、セキュリティを強化できます。

2. 既存ツールの再利用

Envoyを暗號化、認証、権限管理の基盤として採用し、L7プロキシ層の移行経験を活かしています。また、Spireを用いて証明書を管理し、コンテナのアイデンティティ認証(例:複數のオーケストレータ環境でのコンテナタグ)を実現しています。

3. 段階的な降格(Rollback)戦略

導入中に問題が発生した場合、自動的に元の狀態に戻すことで、サービスの可用性を維持します。これにより、セキュリティ強化と業務の継続性を両立させています。

技術的実裝の詳細

データプレーンアーキテクチャ

Linuxカーネル技術(NFTables、eBPF)を活用し、トラフィックをEnvoyプロキシにリダイレクトします。EnvoyはMTLS(マネージドトランスポートレイヤーセキュリティ)、Proxy Protocol、動的フォワーディングを処理し、カスタムプラグインで機能を拡張します。

コンテナ管理

runCをパッケージ化し、コンテナ起動時の認証と設定チェックを注入します。コンテナ起動時にEnvoyの証明書とポリシー設定を更新し、接続確立前に設定を完了します。

通信プロトコル

一対一のTCP接続を採用し、MTLSとProxy Protocolを用いて元の宛先情報を伝達します。H2 Connectの安定性やパフォーマンスの問題を避けるため、TCP直接接続を選択し、ヘッダブロッキングのリスクを軽減しています。

パフォーマンスと結果

フロー統計

現在、Uberの40%のネットワークトラフィックがプラットフォームを通じて処理され、殘りの60%はバッチジョブです。毎秒1億回の新接続を処理し、総接続數は10億規模に達しています。

可靠性の確保

自動化されたヘルスチェックと自己診斷により、プロキシサービスの継続的な運用を実現しています。目標プロキシが接続不可の場合、代替手段として直接TCP接続をアプリケーションに実行し、サービスの可用性を維持します。

段階的なデプロイ戦略

2023年末から2024年初頭にかけてPOCを実施し、2024年初頭に最小実裝バージョンをリリースしました。1%のワークロードを段階的に導入し、ゾーンテストでスケール性能を検証しました。最終的に2024年末までに4か月のロールアウトを完了し、サービスの安定性と可用性を確保しました。

現在の狀況

デプロイ進捗

無狀態サービスと有狀態サービスはすべて導入され、例外ケースはわずかです。バッチジョブは50%の導入が完了し、他のフレームワークやエコシステムの統合が進行中です。

今後の目標

QoS機能(例:バッチトラフィックの優先度調整)の改善を進め、パフォーマンスと信頼性の最適化を継続します。

技術的課題と解決策

連接失敗と障害モード

現在、毎秒約10回の接続が不安定性により失敗し、リカバリ(fail back)が観測されています。各イベントにはソースIP、ターゲットIP、対応ワークロードが記録されています。現在は「fail open」モードを採用し、初期デプロイ段階でのビジネスへの影響を最小限に抑えています。今後、生産就緒レビュー(production readiness review)を実施し、「fail closed」への移行を検討します。

TLSパフォーマンスと暗號アルゴリズム

TLSセッションにおけるCPU利用率が高く、量子暗號アルゴリズム(quantum ciphers)のテストは未実施です。現在使用中の暗號アルゴリズムにはECDSA(署名)、RSA(署名)、AES(対稱暗號)が含まれます。現在のアーキテクチャはAMD ARM/x86の混合構成であり、大部分のプロセッサはAES加速指令セットをサポートしていますが、量子アルゴリズムのパフォーマンス影響は検討中です。

技術的アーキテクチャと処理能力

現在のプロセッサ構成はARM(一部)とx86(広範な使用)です。暗號アルゴリズムの選択では、現行アルゴリズムが加速要件を満たしていますが、量子アルゴリズムのCPU利用率への影響は今後検討する予定です。

結論

Uberはゼロトラストアーキテクチャの導入を通じて、すべてのワークロードのセキュリティを強化しています。パフォーマンスと信頼性のバランスを取るため、「fail open」モードを採用し、今後は「fail closed」への移行を検討しています。TLSパフォーマンスの最適化と暗號アルゴリズムの選択は、技術的な重要な課題であり、継続的な評価と改善が求められます。