編集

次の方法で共有


Kubernetes 上の Apache Spark を使用するコンフィデンシャル コンピューティングでのビッグ データ分析

Azure Kubernetes Service (AKS)
Azure SQL データベース
Azure Data Lake

このソリューションでは、Kubernetes でコンフィデンシャル コンピューティングを使用して、機密コンテナー内の Apache Spark と、Azure Data Lake および Azure SQL Database のデータで、ビッグ データ分析を実行します。 コンフィデンシャル コンピューティングは、Secure Encrypted Virtualization-Secure Nested Paging を備えた Intel Software Guard Extensions および AMD EPYCTM プロセッサによって提供されます。 AMD SEV-SNP 機密 VM を使用した AKS クラスターのプロビジョニングの詳細については、「AMD SEV-SNP 機密 VM を使用した AKS での機密 VM ノード プールのサポート」を参照してください。 コンフィデンシャル コンピューティング Intel SGX エージェント ノードを使用した AKS クラスターのデプロイの詳細については、「Azure CLI を使用して、コンフィデンシャル コンピューティング Intel SGX エージェント ノードを含む AKS クラスターをデプロイする」を参照してください。

Apache®、Apache Ignite、Ignite、および炎のロゴは、Apache Software Foundation の米国およびその他の国における登録商標です。 これらのマークを使用することが、Apache Software Foundation による保証を意味するものではありません。

アーキテクチャ

Apache Spark、Azure SQL Always Encrypted、AKS、Secure Container Environment を使用した機密ビッグ データ分析の図。

このアーキテクチャの PowerPoint ファイルをダウンロードします。

上の図は、分散形式で大規模なデータセットを処理するためのスケーラブルなパターンであるアーキテクチャの概要を示しています。 また、リレーショナル データベース エンジンでの機密分析と、機密データの格納も示されています。 特に、コンテナー化された Spark アプリは、示されているように、2 つのデータ ソースのデータセットを処理できます。

  1. Azure Data Lake Storage - Parquet/Delta Lake ファイル: サンプルのデモで示されているように、4 ポッドの Spark デプロイ (1 つのドライバーと、 Secure Container Environment (SCONE) ランタイム上の 3 つの Executor) は、Azure Data Lake ストレージに格納されている Parquet/Delta Lake ファイルの 15 億行を、2 分つまり約 131 秒で処理できます。

  2. Azure SQL DB - セキュリティで保護されたエンクレーブが設定された Always Encrypted: この Spark を使用する例では、Spark コンテナー エンクレーブ内の Azure SQL JDBC ドライバー を使ってプレーンテキストとして Always Encrypted データにアクセスし、分析と機械学習のパイプラインを実行します。

このパターンは、Spark の大規模なエコシステムがサポートする任意のデータ ソースを含むように簡単に拡張できます。

ワークフロー

  1. オペレーター ペルソナ: DevOps エンジニアは、Kubernetes クラスター、 名前空間サービス アカウント、および機密仮想マシン (VM) ノード プール (たとえば、 DC4s_v3) をプロビジョニングします。

  2. 開発者ペルソナ: データ エンジニアは、 PySpark を使用して、大量のデータを分析するように設計された分析アプリケーションを作成します。

  3. データ管理人ペルソナ: データまたはセキュリティ エンジニアは、組織内の共有リポジトリから PySpark アプリケーション用のセキュリティ ポリシーを作成します (1 回限りのアクティビティ)。 このポリシーでは、データとアプリ コードの予想される状態、プラットフォームの最低限のセキュリティ要件、および環境変数、コマンドライン引数、またはシークレット (JDBC 文字列、入力 BLOB URI、アクセス用の SAS トークンなど) を指定します。 また、Kubernetes シークレット または Azure Key Vault を使って、この構成を Spark ランタイムで使用できるようにすることもできます。 (詳しくは、「AKS クラスターでシークレット ストア CSI ドライバーのために Azure Key Vault プロバイダーを使用する」をご覧ください)。 構成は、それが提供する証拠が構成証明プロバイダーによって検証された場合にのみ、エンクレーブに挿入されます。 構成証明プロバイダー (Azure Attestation サービスなど) は、セキュリティ ポリシーでも定義されています。

  4. SCONE コンフィデンシャル コンピューティング ソフトウェアを利用して、データ エンジニアは、暗号化された分析コードと PySpark のセキュリティ保護バージョンを含む、機密 Docker イメージをビルドします。 SCONE は、Intel SGX が有効になっている AKS クラスター内で動作するので (「システム ノード プールを含む AKS クラスターを作成する」を参照)、コンテナーはエンクレーブ内で実行できます。 PySpark は、機密データとアプリ コードが暗号化されて高信頼実行環境 (TEE) に分離されていることの証拠を提供します。これは、人間も、プロセスも、ログもプレーンテキスト データまたはアプリケーション コードにアクセスできないことを意味します。

  5. PySpark アプリケーションは、リモートの AKS クラスターにデプロイされます。 それは、開始すると、構成証明の証拠を構成証明プロバイダーに送信します。 証拠が有効な場合は、"構成証明トークン" が返されます。 リモート インフラストラクチャは、構成証明トークンを受け取ると、Azure Attestation サービスにある公開証明書でそれを検証します。 トークンが検証されると、エンクレーブが安全であり、データもアプリ コードもエンクレーブの外部で開かれていないことが、ほぼ確実になります。 次に、セキュリティ ポリシー (環境変数、コマンドライン引数、シークレット) の構成が PySpark エンクレーブに挿入されます。

  6. PySpark の実行は、複数の Kubernetes ノードにわたって水平方向にスケーリングできます。 すべての PySpark インスタンスは暗号化されたチャネルを介して通信し、ローカル ファイル システムに書き込む必要があるすべてのファイルは暗号化されます (たとえば、ファイルのシャッフル)。

  7. 分析の結果は暗号化されて、 Always Encrypted を使用する Azure SQL Database (列レベルの暗号化を使用) にアップロードされます。 出力データと暗号化キーへのアクセスは、この記事で説明されているものと同じセキュリティ ポリシーとハードウェア ベースの構成証明の証拠を使用して、他の機密アプリケーション (パイプラインなど) に安全に許可することができます。

