Použijte účet Azure přidružený k předplatnému Azure, které obsahuje virtuální počítač.
Pokud chcete povolit spravovanou identitu přiřazenou systémem, načtěte šablonu do editoru, vyhledejte Microsoft.Compute/virtualMachines
prostředek zájmu v oddílu resources
a přidejte "identity"
vlastnost na stejné úrovni jako "type": "Microsoft.Compute/virtualMachines"
vlastnost. Použijte následující syntax:
"identity": {
"type": "SystemAssigned"
},
Konečná šablona vypadá v následujícím příkladu.
"resources": [
{
"apiVersion": "2021-11-01",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned",
},
//other resource provider properties...
}
]
Přidání zásad přístupu do služby Azure Key Vault
Jakmile pro CVM povolíte spravovanou identitu přiřazenou systémem, musíte jí poskytnout přístup k rovině dat služby Azure Key Vault, kde jsou uložené objekty klíčů. Abychom zajistili, že operaci vydávání verzí může provést jenom náš důvěrný virtuální počítač, udělíme jenom konkrétní požadované oprávnění.
Poznámka:
ID objektu spravované identity najdete v možnostech identity virtuálního počítače na webu Azure Portal. Alternativně ho můžete načíst pomocí PowerShellu, Azure CLI, Bicep nebo šablon 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'
]
}
}
]
}
}
[Šablona 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')]"
]
}
Příprava zásad vydaných verzí
Zásady zabezpečeného vydávání klíčů služby Key Vault se modelují po azure Policy s mírně odlišnou gramatikou.
Myšlenka spočívá v tom, že předáme sestavu otestované platformě ve formě webového tokenu JSON (JWT) do služby Key Vault. Naopak se podívá na JWT a zkontroluje, jestli deklarace identity otestované sestavě platformy odpovídají deklaracím identity v zásadách.
Řekněme například, že chceme vydat klíč pouze v případě, že sestava otestované platformě má vlastnosti jako:
- Ověření koncového bodu služby Microsoft Azure Attestation (MAA) "https://sharedweu.weu.attest.azure.net".
- Tato
authority
hodnota ze zásady se porovnává s iss
vlastností (vystavitele) v tokenu.
- A že obsahuje také objekt volaný
x-ms-isolation-tee
s názvem x-ms-attestation-type
vlastnosti , která obsahuje hodnotu sevsnpvm
.
- MAA jako služba Azure prokázala, že CVM běží v originálním procesoru AMD SEV-SNP.
- A že obsahuje také objekt volaný
x-ms-isolation-tee
s názvem x-ms-compliance-status
vlastnosti , která obsahuje hodnotu azure-compliant-cvm
.
- MAA jako služba Azure má možnost ověřit, že CVM je kompatibilní důvěrný virtuální počítač Azure.
Vytvořte novou složku s názvem assets
a přidejte do souboru s názvem cvm-release-policy.json
následující obsah 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"
}
]
}
]
}
Zásada uvolnění je anyOf
podmínka obsahující pole klíčových autorit. claim
Podmínka je objekt JSON, který identifikuje název deklarace identity, podmínku pro párování a hodnotu. Objekty AnyOf
a AllOf
podmínky umožňují modelování logického OR
a AND
. V současné době můžeme provést equals
pouze porovnání s claim
. Vlastnosti podmínky jsou umístěny společně s vlastnostmi authority
.
Důležité
Kontrolní výraz prostředí obsahuje alespoň šifrovací klíč klíče a jednu nebo více deklarací identity týkající se cílového prostředí (například typ TEE, vydavatel, verze), které se shodují se zásadami vydávání klíčů. Šifrovací klíč klíče je veřejný klíč RSA vlastněný a chráněný cílovým spouštěcím prostředím, které se používá k exportu klíče. Musí se zobrazit v deklaraci identity klíčů TEE (x-ms-runtime/keys). Tato deklarace identity je objekt JSON představující sadu webových klíčů JSON. V JWKS musí jeden z klíčů splňovat požadavky pro použití jako šifrovací klíč (key_use je "enc" nebo key_ops obsahuje "encrypt"). Vybere se první vhodný klíč.
Key Vault vybere první vhodný klíč z vlastnosti pole "keys
" v objektu "x-ms-runtime
" a vyhledá veřejný klíč RSA s "key_use": ["enc"]
nebo "key_ops": ["encrypt"]
. Příklad sestavy otestované platformě by vypadal takto:
{
//...
"x-ms-runtime": {
"client-payload": {
"nonce": "MTIzNA=="
},
"keys": [
{
"e": "AQAB",
"key_ops": [
"encrypt"
],
"kid": "TpmEphemeralEncryptionKey",
"kty": "RSA",
"n": "9v2XQgAA6y18CxV8dSGnh..."
}
]
},
//...
}
V tomto příkladu máme v cestě $.x-ms-runtime.keys
pouze jeden klíč. Key Vault používá TpmEphemeralEncryptionKey
klíč jako šifrovací klíč.
Poznámka:
Všimněte si, že v části $.x-ms-isolation-tee.x-ms-runtime.keys
může být klíč , nejedná se o klíč, který bude služba Key Vault používat.
Vytvoření exportovatelného klíče pomocí zásad vydaných verzí
Vytvoříme zásadu přístupu ke službě Key Vault, která umožní důvěrnému virtuálnímu počítači Azure provést release
operaci klíče. Nakonec musíme zahrnout zásady vydané verze jako řetězec kódovaný v base64 během vytváření klíče. Klíč musí být exportovatelným klíčem, který je zálohovaný modulem HSM.
Poznámka:
Klíče založené na HSM jsou k dispozici ve službě Azure Key Vault Premium a spravovaném HSM služby Azure Key Vault.
[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')
}
}
}
[Šablona 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')]"
]
}
Můžeme ověřit, že služba Key Vault vytvořila nový klíč, klíč založený na HSM a že obsahuje naše zásady vydávání zabezpečených klíčů, a to tak, že přejdete na web Azure Portal a vybereme klíč. Zamýšlený klíč se označí jako "exportovatelný".
Klient ověření identity hosta
Ověření identity nám pomáhá kryptograficky posoudit , že něco běží v zamýšleném provozním stavu. Jedná se o proces, podle kterého jedna strana, ověřovatel, posuzuje důvěryhodnost potenciálně nedůvěryhodného partnera, attestera. Díky vzdálenému ověření identity hosta nabízí důvěryhodné spouštěcí prostředí platformu, která umožňuje spustit celý operační systém uvnitř.
Důležité
Microsoft nabízí knihovnu C/C++ pro Windows i Linux , která vám může pomoct při vývoji. Knihovna umožňuje snadno získat sestavu platformy SEV-SNP z hardwaru a také ji otestovat instancí služby Azure Attestation. Služba Azure Attestation může být hostovaná microsoftem (sdíleným) nebo vaší vlastní privátní instancí.
Můžete zvolit opensourcový binární soubor klienta pro Windows a Linux, který využívá knihovnu ověření identity hosta, aby byl proces ověření identity hosta snadný pomocí CVM. Binární soubor klienta vrátí sestavu otestované platformě jako webový token JSON, což je potřeba pro operaci klíče služby Key Vault release
.
Poznámka:
Token ze služby Azure Attestation je platný po dobu 8 hodin.
[Linux]
Přihlaste se k virtuálnímu počítači.
Naklonujte ukázkovou linuxovou aplikaci.
Nainstalujte balíček build-essential
. Tento balíček nainstaluje vše potřebné pro kompilaci ukázkové aplikace.
sudo apt-get install build-essential
Nainstalujte balíčky libcurl4-openssl-dev
a libjsoncpp-dev
balíčky.
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libjsoncpp-dev
Stáhněte balíček ověření identity.
Nainstalujte balíček ověření identity. Nezapomeňte nahradit <version>
verzi, kterou jste stáhli.
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
Pokud chcete spustit ukázkového klienta, přejděte do rozbalené složky a spusťte následující příkaz:
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Poznámka:
Pokud -o
není zadán jako token
, exe vytiskne binární výsledek true nebo false v závislosti na výsledku ověření identity a platformě, která je sevsnp
.
Přihlaste se k virtuálnímu počítači.
Naklonujte ukázkovou aplikaci pro Windows.
Přejděte do rozbalené složky a spusťte VC_redist.x64.exe
. VC_redist na počítač nainstaluje knihovny modulu runtime Microsoft C a C++ (MSVC).
Pokud chcete spustit ukázkového klienta, přejděte do rozbalené složky a spusťte následující příkaz:
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Poznámka:
Pokud -o
není zadán jako token
, exe vytiskne binární výsledek true nebo false v závislosti na výsledku ověření identity a platformě, která je sevsnp
.
Výsledek ověření hosta
Výsledkem klienta ověření identity hosta je jednoduše řetězec s kódováním base64. Tato zakódovaná řetězcová hodnota je podepsaný webový token JSON (JWT) s hlavičkou, textem a podpisem. Řetězec můžete rozdělit podle .
hodnoty (tečky) a dekódovat výsledky podle base64.
eyJhbGciO...
Hlavička jku
obsahuje identifikátor URI sady JWK, který odkazuje na sadu veřejných klíčů kódovaných json. Jeden z nich odpovídá klíči použitému k digitálnímu podepsání JWS. Určuje kid
, který klíč se použil k podepsání JWS.
{
"alg": "RS256",
"jku": "https://sharedweu.weu.attest.azure.net/certs",
"kid": "dRKh+hBcWUfQimSl3Iv6ZhStW3TSOt0ThwiTgUUqZAo=",
"typ": "JWT"
}
Text odpovědi ověření identity hosta se ověří službou Azure Key Vault jako vstup pro testování zásad vydávání klíčů. Jak jsme už zmínili, Azure Key Vault používá jako šifrovací klíč "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"
}
Dokumentace ke službě Microsoft Azure Attestation obsahuje rozsáhlý seznam obsahující popis všech těchto deklarací identity souvisejících s SEV-SNP.
K přijetí sestavy otestované platformě pomocí binárního souboru AttestationClient můžeme použít libovolný skript nebo programovací jazyk. Vzhledem k tomu, že virtuální počítač, který jsme nasadili v předchozím kroku, má povolenou spravovanou identitu, měli bychom získat token Azure AD pro Key Vault ze služby IMDS (Instance Metadata Service).
Konfigurací sestavy otestované platformě jako základní datové části a tokenu Microsoft Entra v hlavičce autorizace máte vše potřebné k provedení operace klíčerelease
.
#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
}
Odpověď na vydání klíče
Operace uvolnění zabezpečeného klíče vrátí pouze jednu vlastnost uvnitř datové části JSON. Obsah byl však kódován i v base64.
{
"value": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg4RUFDM.."
}
Tady máme další hlavičku, i když tato hlavička má řetěz certifikátů X.509 jako vlastnost.
{
"alg": "RS256",
"kid": "88EAC2DB6BE4E051B0E05AEAF6CB79E675296121",
"x5t": "iOrC22vk4FGw4Frq9st55nUpYSE",
"typ": "JWT",
"x5t#S256": "BO7jbeU3BG0FEjetF8rSisRbkMfcdy0olhcnmYEwApA",
"x5c": [
"MIIIfDCCBmSgA..XQ==",
"MII..8ZZ8m",
"MII..lMrY="
]
}
Můžete číst z pole "x5c
" v PowerShellu, což vám může pomoct ověřit, že se jedná o platný certifikát. Níže je uveden příklad:
$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
Tělo tokenu JWT odpovědi vypadá neuvěřitelně podobně jako odpověď, kterou dostanete při vyvolání get
operace klíče. Operace release
však zahrnuje key_hsm
vlastnost mimo jiné.
{
"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
}
}
}
}
Pokud má vaše base64 dekódovat hodnotu v části $.response.key.release_policy.data
, získáte reprezentaci JSON zásad verze klíče key Vault, kterou jsme definovali v předchozím kroku.
Dekódovaná key_hsm
hodnota vlastnosti base64 vypadá takto:
{
"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"
}
Další kroky
Příkladyzásad SKR – Přečtěte si, jak používat integraci Microsoft Defenderu pro cloud s důvěrnými virtuálními počítači s nainstalovanýmověřením hosta. Další informace o funkciověření identity hosta najdete v tématu Informace o důvěrných virtuálních počítačích Azure