次の方法で共有


Azure Container Instance (ACI) 上の機密コンテナーを使用したセキュリティで保護されたキー リリース

機密コンテナー オファリングを含む Azure Key Vault (AKV) を使用したセキュリティで保護されたキー リリース (SKR) フローは、いくつかの方法で実装できます。 機密コンテナーは、Direct Linux Boot (DLB) と呼ばれる、必要な Hyper-V 関連パッチを持つゲスト ファームウェアを使用する Linux カーネルを介して、ゲスト対応の公開 AMD SEV-SNP デバイスを実行します。 このプラットフォームでは、AMD SEV-SNP がサポートされている機密 VM に基づく vTPM と HCL は使用されません。 この概念ドキュメントでは、Azure Container Support でコンフィデンシャル コンピューティング SKU を選択してコンテナーを実行しようとしていることを前提としています

  • Azure によって提供されるサイドカー ヘルパー コンテナー
  • コンテナー アプリケーションを使用したカスタム実装

Azure によって提供されるサイドカー ヘルパー コンテナー

オープン ソースの GitHub プロジェクト "confidential side-cars" では、このコンテナーを構築する方法と、このサイドカー コンテナーを準備して実行するために必要なパラメーター/環境変数について詳しく説明します。 現在のサイド カー実装では、プライマリ アプリケーション コンテナーが AKV からキーをフェッチするために使用できるさまざまな HTTP REST API が提供されています。 Microsoft Azure Attestation(MAA) による統合は既に組み込まれています。 サイドカー SKR コンテナを実行するための準備手順については、こちらをご覧ください。

メイン アプリケーション コンテナー アプリケーションは、次の例で定義されているように、サイドカー WEB API エンドポイントを呼び出すことができます。 サイドカーは同じコンテナー グループ内で実行され、アプリケーション コンテナーのローカル エンドポイントになります。 API の詳細については、こちらを参照してください。

key/release POST メソッドでは、次の形式の JSON が必要です。

{	
    "maa_endpoint": "<maa endpoint>", //https://learn.microsoft.com/en-us/azure/attestation/quickstart-portal#attestation-provider
    "akv_endpoint": "<akv endpoint>", //AKV URI
    "kid": "<key identifier>" //key name,
    "access_token": "optional aad token if the command will run in a resource without proper managed identity assigned"
}

成功すると、key/release POST メソッドの応答には、StatusOK ヘッダーと次の形式のペイロードが含まれます。

{
    "key": "<key in JSON Web Key format>"
}

エラーが発生すると、key/release POST メソッドの応答には、StatusForbidden ヘッダーと次の形式のペイロードが含まれます。

{
    "error": "<error message>"
}

コンテナー アプリケーションを使用したカスタム実装

Azure Key Vault (AKV) - セキュリティで保護されたキー リリースと Microsoft Azure Attestation (MAA) の機能を拡張するカスタム コンテナー アプリケーションを実行するには、高レベルの参照フローとして以下を使用します。 簡単な方法は、このサイドカー GitHub プロジェクトの現在のサイドカー実装コードを確認することです。

実行する必要がある前述の操作の画像。

  1. 手順 1: エクスポート可能なキーを使用して AKV を設定し、リリース ポリシーをアタッチします。 詳しくは、こちらをご覧ください
  2. 手順 2: Microsoft Entra ID を使用してマネージド ID を設定し、AKV にアタッチします。 詳しくは、こちらをご覧ください
  3. 手順 3: コンフィデンシャル コンピューティングの適用ポリシーを設定して、ACI 内に必要なパラメーターを含むコンテナー アプリケーションをデプロイします。 詳しくは、こちらをご覧ください
  4. 手順 4: この手順では、アプリケーションは IOCTL Linux ソケット呼び出しを実行して RAW AMD SEV-SNP ハードウェア レポートをフェッチします。 このアクションを実行するためにゲスト構成証明ライブラリは必要ありません。 既存のサイドカー実装の詳細
  5. 手順 5: コンテナー グループの AMD SEV-SNP 証明書チェーンをフェッチします。 これらの証明書は、Azure ホストの IMDS エンドポイントから配信されます。 詳しくは、こちらをご覧ください
  6. 手順 6: SNP RAW ハードウェア レポートと証明書の詳細を MAA に送信し、検証および要求を返します。 詳しくは、こちらをご覧ください
  7. 手順 7: ACI によって生成された MAA トークンとマネージド ID トークンを AKV に送信し、キーを解放します。 詳しくは、こちらをご覧ください

AKV からのキー フェッチが成功した場合は、キーを使用したデータ セットの暗号化の解除、または機密コンテナー環境から出るデータの暗号化ができます。

References

ACI と機密コンテナーのデプロイ

暗号化された BLOB フェッチと SKR AKV キーによる復号化を使用したサイドカー実装

AKV SKR と機密 VM の AMD SEV-SNP

Microsoft Azure Attestation (MAA)

SKR ポリシーの例