コンポーネント

  • Azure Attestation は、プラットフォームの信頼性をリモートで検証する統合ソリューションです。 Azure Attestation は、プラットフォームで実行されているバイナリの整合性もリモートで検証します。 Azure Attestation を使用して、機密アプリケーションとの信頼関係を確立します。

  • Azure コンフィデンシャル コンピューティング ノードは、ハードウェア ベースの TEE 内の AKS で機密ワークロードを実行できる特定の VM シリーズでホストされます。 この環境では、ユーザー レベルのコードで、 エンクレーブと呼ばれるメモリのプライベート領域を割り当てることができます。 コンフィデンシャル コンピューティング ノードは、機密コンテナーまたはエンクレーブ対応のコンテナーをサポートできます。

  • Azure Kubernetes Service は、Kubernetes クラスターのデプロイと管理のプロセスを簡略化します。

  • Apache Spark は、シングルノード マシンとマルチノード クラスター (Kubernetes ポッドなど) の両方で Data Engineering、データ サイエンス、機械学習を実行するための、オープンソースの多言語エンジンです。

  • Azure SQL Database は、 セキュリティで保護されたエンクレーブが設定された Always Encrypted を提供し、 SQL Server の Always Encrypted テクノロジ のコンフィデンシャル コンピューティング機能を、インプレース暗号化と豊富な機密クエリを含むように拡張します。

  • SCONE は、Kubernetes クラスター内で実行されるコンテナーでの機密アプリケーションの実行をサポートします。

  • SCONE プラットフォーム は、独立系ソフトウェア ベンダーで Azure パートナーである Scontain のソリューションです。

代替

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

SCONE のエンジニアリング チームにより、最新バージョンの Spark を実行する Apache Spark コンテナー イメージが保守されています。 Apache Spark 固有ではない代替手段である Fortanix を使うと、コンテナー化されたアプリケーションで使用する機密コンテナーをデプロイすることができます。 Fortanix により、既存のアプリケーション、新しいエンクレーブ ネイティブ アプリケーション、事前パッケージ済みアプリケーションなど、幅広いアプリケーションのセットを実行して管理するために必要な柔軟性が提供されます。

シナリオの詳細

データセットの指数的な増加の結果として、コンシューマー データのプライバシーとコンプライアンス両方の観点から、データの公開方法に関する調査が増加しています。 このコンテキストでのコンフィデンシャル コンピューティングは、組織がビジネスやコンシューマーのデータのプライバシーとセキュリティのニーズを満たすのに役立つ重要なツールになります。 データが準拠した方法で処理される場合、組織は規制対象データから新しい分析情報を得ることができます。 コンフィデンシャル コンピューティングは、クラウド コンピューティングによって提供されるスケールが機密性を保ってデータを処理するために必要な場合に特に役立ちます。

コンフィデンシャル コンピューティング テクノロジにより、データはメモリ内で暗号化され、クラウド環境が検証 ("構成証明") された後でのみ処理されます。 コンフィデンシャル コンピューティングは、クラウド オペレーター、悪意のある管理者、およびハイパーバイザーなどの特権のあるソフトウェアによるデータ アクセスを防止します。 また、データの保存中や転送中、さらには使用中まで、ライフサイクル全体をとおしてデータを保護されたままにできます。

Azure Kubernetes Service (AKS) の機密コンテナー は、お客様が Apache Spark などの一般的なアプリケーションを使ってデータ クレンジングや機械学習トレーニングを実行するために必要なインフラストラクチャを提供します。 この記事では、Intel Software Guard Extensions (Intel SGX) でノード プールを使って、AKS クラスターで Apache Spark アプリケーションを実行するために、Azure のコンフィデンシャル コンピューティングによって提供されるソリューションについて説明します。 その処理からのデータは、セキュリティで保護されたエンクレーブが設定された Always Encrypted を使うことによって、Azure SQL Database に安全に格納されます。

