Usare un account Azure associato alla sottoscrizione di Azure che contiene la macchina virtuale.
Per abilitare l'identità gestita assegnata dal sistema, caricare il modello in un editor, individuare la risorsa interessata Microsoft.Compute/virtualMachines
nella sezione resources
e aggiungere la proprietà "identity"
allo stesso livello della proprietà "type": "Microsoft.Compute/virtualMachines"
. Usare la sintassi seguente:
"identity": {
"type": "SystemAssigned"
},
Il modello finale è simile all'esempio seguente
"resources": [
{
"apiVersion": "2021-11-01",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned",
},
//other resource provider properties...
}
]
Aggiungere i criteri di accesso ad Azure Key Vault
Dopo aver abilitato un'identità gestita assegnata dal sistema per il CVM, è necessario fornire l'accesso al piano dati di Azure Key Vault in cui sono archiviati gli oggetti chiave. Per assicurarsi che solo la macchina virtuale riservata possa eseguire l'operazione di rilascio, verrà concessa solo l'autorizzazione specifica richiesta.
Nota
È possibile trovare l'ID oggetto identità gestita nelle opzioni di identità della macchina virtuale nella portale di Azure. In alternativa, è possibile recuperarlo con PowerShell, l'interfaccia della riga di comando di Azure, i modelli Bicep o 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'
]
}
}
]
}
}
[Modello 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')]"
]
}
Preparare i criteri di rilascio
I criteri di rilascio delle chiavi sicure di Key Vault vengono modellati dopo Criteri di Azure, con una grammatica leggermente diversa.
L'idea è quando si passa il report della piattaforma attestata, sotto forma di token JSON Web (JWT) a Key Vault. A sua volta, esaminerà il token JWT e verificherà se le attestazioni del report della piattaforma attestate corrispondono alle attestazioni nei criteri.
Si supponga, ad esempio, di voler rilasciare una chiave solo quando il report della piattaforma attestata ha proprietà come:
- Attestazione da parte dell'endpoint del servizio microsoft attestazione di Azure (MAA) "https://sharedweu.weu.attest.azure.net".
- Questo
authority
valore del criterio viene confrontato con la iss
proprietà (autorità di certificazione) nel token.
- E che contiene anche un oggetto denominato con una proprietà denominata
x-ms-isolation-tee
x-ms-attestation-type
, che contiene il valore sevsnpvm
.
- MAA come servizio di Azure ha attestato che cvm è in esecuzione in un processore originale AMD edizione Standard V-SNP.
- E che contiene anche un oggetto denominato con una proprietà denominata
x-ms-isolation-tee
x-ms-compliance-status
, che contiene il valore azure-compliant-cvm
.
- MAA come servizio di Azure ha la possibilità di attestare che CVM è una macchina virtuale riservata di Azure conforme.
Creare una nuova cartella denominata assets
e aggiungere il contenuto JSON seguente a un file denominato 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"
}
]
}
]
}
I criteri di rilascio sono una anyOf
condizione contenente una matrice di autorità chiave. Una claim
condizione è un oggetto JSON che identifica un nome di attestazione, una condizione per la corrispondenza e un valore. Gli AnyOf
oggetti condizione e AllOf
consentono la modellazione di un oggetto logico OR
e AND
. Attualmente, è possibile eseguire un equals
confronto solo su un oggetto claim
. Le proprietà della condizione vengono posizionate insieme alle authority
proprietà.
Importante
Un'asserzione dell'ambiente contiene almeno una chiave di crittografia della chiave e una o più attestazioni relative all'ambiente di destinazione (ad esempio, tipo T edizione Enterprise, editore, versione) corrispondenti ai criteri di rilascio della chiave. La chiave di crittografia della chiave è una chiave RSA pubblica di proprietà e protetta dall'ambiente di esecuzione di destinazione usato per l'esportazione delle chiavi. Deve essere visualizzato nell'attestazione delle chiavi T edizione Enterprise (x-ms-runtime/keys). Questa attestazione è un oggetto JSON che rappresenta un set di chiavi Web JSON. All'interno di JWKS, una delle chiavi deve soddisfare i requisiti per l'uso come chiave di crittografia (key_use è "enc" o key_ops contiene "encrypt"). Viene scelta la prima chiave appropriata.
Key Vault seleziona la prima chiave appropriata dalla proprietà della matrice "keys
" nell'oggetto "x-ms-runtime
", cerca una chiave RSA pubblica con "key_use": ["enc"]
o "key_ops": ["encrypt"]
. Un esempio di report della piattaforma attestato sarà simile al seguente:
{
//...
"x-ms-runtime": {
"client-payload": {
"nonce": "MTIzNA=="
},
"keys": [
{
"e": "AQAB",
"key_ops": [
"encrypt"
],
"kid": "TpmEphemeralEncryptionKey",
"kty": "RSA",
"n": "9v2XQgAA6y18CxV8dSGnh..."
}
]
},
//...
}
In questo esempio è presente una sola chiave nel $.x-ms-runtime.keys
percorso. Key Vault usa la TpmEphemeralEncryptionKey
chiave come chiave di crittografia della chiave.
Nota
Si noti che potrebbe essere presente una chiave in $.x-ms-isolation-tee.x-ms-runtime.keys
, questa non è la chiave che verrà usata da Key Vault.
Creare una chiave esportabile con i criteri di rilascio
Viene creato un criterio di accesso di Key Vault che consente a una macchina virtuale riservata di Azure di eseguire l'operazione release
di chiave. Infine, è necessario includere i criteri di rilascio come stringa con codifica Base64 durante la creazione della chiave. La chiave deve essere una chiave esportabile , supportata da un modulo di protezione hardware.
Nota
Le chiavi supportate dal modulo di protezione hardware sono disponibili con Azure Key Vault Premium e il modulo di protezione hardware gestito di 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')
}
}
}
[Modello 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')]"
]
}
È possibile verificare che Key Vault abbia creato una nuova chiave supportata dal modulo di protezione hardware e che contenga i criteri di rilascio delle chiavi sicure passando alla portale di Azure e selezionando la chiave. La chiave desiderata verrà contrassegnata come "esportabile".
Client di attestazione guest
L'attestazione consente di valutare in modo crittografico che un elemento è in esecuzione nello stato operativo previsto. È il processo in base al quale una parte, il verificatore, valuta l'attendibilità di un peer potenzialmente non attendibile, l'attestazione. Con l'attestazione guest remota, l'ambiente di esecuzione attendibile offre una piattaforma che consente di eseguire un intero sistema operativo al suo interno.
Importante
Microsoft offre una libreria C/C++, sia per Windowsche per Linux che per supportare le attività di sviluppo. La libreria semplifica l'acquisizione di un report della piattaforma edizione Standard V-SNP dall'hardware e l'attestazione da parte di un'istanza del servizio attestazione di Azure. Il servizio attestazione di Azure può essere ospitato da Microsoft (condiviso) o dalla propria istanza privata.
Un file binario client Windows e Linux open source che usa la libreria di attestazioni guest può essere scelto per semplificare il processo di attestazione guest con cvM. Il file binario client restituisce il report della piattaforma attestato come token Web JSON, che è ciò che è necessario per l'operazione di chiave di release
Key Vault.
Nota
Un token del servizio attestazione di Azure è valido per 8 ore.
[Linux]
Accedere alla VM.
Clonare l'applicazione Linux di esempio.
Installare il pacchetto build-essential
. Questo pacchetto installa tutti gli elementi necessari per compilare l'applicazione di esempio.
sudo apt-get install build-essential
Installare i pacchetti libcurl4-openssl-dev
e libjsoncpp-dev
.
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libjsoncpp-dev
Scaricare il pacchetto di attestazione.
Installare il pacchetto di attestazione. Assicurarsi di sostituire <version>
con la versione scaricata.
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
Per eseguire il client di esempio, passare all'interno della cartella decompressa ed eseguire il comando seguente:
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Nota
Se -o
non viene specificato su come token
, l'exe stampa un risultato binario true o false a seconda del risultato dell'attestazione e della piattaforma .sevsnp
Accedere alla VM.
Clonare l'applicazione Windows di esempio.
Spostarsi all'interno della cartella decompressa ed eseguire VC_redist.x64.exe
. VC_redist installerà le librerie di runtime di Microsoft C e C++ (MSVC) nel computer.
Per eseguire il client di esempio, passare all'interno della cartella decompressa ed eseguire il comando seguente:
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Nota
Se -o
non viene specificato su come token
, l'exe stampa un risultato binario true o false a seconda del risultato dell'attestazione e della piattaforma .sevsnp
Risultato attestazione guest
Il risultato del client di attestazione guest è semplicemente una stringa con codifica Base64. Questo valore stringa codificato è un token JSON Web (JWT) firmato, con un'intestazione, un corpo e una firma. È possibile dividere la stringa in base al .
valore (punto) e decodificare i risultati in base64.
eyJhbGciO...
L'intestazione contiene un jku
, noto anche come URI set JWK che collega a un set di chiavi pubbliche con codifica JSON. Uno dei quali corrisponde alla chiave usata per firmare digitalmente il JWS. Indica kid
quale chiave è stata usata per firmare il JWS.
{
"alg": "RS256",
"jku": "https://sharedweu.weu.attest.azure.net/certs",
"kid": "dRKh+hBcWUfQimSl3Iv6ZhStW3TSOt0ThwiTgUUqZAo=",
"typ": "JWT"
}
Il corpo della risposta di attestazione guest verrà convalidato da Azure Key Vault come input per testare i criteri di rilascio della chiave. Come indicato in precedenza, Azure Key Vault usa "TpmEphemeralEncryptionKey
" come chiave di crittografia della chiave.
{
"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"
}
La documentazione per il servizio Microsoft attestazione di Azure include un elenco completo contenente le descrizioni di tutte queste attestazioni correlate a edizione Standard V-SNP.
È possibile usare qualsiasi linguaggio di scripting o programmazione per ricevere un report della piattaforma attestato usando il file binario AttestationClient. Poiché la macchina virtuale distribuita in un passaggio precedente ha abilitato l'identità gestita, è necessario ottenere un token di Azure AD per Key Vault dal servizio di metadati dell'istanza (IMDS).
Configurando il report della piattaforma attestata come payload del corpo e il token Microsoft Entra nell'intestazione di autorizzazione, sono necessari tutti gli elementi necessari per eseguire l'operazione della chiaverelease
.
#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
}
Risposta alla versione chiave
L'operazione di rilascio della chiave sicura restituisce solo una singola proprietà all'interno del payload JSON. Il contenuto, tuttavia, è stato codificato anche in base64.
{
"value": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg4RUFDM.."
}
Qui abbiamo un'altra intestazione, anche se questa ha una catena di certificati X.509 come proprietà.
{
"alg": "RS256",
"kid": "88EAC2DB6BE4E051B0E05AEAF6CB79E675296121",
"x5t": "iOrC22vk4FGw4Frq9st55nUpYSE",
"typ": "JWT",
"x5t#S256": "BO7jbeU3BG0FEjetF8rSisRbkMfcdy0olhcnmYEwApA",
"x5c": [
"MIIIfDCCBmSgA..XQ==",
"MII..8ZZ8m",
"MII..lMrY="
]
}
È possibile leggere dalla matrice "x5c
" in PowerShell. Ciò consente di verificare che si tratta di un certificato valido. Di seguito è riportato un esempio:
$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
Il corpo del token JWT della risposta è incredibilmente simile alla risposta che si ottiene quando si richiama l'operazione get
della chiave. Tuttavia, l'operazione release
include la key_hsm
proprietà , tra le altre cose.
{
"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
}
}
}
}
Se il valore base64 viene decodificato in $.response.key.release_policy.data
, si ottiene la rappresentazione JSON dei criteri di rilascio delle chiavi di Key Vault definiti in un passaggio precedente.
Il key_hsm
valore decodificato della proprietà base64 è simile al seguente:
{
"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"
}
Passaggi successivi
Esempi dicriteri SKR Informazioni su come usare l'integrazione Microsoft Defender per il cloud con macchine virtuali riservate con l'attestazione guest installataAltre informazioni sulla funzionalitàdi attestazione guest Informazioni sulle macchine virtuali riservate di Azure