Gebruik een Azure-account dat is gekoppeld aan het Azure-abonnement dat de VIRTUELE machine bevat.
Als u de door het systeem toegewezen beheerde identiteit wilt inschakelen, laadt u de sjabloon in een editor, zoekt u de gewenste Microsoft.Compute/virtualMachines
-resource op in de sectie resources
en voegt u de eigenschap "identity"
op hetzelfde niveau toe als de eigenschap "type": "Microsoft.Compute/virtualMachines"
. Gebruik de volgende syntaxis:
"identity": {
"type": "SystemAssigned"
},
De uiteindelijke sjabloon ziet er in het onderstaande voorbeeld uit
"resources": [
{
"apiVersion": "2021-11-01",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned",
},
//other resource provider properties...
}
]
Het toegangsbeleid toevoegen aan Azure Key Vault
Zodra u een door het systeem toegewezen beheerde identiteit voor uw CVM hebt ingeschakeld, moet u deze toegang bieden tot het azure Key Vault-gegevensvlak waar sleutelobjecten worden opgeslagen. Om ervoor te zorgen dat alleen onze vertrouwelijke virtuele machine de releasebewerking kan uitvoeren, verlenen we alleen de specifieke vereiste machtiging.
Notitie
U vindt de object-id van de beheerde identiteit in de identiteitsopties van de virtuele machine in Azure Portal. U kunt deze ook ophalen met PowerShell-, Azure CLI-, Bicep- of ARM-sjablonen.
[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-sjabloon 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')]"
]
}
Het releasebeleid voorbereiden
Key Vault Secure Key Release-beleid wordt gemodelleerd na Azure Policy, met een iets andere grammatica.
Het idee is wanneer we het geteste platformrapport, in de vorm van een JSON-webtoken (JWT), doorgeven aan Key Vault. Op zijn beurt bekijkt u de JWT en controleert u of de geteste platformrapportclaims overeenkomen met de claims in het beleid.
Stel dat we alleen een sleutel willen vrijgeven wanneer ons geteste platformrapport eigenschappen heeft, zoals:
- Getest door het service-eindpunthttps://sharedweu.weu.attest.azure.net" van Microsoft Azure Attestation (MAA).
- Deze
authority
waarde van het beleid wordt vergeleken met de iss
eigenschap (verlener) in het token.
- En dat het ook een object bevat dat wordt aangeroepen
x-ms-isolation-tee
met een eigenschap x-ms-attestation-type
die de waarde sevsnpvm
bevat.
- MAA als een Azure-service heeft getest dat de CVM wordt uitgevoerd in een legitieme AMD SEV-SNP-processor.
- En dat het ook een object bevat dat wordt aangeroepen
x-ms-isolation-tee
x-ms-compliance-status
met een eigenschap die de waarde azure-compliant-cvm
bevat.
- MAA als een Azure-service heeft de mogelijkheid om te bevestigen dat de CVM een compatibele azure confidential virtuele machine is.
Maak een nieuwe map met de naam assets
en voeg de volgende JSON-inhoud toe aan een bestand met de naam 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"
}
]
}
]
}
Releasebeleid is een anyOf
voorwaarde die een matrix met belangrijke autoriteiten bevat. Een claim
voorwaarde is een JSON-object dat een claimnaam, een voorwaarde voor overeenkomst en een waarde identificeert. De AnyOf
objecten en AllOf
voorwaarden maken het modelleren van een logische OR
en AND
. Op dit moment kunnen we alleen een equals
vergelijking uitvoeren op een claim
. Voorwaarde-eigenschappen worden samen met authority
eigenschappen geplaatst.
Belangrijk
Een omgevingsverklaring bevat ten minste een sleutelversleutelingssleutel en een of meer claims over de doelomgeving (bijvoorbeeld TEE-type, uitgever, versie) die overeenkomen met het sleutelreleasebeleid. De sleutelversleutelingssleutel is een openbare RSA-sleutel die eigendom is van en wordt beveiligd door de doeluitvoeringsomgeving die wordt gebruikt voor sleutelexport. Deze moet worden weergegeven in de TEE-sleutelsclaim (x-ms-runtime/keys). Deze claim is een JSON-object dat een JSON-websleutelset vertegenwoordigt. Binnen de JWKS moet een van de sleutels voldoen aan de vereisten voor gebruik als versleutelingssleutel (key_use is 'enc' of key_ops 'versleutelen' bevat). De eerste geschikte sleutel wordt gekozen.
Key Vault kiest de eerste geschikte sleutel uit de matrixeigenschap 'keys
' in het object 'x-ms-runtime
' en zoekt naar een openbare RSA-sleutel met "key_use": ["enc"]
of "key_ops": ["encrypt"]
. Een voorbeeld van een getest platformrapport ziet er als volgt uit:
{
//...
"x-ms-runtime": {
"client-payload": {
"nonce": "MTIzNA=="
},
"keys": [
{
"e": "AQAB",
"key_ops": [
"encrypt"
],
"kid": "TpmEphemeralEncryptionKey",
"kty": "RSA",
"n": "9v2XQgAA6y18CxV8dSGnh..."
}
]
},
//...
}
In dit voorbeeld hebben we slechts één sleutel onder het $.x-ms-runtime.keys
pad. Key Vault gebruikt de TpmEphemeralEncryptionKey
sleutel als de sleutelversleutelingssleutel.
Notitie
U ziet dat er mogelijk een sleutel onder $.x-ms-isolation-tee.x-ms-runtime.keys
staat. Dit is niet de sleutel die door Key Vault wordt gebruikt.
Een exportbare sleutel maken met releasebeleid
We maken een Key Vault-toegangsbeleid waarmee een Azure Confidential Virtual Machine de release
sleutelbewerking kan uitvoeren. Ten slotte moeten we ons releasebeleid opnemen als een base64-gecodeerde tekenreeks tijdens het maken van de sleutel. De sleutel moet een exportbare sleutel zijn, ondersteund door een HSM.
Notitie
Met HSM ondersteunde sleutels zijn beschikbaar met Azure Key Vault Premium en Azure Key Vault Managed 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-sjabloon 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')]"
]
}
We kunnen controleren of Key Vault een nieuwe, met HSM ondersteunde sleutel heeft gemaakt en of deze het beveiligingsbeleid voor sleutelrelease bevat door naar Azure Portal te navigeren en onze sleutel te selecteren. De beoogde sleutel wordt gemarkeerd als 'exporteerbaar'.

