目的の VM が含まれる Azure サブスクリプションに関連付けられた Azure アカウントを使用します。
システム割り当てマネージド ID を有効にするには、テンプレートをエディターに読み込み、resources
セクション内で対象の Microsoft.Compute/virtualMachines
リソースを探し、"type": "Microsoft.Compute/virtualMachines"
プロパティと同じレベルに "identity"
プロパティを追加します。 次の構文を使用します。
"identity": {
"type": "SystemAssigned"
},
最終的なテンプレートは、次の例のようになります
"resources": [
{
"apiVersion": "2021-11-01",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned",
},
//other resource provider properties...
}
]
Azure Key Vault にアクセス ポリシーを追加する
CVM のシステム割り当てマネージド ID を有効にしたら、キー オブジェクトが格納されている Azure Key Vault データ プレーンへのアクセス権を付与する必要があります。 機密仮想マシンのみがリリース操作を実行できるように、必要な特定のアクセス許可のみを付与します。
Note
Azure portal の仮想マシン ID オプションでマネージド ID オブジェクト ID を確認できます。 または、PowerShell、Azure CLI、Bicep、または ARM テンプレートを使用して取得することもできます。
[Bicep 1]
@description('Required. Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.')
param objectId string
resource keyVaultCvmAccessPolicy 'Microsoft.KeyVault/vaults/accessPolicies@2022-07-01' = {
parent: keyVault
name: 'add'
properties: {
accessPolicies: [
{
objectId: objectId
tenantId: tenantId
permissions: {
keys: [
'release'
]
}
}
]
}
}
[ARM テンプレート 2]
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"apiVersion": "2022-07-01",
"name": "[format('{0}/{1}', 'mykeyvault', 'add')]",
"properties": {
"accessPolicies": [
{
"objectId": "[parameters('objectId')]",
"tenantId": "[parameters('tenantId')]",
"permissions": {
"keys": [
"release"
]
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', 'mykeyvault')]"
]
}
リリース ポリシーを準備する
Key Vault のセキュリティで保護されたキー リリース ポリシーは Azure Policy 後にモデル化されたため、若干文法が異なります。
JSON Web トークン (JWT) の形式で Key Vault に構成証明済みプラットフォーム レポートを渡す場合が該当します。 これが続いて JWT を調べ、構成証明済みプラットフォーム レポートの要求が、ポリシーでの要求に一致するかどうかを確認します。
たとえば、構成証明済みプラットフォーム レポートに次のようなプロパティがある場合にのみ、キーをリリースするとします。
- Microsoft Azure Attestation (MAA) サービス エンドポイント (https://sharedweu.weu.attest.azure.net") により構成証明済み。
- ポリシーからのこの
authority
値は、トークン内の iss
(issuer) プロパティと比較されます。
- また、
x-ms-attestation-type
というプロパティ (sevsnpvm
の値を保持) を持つ x-ms-isolation-tee
というオブジェクトも含まれます。
- Azure サービスとしての MAA により、CVM が AMD SEV-SNP 純正プロセッサで実行されていることが証明されています。
- また、
x-ms-compliance-status
というプロパティ (azure-compliant-cvm
の値を保持) を持つ x-ms-isolation-tee
というオブジェクトも含まれます。
- Azure サービスとしての MAA には、CVM が準拠している Azure 機密仮想マシンであることを証明する機能があります。
assets
という新しいフォルダーを作成し、次の JSON コンテンツを cvm-release-policy.json
という名前のファイルに追加します。
{
"version": "1.0.0",
"anyOf": [
{
"authority": "https://sharedweu.weu.attest.azure.net",
"allOf": [
{
"claim": "x-ms-isolation-tee.x-ms-attestation-type",
"equals": "sevsnpvm"
},
{
"claim": "x-ms-isolation-tee.x-ms-compliance-status",
"equals": "azure-compliant-cvm"
}
]
}
]
}
リリース ポリシーは、キー機関の配列を含む anyOf
条件です。 claim
条件は、要求名、照合条件、値を識別する JSON オブジェクトです。 AnyOf
条件オブジェクトと AllOf
条件オブジェクトを使用すると、論理 OR
および AND
のモデリングが可能になります。 現時点では、claim
に対してのみ equals
の比較を実行できます。 条件のプロパティは、authority
プロパティと一緒に配置されます。
重要
環境アサーションには、少なくともキー暗号化キーと、キー リリース ポリシーと一致するターゲット環境に関する 1 つ以上の要求 (TEE の型、発行元、バージョンなど) が含まれます。 キー暗号化キーは、キーのエクスポートに使用されるターゲット実行環境によって所有および保護されている公開 RSA キーです。 TEE キー要求 (x-ms-runtime/keys) に表示する必要があります。 この要求は、JSON Web Key Set を表す JSON オブジェクトです。 JWKS 内では、キーの 1 つが暗号化キーとして使用する要件を満たしている必要があります (key_use は "enc"である、またはkey_ops には "encrypt" が含まれている)。 最初の適切なキーが選択されます。
Key Vault では、"x-ms-runtime
" オブジェクトの "keys
" 配列プロパティから最初の適切なキーを選択し、"key_use": ["enc"]
または "key_ops": ["encrypt"]
を持つ公開 RSA キーを検索します。 構成証明済みプラットフォーム レポートの例は次のようになります。
{
//...
"x-ms-runtime": {
"client-payload": {
"nonce": "MTIzNA=="
},
"keys": [
{
"e": "AQAB",
"key_ops": [
"encrypt"
],
"kid": "TpmEphemeralEncryptionKey",
"kty": "RSA",
"n": "9v2XQgAA6y18CxV8dSGnh..."
}
]
},
//...
}
この例では、$.x-ms-runtime.keys
パスの下にキーが 1 つだけ含まれます。 Key Vault では、TpmEphemeralEncryptionKey
キーをキー暗号化キーとして使用します。
Note
$.x-ms-isolation-tee.x-ms-runtime.keys
の下にキーが記されている場合がありますが、これは Key Vault で使用されているキーではありません。
リリース ポリシーを使用してエクスポート可能なキーを作成する
Azure 機密仮想マシンで release
キー操作を実行できるようにする Key Vault アクセス ポリシーを作成します。 最後に、キーの作成時に、リリース ポリシーを Base64 でエンコードされた文字列として含める必要があります。 キーは、HSM で支持されるエクスポート可能なキーである必要があります。
Note
HSM で支持されるキーは、Azure Key Vault Premium と Azure Key Vault マネージド HSM で使用できます。
[Bicep 2]
@description('The type of the key. For valid values, see JsonWebKeyType. Must be backed by HSM, for secure key release.')
@allowed([
'EC-HSM'
'RSA-HSM'
])
param keyType string = 'RSA-HSM'
@description('Not before date in seconds since 1970-01-01T00:00:00Z.')
param keyNotBefore int = -1
@description('Expiry date in seconds since 1970-01-01T00:00:00Z.')
param keyExpiration int = -1
@description('The elliptic curve name. For valid values, see JsonWebKeyCurveName.')
@allowed([
'P-256'
'P-256K'
'P-384'
'P-521'
])
param curveName string
@description('The key size in bits. For example: 2048, 3072, or 4096 for RSA.')
param keySize int = -1
resource exportableKey 'Microsoft.KeyVault/vaults/keys@2022-07-01' = {
parent: keyVault
name: 'mykey'
properties: {
kty: keyType
attributes: {
exportable: true
enabled: true
nbf: keyNotBefore == -1 ? null : keyNotBefore
exp: keyExpiration == -1 ? null : keyExpiration
}
curveName: curveName // applicable when using key type (kty) 'EC'
keySize: keySize == -1 ? null : keySize
keyOps: ['encrypt','decrypt'] // encrypt and decrypt only work with RSA keys, not EC
release_policy: {
contentType: 'application/json; charset=utf-8'
data: loadFileAsBase64('assets/cvm-release-policy.json')
}
}
}
[ARM テンプレート 2]
{
"type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2022-07-01",
"name": "[format('{0}/{1}', 'mykeyvault', 'mykey')]",
"properties": {
"kty": "RSA-HSM",
"attributes": {
"exportable": true,
"enabled": true,
"nbf": "[if(equals(parameters('keyNotBefore'), -1), null(), parameters('keyNotBefore'))]",
"exp": "[if(equals(parameters('keyExpiration'), -1), null(), parameters('keyExpiration'))]"
},
"curveName": "[parameters('curveName')]",
"keySize": "[if(equals(parameters('keySize'), -1), null(), parameters('keySize'))]",
"keyOps": [
"encrypt",
"decrypt"
],
"release_policy": {
"contentType": "application/json; charset=utf-8",
"data": "[variables('cvmReleasePolicyBase64EncodedString')]"
}
},
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', 'mykeyvault')]"
]
}
Azure portal に移動してキーを選択すると、HSM で支持された新しいキーが Key Vault で作成されていること、およびセキュリティで保護されたキー リリース ポリシーが含まれていることを確認できます。 目的のキーは "エクスポート可能" としてマークされます。
ゲスト構成証明クライアント
構成証明を使用すると、何かが目的の操作状態で実行されていることを暗号的に評価できるようになります。 これは、あるパーティー (検証者) が、信頼されていない可能性のあるピア (構成証明者) の信頼性を評価するプロセスです。 リモート ゲスト構成証明を使用すると、信頼できる実行環境では、その内部でオペレーティング システム全体を実行できるようにするプラットフォームが提供されます。
重要
Microsoft では、Windows と Linux の両方に、開発作業に役立つ C/C++ ライブラリを提供しています。 このライブラリを使用すると、ハードウェアから SEV-SNP プラットフォーム レポートを簡単に取得でき、Azure Attestation サービスのインスタンスで構成証明を簡単に行わせることができます。 Azure Attestation サービスは、Microsoft によってホストされるサービス (共有) か、独自のプライベート インスタンスのどちらかになります。
CVM でゲスト構成証明プロセスを簡単にするために、ゲスト構成証明ライブラリを使用するオープン ソースの Windows および Linux クライアント バイナリを選択できます。 クライアント バイナリにより、構成証明済みプラットフォーム レポートが JSON Web トークン (Key Vault の release
キー操作に必要) として返されます。
Note
Azure Attestation サービスからのトークンは、8 時間有効です。
[Linux]
VM にサインインします。
サンプル アプリケーションの複製。
build-essential
パッケージをインストールします。 このパッケージは、サンプル アプリケーションのコンパイルに必要なすべてのものをインストールします。
sudo apt-get install build-essential
libcurl4-openssl-dev
と libjsoncpp-dev
のパッケージをインストールする。
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libjsoncpp-dev
構成証明パッケージをダウンロードします。
構成証明パッケージをインストールします。 <version>
を、ダウンロードしたバージョンに置き換えてください。
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
サンプル クライアントを実行するには、解凍したフォルダー内に移動し、次のコマンドを実行します。
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Note
-o
が token
として指定されていない場合、構成証明の結果と sevsnp
が行われているプラットフォームに応じて true または false のバイナリ結果が出力されます。
VM にサインインします。
サンプル Windows アプリケーションの複製。
解凍したフォルダー内に移動し、VC_redist.x64.exe
を実行します。 VC_redist は、Microsoft C および C++ (MSVC) ランタイム ライブラリをマシンにインストールします。
サンプル クライアントを実行するには、解凍したフォルダー内に移動し、次のコマンドを実行します。
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Note
-o
が token
として指定されていない場合、構成証明の結果と sevsnp
が行われているプラットフォームに応じて true または false のバイナリ結果が出力されます。
ゲスト構成証明結果
ゲスト構成証明クライアントからの結果は、単に base64 でエンコードされた文字列です。 エンコードされた文字列値は、ヘッダー、本文、署名を持つ、署名された JSON Web Token (JWT) です。 .
(ドット) 値で文字列を分割し、Base64 で結果をデコードできます。
eyJhbGciO...
ヘッダーには、jku
(JWK Set URI とも呼ばれます) が含まれ、これは JSON でエンコードされた公開キーのセットにリンクされます。 これらの 1 つが、JWS にデジタル署名するために使用されるキーに対応します。 kid
には、JWS への署名に使用されたキーが示されます。
{
"alg": "RS256",
"jku": "https://sharedweu.weu.attest.azure.net/certs",
"kid": "dRKh+hBcWUfQimSl3Iv6ZhStW3TSOt0ThwiTgUUqZAo=",
"typ": "JWT"
}
ゲスト構成証明応答の本文は、キー リリース ポリシーに対してテストするための入力として、Azure Key Vault によって検証されます。 前述のように、Azure Key Vault ではキー暗号化キーとして "TpmEphemeralEncryptionKey
" が使用されます。
{
"exp": 1671865218,
"iat": 1671836418,
"iss": "https://sharedweu.weu.attest.azure.net",
"jti": "ce395e5de9c638d384cd3bd06041e674edee820305596bba3029175af2018da0",
"nbf": 1671836418,
"secureboot": true,
"x-ms-attestation-type": "azurevm",
"x-ms-azurevm-attestation-protocol-ver": "2.0",
"x-ms-azurevm-attested-pcrs": [
0,
1,
2,
3,
4,
5,
6,
7
],
"x-ms-azurevm-bootdebug-enabled": false,
"x-ms-azurevm-dbvalidated": true,
"x-ms-azurevm-dbxvalidated": true,
"x-ms-azurevm-debuggersdisabled": true,
"x-ms-azurevm-default-securebootkeysvalidated": true,
"x-ms-azurevm-elam-enabled": false,
"x-ms-azurevm-flightsigning-enabled": false,
"x-ms-azurevm-hvci-policy": 0,
"x-ms-azurevm-hypervisordebug-enabled": false,
"x-ms-azurevm-is-windows": false,
"x-ms-azurevm-kerneldebug-enabled": false,
"x-ms-azurevm-osbuild": "NotApplication",
"x-ms-azurevm-osdistro": "Ubuntu",
"x-ms-azurevm-ostype": "Linux",
"x-ms-azurevm-osversion-major": 20,
"x-ms-azurevm-osversion-minor": 4,
"x-ms-azurevm-signingdisabled": true,
"x-ms-azurevm-testsigning-enabled": false,
"x-ms-azurevm-vmid": "6506B531-1634-431E-99D2-42B7D3414AD0",
"x-ms-isolation-tee": {
"x-ms-attestation-type": "sevsnpvm",
"x-ms-compliance-status": "azure-compliant-cvm",
"x-ms-runtime": {
"keys": [
{
"e": "AQAB",
"key_ops": [
"encrypt"
],
"kid": "HCLAkPub",
"kty": "RSA",
"n": "tXkRLAABQ7vgX96..1OQ"
}
],
"vm-configuration": {
"console-enabled": true,
"current-time": 1671835548,
"secure-boot": true,
"tpm-enabled": true,
"vmUniqueId": "6506B531-1634-431E-99D2-42B7D3414AD0"
}
},
"x-ms-sevsnpvm-authorkeydigest": "0000000000000..00",
"x-ms-sevsnpvm-bootloader-svn": 3,
"x-ms-sevsnpvm-familyId": "01000000000000000000000000000000",
"x-ms-sevsnpvm-guestsvn": 2,
"x-ms-sevsnpvm-hostdata": "0000000000000000000000000000000000000000000000000000000000000000",
"x-ms-sevsnpvm-idkeydigest": "57486a44..96",
"x-ms-sevsnpvm-imageId": "02000000000000000000000000000000",
"x-ms-sevsnpvm-is-debuggable": false,
"x-ms-sevsnpvm-launchmeasurement": "ad6de16..23",
"x-ms-sevsnpvm-microcode-svn": 115,
"x-ms-sevsnpvm-migration-allowed": false,
"x-ms-sevsnpvm-reportdata": "c6500..0000000",
"x-ms-sevsnpvm-reportid": "cf5ea742f08cb45240e8ad4..7eb7c6c86da6493",
"x-ms-sevsnpvm-smt-allowed": true,
"x-ms-sevsnpvm-snpfw-svn": 8,
"x-ms-sevsnpvm-tee-svn": 0,
"x-ms-sevsnpvm-vmpl": 0
},
"x-ms-policy-hash": "wm9mHlvTU82e8UqoOy1..RSNkfe99-69IYDq9eWs",
"x-ms-runtime": {
"client-payload": {
"nonce": ""
},
"keys": [
{
"e": "AQAB",
"key_ops": [
"encrypt"
],
"kid": "TpmEphemeralEncryptionKey", // key-encryption key candidate!
"kty": "RSA",
"n": "kVTLSwAAQpg..Q"
}
]
},
"x-ms-ver": "1.0"
}
Microsoft Azure Attestation サービスのドキュメントには、これらの SEV-SNP 関連の要求すべてに関する説明を含んだ広範な一覧があります。
AttestationClient バイナリを使用して構成証明済みプラットフォーム レポートを受信するには、どのスクリプト言語でもプログラミング言語でも使用できます。 前の手順でデプロイした仮想マシンではマネージド ID が有効になっているため、Instance Metadata Service (IMDS) から Key Vault 用の Azure AD トークンを取得する必要があります。
構成証明済みのプラットフォーム レポートを本文ペイロードとして、Microsoft Entra トークンを認可ヘッダーで構成することで、キー release
の操作を実行するために必要なものがすべて揃います。
#Requires -Version 7
#Requires -RunAsAdministrator
#Requires -PSEdition Core
<#
.SYNOPSIS
Perform Secure Key Release operation in Azure Key Vault, provided this script is running inside an Azure Confidential Virtual Machine.
.DESCRIPTION
Perform Secure Key Release operation in Azure Key Vault, provided this script is running inside an Azure Confidential Virtual Machine.
The release key operation is applicable to all key types. The target key must be marked exportable. This operation requires the keys/release permission.
.PARAMETER -AttestationTenant
Provide the attestation instance base URI, for example https://mytenant.attest.azure.net.
.PARAMETER -VaultBaseUrl
Provide the vault name, for example https://myvault.vault.azure.net.
.PARAMETER -KeyName
Provide the name of the key to get.
.PARAMETER -KeyName
Provide the version parameter to retrieve a specific version of a key.
.INPUTS
None.
.OUTPUTS
System.Management.Automation.PSObject
.EXAMPLE
PS C:\> .\Invoke-SecureKeyRelease.ps1 -AttestationTenant "https://sharedweu.weu.attest.azure.net" -VaultBaseUrl "https://mykeyvault.vault.azure.net/" -KeyName "mykey" -KeyVersion "e473cd4c66224d16870bbe2eb4c58078"
#>
param (
[Parameter(Mandatory = $true)]
[string]
$AttestationTenant,
[Parameter(Mandatory = $true)]
[string]
$VaultBaseUrl,
[Parameter(Mandatory = $true)]
[string]
$KeyName,
[Parameter(Mandatory = $false)]
[string]
$KeyVersion
)
# Check if AttestationClient* exists.
$fileExists = Test-Path -Path "AttestationClient*"
if (!$fileExists) {
throw "AttestationClient binary not found. Please download it from 'https://github.com/Azure/confidential-computing-cvm-guest-attestation'."
}
$cmd = $null
if ($isLinux) {
$cmd = "sudo ./AttestationClient -a $attestationTenant -o token"
}
elseif ($isWindows) {
$cmd = "./AttestationClientApp.exe -a $attestationTenant -o token"
}
$attestedPlatformReportJwt = Invoke-Expression -Command $cmd
if (!$attestedPlatformReportJwt.StartsWith("eyJ")) {
throw "AttestationClient failed to get an attested platform report."
}
## Get access token from IMDS for Key Vault
$imdsUrl = 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://vault.azure.net'
$kvTokenResponse = Invoke-WebRequest -Uri $imdsUrl -Headers @{Metadata = "true" }
if ($kvTokenResponse.StatusCode -ne 200) {
throw "Unable to get access token. Ensure Azure Managed Identity is enabled."
}
$kvAccessToken = ($kvTokenResponse.Content | ConvertFrom-Json).access_token
# Perform release key operation
if ([string]::IsNullOrEmpty($keyVersion)) {
$kvReleaseKeyUrl = "{0}/keys/{1}/release?api-version=7.3" -f $vaultBaseUrl, $keyName
}
else {
$kvReleaseKeyUrl = "{0}/keys/{1}/{2}/release?api-version=7.3" -f $vaultBaseUrl, $keyName, $keyVersion
}
$kvReleaseKeyHeaders = @{
Authorization = "Bearer $kvAccessToken"
'Content-Type' = 'application/json'
}
$kvReleaseKeyBody = @{
target = $attestedPlatformReportJwt
}
$kvReleaseKeyResponse = Invoke-WebRequest -Method POST -Uri $kvReleaseKeyUrl -Headers $kvReleaseKeyHeaders -Body ($kvReleaseKeyBody | ConvertTo-Json)
if ($kvReleaseKeyResponse.StatusCode -ne 200) {
Write-Error -Message "Unable to perform release key operation."
Write-Error -Message $kvReleaseKeyResponse.Content
}
else {
$kvReleaseKeyResponse.Content | ConvertFrom-Json
}
キー リリース応答
セキュリティで保護されたキー リリース操作では、JSON ペイロード内の 1 つのプロパティのみが返されます。 ただし、コンテンツも Base64 でエンコードされています。
{
"value": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg4RUFDM.."
}
ここでは別のヘッダーがありますが、このヘッダーにはプロパティとして X.509 証明書チェーンが含まれています。
{
"alg": "RS256",
"kid": "88EAC2DB6BE4E051B0E05AEAF6CB79E675296121",
"x5t": "iOrC22vk4FGw4Frq9st55nUpYSE",
"typ": "JWT",
"x5t#S256": "BO7jbeU3BG0FEjetF8rSisRbkMfcdy0olhcnmYEwApA",
"x5c": [
"MIIIfDCCBmSgA..XQ==",
"MII..8ZZ8m",
"MII..lMrY="
]
}
PowerShell の "x5c
" 配列から読み取ることができます。これは、これが有効な証明書であることを確認する場合に役立ちます。 次に例を示します。
$certBase64 = "MIIIfDCCBmSgA..XQ=="
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]([System.Convert]::FromBase64String($certBase64))
$cert | Format-List *
# NotAfter : 9/18/2023 6:14:06 PM
# NotBefore : 9/23/2022 6:14:06 PM
# ...
# Issuer : CN=Microsoft Azure TLS Issuing CA 06, O=Microsoft Corporation, C=US
# Subject : CN=vault.azure.net, O=Microsoft Corporation, L=Redmond, S=WA, C=US
応答の JWT トークン本文は、get
キー操作の呼び出し時に取得する応答と非常に似ているように見えます。 ただし、release
操作には特に key_hsm
プロパティが含まれます。
{
"request": {
"api-version": "7.3",
"enc": "CKM_RSA_AES_KEY_WRAP",
"kid": "https://mykeyvault.vault.azure.net/keys/mykey"
},
"response": {
"key": {
"key": {
"kid": "https://mykeyvault.vault.azure.net/keys/mykey/e473cd4c66224d16870bbe2eb4c58078",
"kty": "RSA-HSM",
"key_ops": [
"encrypt",
"decrypt"
],
"n": "nwFQ8p..20M",
"e": "AQAB",
"key_hsm": "eyJzY2hlbW..GIifQ"
},
"attributes": {
"enabled": true,
"nbf": 1671577355,
"exp": 1703113355,
"created": 1671577377,
"updated": 1671827011,
"recoveryLevel": "Recoverable+Purgeable",
"recoverableDays": 90,
"exportable": true
},
"tags": {},
"release_policy": {
"data": "eyJ2ZXJzaW9uIjoiMS4wLjAiLCJhbnlPZiI6W3siYXV0aG9yaXR5IjoiaHR0cHM6Ly9zaGFyZWR3ZXUud2V1LmF0dGVzdC5henVyZS5uZXQiLCJhbGxPZiI6W3siY2xhaW0iOiJ4LW1zLWlzb2xhdGlvbi10ZWUueC1tcy1hdHRlc3RhdGlvbi10eXBlIiwiZXF1YWxzIjoic2V2c25wdm0ifSx7ImNsYWltIjoieC1tcy1pc29sYXRpb24tdGVlLngtbXMtY29tcGxpYW5jZS1zdGF0dXMiLCJlcXVhbHMiOiJhenVyZS1jb21wbGlhbnQtY3ZtIn1dfV19",
"immutable": false
}
}
}
}
Base64 で $.response.key.release_policy.data
の下の値をデコードすると、前の手順で定義した Key Vault キー リリース ポリシーの JSON 表現が得られます。
key_hsm
プロパティの Base64 でデコードした値は、次のようになります。
{
"schema_version": "1.0",
"header": {
"kid": "TpmEphemeralEncryptionKey", // (key identifier of KEK)
"alg": "dir", // Direct mode, i.e. the referenced 'kid' is used to directly protect the ciphertext
"enc": "CKM_RSA_AES_KEY_WRAP"
},
"ciphertext": "Rftxvr..lb"
}
次のステップ
SKR ポリシーの例ゲスト構成証明がインストールされた機密 VM との Microsoft Defender for Cloud の統合を使用する方法について確認するゲスト構成証明機能の詳細を確認するAzure 機密 VM について確認する