この記事では、Microsoft Azure 構成証明に関連するいくつかの基本的な概念を定義します。
JSON Web トークン (JWTs)
JSON Web トークン (JWT) は、JavaScript Object Notation (JSON) オブジェクトとして関係者間で情報を安全に送信するためのオープンな標準の RFC7519 メソッドです。 この情報はデジタル署名されているため、検証および信頼できます。 JWT の署名には、シークレットを使用するか、公開/秘密キーの組を使用します。
JSON Web キー (JWK)
JSON Web キー (JWK) は、暗号化キーを表す JSON データ構造です。 この仕様では、JWK のセットを表す JWK セット JSON データ構造も定義します。
証明プロバイダー
構成証明プロバイダーは、Microsoft.Attestation という名前の Azure リソース プロバイダーに属しています。 リソース プロバイダーは、Azure Attestation REST コントラクトを提供するサービス エンドポイントであり、 Azure Resource Manager を使用してデプロイされます。 各証明プロバイダーは、特定の発見可能なポリシーを遵守する。 構成証明プロバイダーは、構成証明の種類ごとに既定のポリシーを使用して作成されます (VBS エンクレーブには既定のポリシーがないことに注意してください)。 構成証明ポリシーの例 を参照して、SGX の既定ポリシーに関する詳細をご確認ください。
認証要求
構成証明要求は、クライアント アプリケーションによって構成証明プロバイダーに送信されるシリアル化された JSON オブジェクトです。 SGX エンクレーブの要求オブジェクトには、次の 2 つのプロパティがあります。
- "Quote" – "Quote" プロパティの値は、アテステーションクォートの Base64URL エンコード表現を含む文字列です。
- "EnclaveHeldData" – "EnclaveHeldData" プロパティの値は、エンクレーブ保持データの Base64URL エンコード表現を含む文字列です。
Azure Attestation は、提供された "Quote" を検証して、指定されたエンクレーブ保持データの SHA256 ハッシュが、引用符内の reportData フィールドの最初の 32 バイトで表現されていることを確認します。
証明ポリシー
アテステーションポリシーは、アテステーションの証拠を処理するために使用され、顧客によって構成できます。 Azure Attestation の中核となるのは、証拠を構成するクレームを処理するポリシー エンジンです。 ポリシーは、Azure 構成証明が証拠に基づいて構成証明トークンを発行する (または発行しない) かどうかを判断するために使用され、構成証明者を承認する (または承認しない) ためです。 したがって、すべてのポリシーを渡さないと、JWT トークンは発行されません。
構成証明プロバイダーの既定のポリシーがニーズを満たしていない場合、お客様は Azure Attestation でサポートされている任意のリージョンでカスタム ポリシーを作成できます。 ポリシー管理は、Azure 構成証明によって顧客に提供される重要な機能です。 ポリシーは構成証明の種類に固有であり、エンクレーブを識別したり、出力トークンに要求を追加したり、出力トークンの要求を変更したりするために使用できます。
構成証明ポリシーの例を参照してください。
ポリシー署名の利点
構成証明ポリシーは、構成証明トークンが Azure Attestation によって発行されたかどうかを最終的に決定します。 ポリシーは、アテステーション トークンで生成されるクレームも決定します。 サービスによって評価されるポリシーが管理者によって記述されたポリシーであり、外部エンティティによって改ざんまたは変更されていないことが重要です。
信頼モデルは、ポリシーを定義および更新するための構成証明プロバイダーの承認モデルを定義します。 2 つのモデルがサポートされています。1 つは Microsoft Entra 承認に基づいており、1 つはカスタマー マネージド暗号化キー (分離モデルと呼ばれます) の所有に基づいています。 分離モデルを使用すると、Azure Attestation を使用して、お客様が送信したポリシーが改ざんされないようにすることができます。
分離モデルでは、管理者は、信頼された署名の X.509 証明書セットをファイルに指定して、アテステーションプロバイダーを作成します。 管理者は、署名されたポリシーを構成証明プロバイダーに追加できます。 Azure Attestation は、構成証明要求の処理中に、ヘッダーの "jwk" または "x5c" パラメーターで表される公開キーを使用してポリシーの署名を検証します。 Azure Attestation は、要求ヘッダーの公開キーが、構成証明プロバイダーに関連付けられている信頼された署名証明書の一覧に含まれているかどうかを確認します。 このようにして、証明書利用者 (Azure 構成証明) は、認識している X.509 証明書を使用して署名されたポリシーを信頼できます。
サンプルについては 、ポリシー署名者証明書の例 を参照してください。
証明トークン
Azure Attestation 応答は、値に JWT が含まれる JSON 文字列です。 Azure Attestation は要求をパッケージ化し、署名付き JWT を生成します。 署名操作は、構成証明プロバイダーの AttestUri 要素と一致するサブジェクト名を持つ自己署名証明書を使用して実行されます。
OpenID メタデータの取得 API は、 OpenID Connect Discovery プロトコルで指定された OpenID 構成応答を返します。 この API は、Azure Attestation で使用されている署名証明書に関するメタデータを取得します。
保存データの暗号化
顧客データを保護するために、Azure Attestation はデータを Azure Storage に保持します。 Azure Storage では、データがデータ センターに書き込まれる際に保存時の暗号化が提供されており、顧客がアクセスする際に復号されます。 この暗号化は、Microsoft マネージド暗号化キーを使用して行われます。
Azure Attestation では、Azure Storage 内のデータを保護するだけでなく、Azure Disk Encryption (ADE) を利用してサービス VM を暗号化します。 Azure コンフィデンシャル コンピューティング環境のエンクレーブで実行されている Azure Attestation の場合、ADE 拡張機能は現在サポートされていません。 このようなシナリオでは、データがメモリ内に格納されないようにするために、ページ ファイルが無効になります。
Azure Attestation インスタンスのローカル ハード ディスク ドライブに顧客データが保持されていません。