Gast attestation-client
Attestation helpt ons om cryptografisch te beoordelen of er iets wordt uitgevoerd in de beoogde operationele status. Het is het proces waarbij één partij, de verificator, de betrouwbaarheid van een potentieel niet-vertrouwde peer, de attester beoordeelt. Met externe gastattestation biedt de vertrouwde uitvoeringsomgeving een platform waarmee u een volledig besturingssysteem erin kunt uitvoeren.
Belangrijk
Microsoft biedt een C/C++-bibliotheek voor zowel Windows als Linux die u kunnen helpen bij het ontwikkelen. De bibliotheek maakt het eenvoudig om een SEV-SNP-platformrapport te verkrijgen van de hardware en om het ook te laten testen door een exemplaar van de Azure Attestation-service. De Azure Attestation-service kan één worden gehost door Microsoft (gedeeld) of uw eigen privé-exemplaar.
Een open source windows - en Linux-client binair bestand dat gebruikmaakt van de gast attestation-bibliotheek kan worden gekozen om het proces voor gastattest eenvoudig te maken met CVM's. Het binaire clientbestand retourneert het geteste platformrapport als een JSON-webtoken, wat nodig is voor de sleutelbewerking van release
Key Vault.
Notitie
Een token van de Azure Attestation-service is acht uur geldig.
[Linux]
Meld u aan bij uw virtuele machine.
Kloon de Linux-voorbeeldtoepassing.
Installeer het build-essential
-pakket. Met dit pakket wordt alles geïnstalleerd dat nodig is voor het compileren van de voorbeeldtoepassing.
sudo apt-get install build-essential
Installeer de libcurl4-openssl-dev
en libjsoncpp-dev
pakketten.
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libjsoncpp-dev
Download het attestation-pakket.
Installeer het Attestation-pakket. Zorg ervoor dat u vervangt door <version>
de versie die u hebt gedownload.
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
Als u de voorbeeldclient wilt uitvoeren, navigeert u in de uitgepakte map en voert u de onderstaande opdracht uit:
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Notitie
Als -o
dit niet is opgegeven token
als, drukt de exe een binair resultaat waar of onwaar af, afhankelijk van het attestation-resultaat en het platform.sevsnp
Meld u aan bij uw virtuele machine.
Kloon de Windows-voorbeeldtoepassing.
Navigeer in de uitgepakte map en voer deze uit VC_redist.x64.exe
. VC_redist installeert MSVC-runtimebibliotheken (Microsoft C en C++) op de computer.
Als u de voorbeeldclient wilt uitvoeren, navigeert u in de uitgepakte map en voert u de onderstaande opdracht uit:
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Notitie
Als -o
dit niet is opgegeven token
als, drukt de exe een binair resultaat waar of onwaar af, afhankelijk van het attestation-resultaat en het platform.sevsnp
Resultaat van gastattest
Het resultaat van de Guest Attestation-client is gewoon een met base64 gecodeerde tekenreeks. Deze gecodeerde tekenreekswaarde is een ondertekend JSON-webtoken (JWT), met een koptekst, hoofdtekst en handtekening. U kunt de tekenreeks splitsen op basis van de .
waarde (dot) en base64 de resultaten decoderen.
eyJhbGciO...
De header bevat een jku
, ook wel JWK Set URI genoemd, die is gekoppeld aan een set met met JSON gecodeerde openbare sleutels. Een daarvan komt overeen met de sleutel die wordt gebruikt om de JWS digitaal te ondertekenen. De kid
geeft aan welke sleutel is gebruikt om de JWS te ondertekenen.
{
"alg": "RS256",
"jku": "https://sharedweu.weu.attest.azure.net/certs",
"kid": "dRKh+hBcWUfQimSl3Iv6ZhStW3TSOt0ThwiTgUUqZAo=",
"typ": "JWT"
}
De hoofdtekst van het antwoord van de gastverklaring wordt gevalideerd door Azure Key Vault als invoer om te testen op basis van het beleid voor sleutelrelease. Zoals eerder vermeld, gebruikt Azure Key Vault de 'TpmEphemeralEncryptionKey
' als sleutelversleutelingssleutel.
{
"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"
}
De documentatie voor de Microsoft Azure Attestation-service bevat een uitgebreide lijst met beschrijvingen van al deze SEV-SNP-gerelateerde claims.
We kunnen elke script- of programmeertaal gebruiken om een getest platformrapport te ontvangen met behulp van het binaire attestationClient-bestand. Omdat de virtuele machine die we in een vorige stap hebben geïmplementeerd, beheerde identiteit is ingeschakeld, moet er een Azure AD-token voor Key Vault worden opgehaald uit de instantiemetagegevensservice (IMDS).
Door het geteste platformrapport te configureren als de nettolading van de hoofdtekst en het Microsoft Entra-token in onze autorisatieheader, hebt u alles nodig om de sleutelbewerking release
uit te voeren.
#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
}
Antwoord van sleutelrelease
De beveiligde sleutelreleasebewerking retourneert slechts één eigenschap binnen de JSON-nettolading. De inhoud is echter ook base64 gecodeerd.
{
"value": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg4RUFDM.."
}
Hier hebben we een andere header, hoewel deze een X.509-certificaatketen als eigenschap heeft.
{
"alg": "RS256",
"kid": "88EAC2DB6BE4E051B0E05AEAF6CB79E675296121",
"x5t": "iOrC22vk4FGw4Frq9st55nUpYSE",
"typ": "JWT",
"x5t#S256": "BO7jbeU3BG0FEjetF8rSisRbkMfcdy0olhcnmYEwApA",
"x5c": [
"MIIIfDCCBmSgA..XQ==",
"MII..8ZZ8m",
"MII..lMrY="
]
}
U kunt lezen uit de matrix 'x5c
' in PowerShell. Hiermee kunt u controleren of dit een geldig certificaat is. Hieronder ziet u een voorbeeld:
$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
De hoofdtekst van het JWT-token van het antwoord lijkt ongelooflijk op het antwoord dat u krijgt bij het aanroepen van de get
sleutelbewerking. De release
bewerking bevat echter onder andere de key_hsm
eigenschap.
{
"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
}
}
}
}
Als de waarde onder $.response.key.release_policy.data
base64 wordt gedecodeerd, krijgt u de JSON-weergave van het Key Vault-sleutelreleasebeleid dat we in een eerdere stap hebben gedefinieerd.
De key_hsm
eigenschap base64 gedecodeerde waarde ziet er als volgt uit:
{
"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"
}
Volgende stappen
Voorbeelden van SKR-beleidMeer informatie over het gebruik van Microsoft Defender voor Cloud integratie met vertrouwelijke VM's met gastattestatie geïnstalleerdMeer informatie over de functie gastattestationMeer informatie over azure vertrouwelijke VM's