Azure Kubernetes Service 上の Intel SGX ベースのコンフィデンシャル コンピューティング ノードによるアプリケーション エンクレーブのサポート

Azure Confidential Computing を使用すると、機密データをその使用中に保護することができます。 Intel SGX ベースのエンクレーブを使用して、AKS 内でコンテナーとしてパッケージ化されたアプリケーションを実行することができます。 コンテナーは、ハードウェアで保護され、整合性が確保された、構成証明可能な環境内のノード カーネルのように、高信頼実行環境 (TEE) 内で実行されて他のコンテナーから分離されます。

概要

Azure Kubernetes Service (AKS) は、クラスター内のエージェント プールとして Intel SGX コンフィデンシャル コンピューティング VM ノードをサポートします。 これらのノードにより、ハードウェアベースの TEE 内で機密のワークロードを実行できます。 TEE では、コンテナーのユーザーレベルのコードでメモリのプライベート領域を割り当てて、CPU でコードを直接実行できます。 CPU で直接実行されるこれらのプライベート メモリ領域は、エンクレーブと呼ばれます。 エンクレーブは、Azure のオペレーター、および同じノードで実行されている他のプロセスから、データの機密性、データの整合性、およびコードの整合性を保護するのに役立ちます。 Intel SGX 実行モデルでは、ゲスト OS、ホスト OS、ハイパーバイザーの中間層も削除されるため、攻撃対象領域が小さくなります。 ノード内の "ハードウェア ベースのコンテナーごとに分離された実行" モデルによって、コンテナーごとに特殊なメモリ ブロックを暗号化したまま、アプリケーションを CPU で直接実行することができます。 機密コンテナーを使用したコンフィデンシャル コンピューティング ノードは、ゼロ トラスト セキュリティ計画と多層防御コンテナー戦略に対する優れた追加機能です。

コードとデータが内部でセキュリティ保護された機密コンテナーを示す、AKS コンフィデンシャル コンピューティング ノードの図。

Intel SGX コンフィデンシャル コンピューティング ノードの特徴

  • Intel SGX の高信頼実行環境 (TEE) によってハードウェア ベース、プロセス レベルでコンテナーを分離
  • 異種ノード プール クラスター (機密ノード プールと非機密ノード プールの混在)
  • "confcom" AKS アドオンを使用した、暗号化されたページ キャッシュ (EPC) メモリベースのポッド スケジューリング
  • Intel SGX DCAP ドライバーがプレインストールされ、カーネル依存関係がインストールされている
  • CPU 消費量に基づくポッドの水平自動スケーリングとクラスターの自動スケーリング
  • Ubuntu 18.04 Gen 2 VM ワーカー ノードによる Linux コンテナーのサポート

AKS 用のコンフィデンシャル コンピューティング アドオン

このアドオン機能を使用すると、クラスターで Intel SGX 対応のコンフィデンシャル コンピューティング ノード プールを実行するときに、AKS の追加機能が有効になります。 AKS で "confcom" アドオンを使用すると、以下の機能が有効になります。

Intel SGX 用 Azure デバイス プラグイン

デバイス プラグインは、暗号化されたページ キャッシュ (EPC) メモリ用の Kubernetes デバイス プラグイン インターフェイスを実装し、ノードからデバイス ドライバーを公開します。 このプラグインによって EPC メモリは実質的に、Kubernetes におけるもう 1 つのリソース タイプとなります。 ユーザーは、他のリソースと同様、このリソースに対する制限を指定できます。 このデバイス プラグインは、スケジューリング機能以外に、機密 コンテナーのデプロイへのアクセス許可を Intel SGX デバイス ドライバーに割り当てるのに役立ちます。 開発者は、このプラグインを使用して、デプロイ ファイル内の Intel SGX ドライバー ボリュームがマウントされないようにすることができます。 AKS クラスター上のこのアドオンは、Intel SGX 対応の VM ノードごとにデーモンセットとして実行されます。 EPC メモリベース デプロイの実装サンプル (kubernetes.azure.com/sgx_epc_mem_in_MiB) は、こちらでご覧いただけます。