注意

このコンテキストでの機密 Data Analytics は、"データ流出の心配なしに機密データの分析を実行する" ことを意味します。 これには、内部 (たとえば、悪意のある管理者による) または外部 (システムの侵害による) 両方のルート レベルでのコンテナー アクセス違反の可能性が含まれます。

機密 Data Analytics は、クラウド オペレーター、サービス、ゲスト管理者などの信頼されていないパーティを計算から削除することによって、セキュリティと機密性の最高のニーズを満たすのに役立ちます。 この方法は、ハードウェアによって裏付けられた保証によってデータ コンプライアンスのニーズを満たすのに役立ちます。

考えられるユース ケース

多くの業界 (特に金融サービス) では、次のような目的にコンフィデンシャル コンピューティングを使用することによってデータを保護しています。

考慮事項

以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

DCsv3 および DCdsv3 シリーズ の VM を使用する Azure の機密エンクレーブでは、分析などのメモリ集中型アプリケーションの実行に役立つ大きなメモリ サイズが提供されます。 このシナリオでは、Intel SGX が有効になっている DCsv3 シリーズの VM を使います。 特定のリージョンには特定のサイズのみをデプロイできます。 詳細については、「クイック スタート: Marketplace で Azure Confidential Computing VM をデプロイする」および「リージョン別の利用可能な製品」をご覧ください。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

このシナリオのセキュリティにおける 2 つの主な要素は、セキュリティで保護されたエンクレーブと構成証明です。

エンクレーブの保証

Kubernetes 管理者、または最高レベルのアクセス権を持つ特権ユーザー (root など) は、メモリの内容や、ドライバーまたは Executor のソース コードを調べることはできません。 エンクレーブ ページ キャッシュ (EPC) は、エンクレーブまたは機密コンテナーが使う Azure 機密 VM の特殊なメモリ パーティションです。 DCsv3 および DCdsv3 シリーズの VM には、セキュリティ保護されたエンクレーブを必要としないアプリを実行するために、通常の暗号化されていないメモリも付属しています。 エンクレーブへの Intel SGX の使用について詳しくは、「SGX エンクレーブを使用して構築する」をご覧ください。

構成証明

"構成証明" は、クライアントまたは "パーティ" に対し、データを交換する前に、アプリが実行されている環境が、ハードウェアとソフトウェアの両方について信頼できることの暗号化の証拠を提供するメカニズムです。 "リモート構成証明" により、クラウドで実行されている VM インスタンスや Kubernetes ノードなど、信頼されていないホストにデプロイさたワークロードが、改ざんされていないことが保証されます。 このプロセスでは、Intel SGX ハードウェアによって提供された構成証明の証拠が、構成証明プロバイダーによって分析されます。

SCONE アプリケーション (Spark ドライバーや Executor ポッドなど) でリモート構成証明を実行するには、次の 2 つのサービスが必要です。

  • ローカル構成証明サービス (LAS): 信頼されていないホスト (AKS ノード プール VM) 上で実行され、構成証明対象のアプリケーションについて Intel SGX によって提供される構成証明の証拠を収集するローカル サービス。 SCONE のアプリのデプロイ方法により、この証拠は署名され、構成と構成証明サービス (CAS) に転送されます。

  • CAS: セキュリティ ポリシー ("SCONE セッション" と呼ばれます)、構成、シークレットを管理する中心的なサービス。 CAS により、LAS で収集された構成証明の証拠と、アプリケーションのセキュリティ ポリシー (アプリケーションの所有者が定義するもの) が比較されて、エンクレーブが信頼できるかどうかが判断されます。 そうである場合、CAS はエンクレーブの実行を許可し、SCONE は構成とシークレットを安全に挿入します。 CAS とその機能 (シークレットの生成やアクセス制御など) について詳しくは、「SCONE Configuration and Attestation Service (SCONE の構成と構成証明サービス)」をご覧ください。

このシナリオでは、デモンストレーションと単純化のために SCONE によって提供される パブリック CAS を使用し、それによって各 AKS ノードで DaemonSet として実行するように LAS がデプロイされます。

コスト最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、 コスト最適化の柱の概要に関する記事をご覧ください。

このシナリオの実行コストを調べるには、 Azure 料金計算ツールを使用します。これには、すべての Azure サービスが事前構成されています。 運用ワークロードを実行するためにパートナーが必要とする追加ライセンスに注意してください。

このシナリオのデプロイ

このシナリオでのデプロイには、次の大まかなステップが含まれます。

または、Kubernetes 上の SCONE Confidential PySpark (VM) に、ローカルの minikube クラスターで再現できる同じデモが含まれています。 詳しくは、公式ドキュメント「SCONE PySpark virtual machine (SCONE PySpark 仮想マシン)」をご覧ください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

  • Amar Gowda | プリンシパル プログラム マネージャー

その他の共同作成者:

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