Share via


Intel SGX のエンクレーブを使用する Azure Kubernetes Service (AKS) 上の機密コンテナー

機密コンテナーを使用すると、一般的なプログラミング言語ランタイム (Python、ノード、Java など) の既存の変更されていないコンテナー アプリケーションを Intel SGX ベースの高信頼実行環境 (TEE) で実行することができます。 このパッケージ モデルは、一般にソース コードの変更や再コンパイルが不要で、Intel SGX のエンクレーブで最も速く実行される方法です。 標準 Docker コンテナーを実行するための一般的なデプロイ プロセスには、オープンソースの SGX ラッパーまたは Azure パートナー ソリューションが必要です。 このパッケージおよび実行モデルでは、各コンテナー アプリケーションが信頼できる境界 (エンクレーブ) に読み込まれ、Intel SGX CPU によって強制的にハードウェアベースで分離されます。 エンクレーブで実行されている各コンテナーには、Intel SGX CPU からそのコンテナー専用のメモリ暗号化キーが渡されます。 このモデルは、市場で入手可能な既成のコンテナー アプリケーションや、現在汎用ノードで実行されているカスタム アプリに適しています。 既存の Docker コンテナーを実行するには、コンフィデンシャル コンピューティング ノード上のアプリケーションには、特別な CPU 命令セットの範囲内でのコンテナーの実行を支援する Intel Software Guard Extensions (SGX) ラッパー ソフトウェアが必要です。 SGX では、CPU への直接実行を作成して、ゲスト オペレーティング システム (OS)、ホスト OS、またはハイパーバイザーを信頼境界から削除します。 この手順により、1 つのノード内でプロセス レベルの分離を実現しながら、全体的な攻撃の危険と脆弱性を軽減できます。

変更されていないコンテナーを実行するための全体的なプロセスでは、以下で詳述するように、コンテナーが現在パッケージされている方法が変更されます。

Diagram of confidential container conversion, with new steps for enabling Intel SGX and AKS.

標準コンテナーの実行に必要な SGX ラッパー ソフトウェアは、Azure ソフトウェア パートナーまたはオープン ソース ソフトウェア (OSS) ソリューションによって提供されます。

パートナー イネーブラー

開発者は、機能、Azure サービスとの統合、ツールのサポートに基づいて、ソフトウェア プロバイダーを選択できます。

重要

多くの場合、Azure ソフトウェア パートナーから Azure インフラストラクチャに加えてライセンス料が求められます。 パートナー ソフトウェアのすべての利用規約を別途確認してください。

Fortanix

Fortanix には、コンテナー化されたアプリケーションを SGX 対応の機密コンテナーに変換するためのポータルとコマンドラインインターフェイス (CLI) エクスペリエンスがあります。 アプリケーションを変更または再コンパイルする必要はありません。 Fortanix では、広範なアプリケーションを柔軟に実行して管理できます。 既存のアプリケーション、新しいエンクレーブ ネイティブ アプリケーション、事前パッケージ済みアプリケーションを使用できます。 Fortanix の Enclave Manager UI または REST API を使用して開始します。 AKS の Fortanix のクイックスタートガイドを使用して、機密コンテナーを作成します。

Diagram of Fortanix deployment process, showing steps to move applications to confidential containers and deploy.

Scone (Scontain)

Scone (Scontain) セキュリティ ポリシーでは、証明書、キー、シークレットを生成します。 アプリケーションの構成証明を持つサービスのみが、これらの資格情報を参照します。 アプリケーション サービスは、TLS によって自動的に相互の構成証明を実行します。 アプリケーションや TLS を変更する必要はありません。 詳細については、SCONE の Flask アプリケーションのデモを参照してください。

SCONE では、ほとんどの既存のバイナリをエンクレーブ内で実行されるアプリケーションに変換できます。 また、SCONE では、データ ファイルと Python コード ファイルの両方を暗号化することで、Python などの解釈された言語も保護されます。 SCONE セキュリティ ポリシーを使用して、不正なアクセス、変更、ロールバックから暗号化されたファイルを保護することができます。 詳細については、既存の Python アプリケーションでの SCONE の使用方法に関する SCONE のドキュメントを参照してください。

Diagram of SCONE workflow, showing how SCONE processes binary images.

この SCONE での AKS アプリケーション デプロイのサンプルに従って、AKS を使用して Azure コンフィデンシャル コンピューティング ノードに SCONE をデプロイできます。

Anjuna

Anjuna では、変更されていないコンテナーを AKS で実行する、SGX プラットフォーム ソフトウェアが提供されます。 詳細については、Anjuna の機能とサンプル アプリケーションに関するドキュメントを参照してください。

サンプル Redis Cache と Python カスタム アプリケーションについてはこちらを参照してください

Diagram of Anjuna's process, showing how containers are run on Azure confidential computing.

OSS イネーブラー

Note

Azure Confidential Computing や Microsoft は、これらのプロジェクトとソリューションに直接関連するものではありません。

Gramine

Gramine は軽量のゲスト OS であり、最小限のホスト要件で単一の Linux アプリケーションを実行するように設計されています。 Gramine では、分離された環境でアプリケーションを実行できます。 既存の Docker コンテナーを SGX 対応コンテナーに変換するためのツールがサポートされています。

詳細については、Gramine のサンプルアプリケーションと AKS でのデプロイに関する説明を参照してください。

Occlum

Occlum は、Intel SGX 用のメモリセーフでマルチプロセス ライブラリの OS (LibOS) です。 この OS では、ソース コードをほとんど、またはまったく変更することなく、レガシ アプリケーションを SGX で実行できます。 Occlum では、ユーザー ワークロードの機密性が透過的に保護されながら、既存の Docker アプリケーションに簡単に「リフト アンド シフト」できます。

詳細については、Occlum の AKS でのデプロイ手順とサンプル アプリに関するページを参照してください。

Marblerun

Marblerun は、機密コンテナーのオーケストレーション フレームワークです。 SGX 対応 Kubernetes での機密サービスの実行とスケーリングができます。 Marblerun では、クラスターでのサービスの検証、それらのシークレットの管理、それらの間でのエンクレーブからエンクレーブへの mTLS 接続の確立といった定型タスクを扱います。 また、Marblerun によって、機密コンテナーのクラスターが単純な JSON で定義されたマニフェストに準拠することも保証されます。 リモート構成証明を使用して、外部クライアントでマニフェストを確認できます。

このフレームワークによって、1 つのエンクレーブの機密性、整合性、検証可能性のプロパティが、Kubernetes クラスターに拡張されます。

Marblerun では、各 SDK の例と共に、Graphene、Occlum、および EGo によって作成された機密コンテナーをサポートしています。 フレームワークは、既存のクラウドネイティブ ツールと共に Kubernetes 上で実行されます。 CLI および Helm チャートがあります。 Marblerun では、AKS 上のコンフィデンシャル コンピューティング ノードもサポートしています。 Marblerun のガイドに従って、AKS に Marblerun をデプロイします。

機密コンテナーのリファレンス アーキテクチャ

お問い合わせ

実装について質問がありますか? 機密コンテナーのためのイネーブラーにしますか? メールを acconaks@microsoft.com に送信してください。

次のステップ