Platform Software Components を備えた Intel SGX クォート ヘルパー

AKS クラスターで Intel SGX 対応の VM ノードごとに、別のデーモンセットがプラグインの一部としてデプロイされます。 このデーモンセットは、リモートのアウトプロセス構成証明要求が呼び出される場合、機密コンテナー アプリに役立ちます。

リモート構成証明を実行するエンクレーブ アプリケーションでは、クォートを生成する必要があります。 クォートにより、アプリケーションの ID と状態、そしてエンクレーブのホスト環境の暗号による証明が得られます。 クォートを生成するには、Intel から提供されている信頼のおける特定のソフトウェア コンポーネントが必要です。このコンポーネントは、SGX Platform Software Components (PSW/DCAP) に含まれています。 PSW は、ノードごとに実行されるデーモン セットとしてパッケージされています。 PSW は、エンクレーブ アプリから構成証明のクォートを要求する場合に使用できます。 AKS によって提供されるサービスを使用すると、AKS VM ノードの一部である Intel SGX ドライバーを搭載しているホスト内で、PSW と他のソフトウェア コンポーネントとの間の互換性を維持しやすくなります。 コンテナーのデプロイの一部として構成証明プリミティブをパッケージ化せずに、アプリがこのデーモンセットを使用する方法の詳細については、こちらをご覧ください。

プログラミング モデル

パートナーおよび OSS を使用した機密コンテナー

機密コンテナーは、ほとんどの一般的なプログラミング言語ランタイム (Python、ノード、Java など) の既存の変更されていないコンテナー アプリケーションを機密性を保った状態で実行するのに役立ちます。 このパッケージ モデルは、ソース コードの変更や再コンパイルが不要な、Intel SGX エンクレーブで最も速く実行される方法であり、標準 Docker コンテナーをオープンソース プロジェクトや Azure パートナー ソリューションでパッケージ化することで実現されます。 このパッケージおよび実行モデルでは、コンテナー アプリケーションのすべての部分が信頼できる境界 (エンクレーブ) に読み込まれます。 このモデルは、市場で入手可能な既成のコンテナー アプリケーションや、現在汎用ノードで実行されているカスタム アプリに適しています。 準備とデプロイのプロセスの詳細については、こちらを参照してください。

エンクレーブ対応コンテナー

AKS 上のコンフィデンシャル コンピューティング ノードでは、CPU の特殊な命令セットを利用するためにエンクレーブで実行するようにプログラムされたコンテナーもサポートします。 このプログラミング モデルでは、実行フローをより厳密に制御でき、特別な SDK とフレームワークを使用する必要があります。 このプログラミング モデルは、アプリケーション フローのほとんどの制御に最小の信頼できるコンピューティング ベース (TCB) を提供します。 エンクレーブ対応のコンテナー開発には、コンテナー アプリケーションの信頼できない部分と信頼できる部分が含まれるため、通常のメモリと、エンクレーブが実行される暗号化されたページ キャッシュ (EPC) メモリを管理できます。 エンクレーブ対応コンテナーについての詳細情報をご覧ください。

よく寄せられる質問 (FAQ)

Azure Kubernetes Service (AKS) ノード プールでの Intel SGX ベースのコンフィデンシャル コンピューティング ノードのサポートについてよく寄せられる質問とその回答については、こちらをご覧ください。

次の手順

コンフィデンシャル コンピューティング ノードを使用して AKS クラスターをデプロイする

機密コンテナーのクイック スタート サンプル

Intel SGX Confidential VM の - DCsv2 SKU リスト

Intel SGX Confidential VM の - DCsv3 SKU リスト

機密コンテナーを使用した多層防御に関するウェビナー セッション