Használjon egy Azure-fiókot, amely a virtuális gépet tartalmazó Azure-előfizetéshez van társítva.
A rendszer által hozzárendelt felügyelt identitás engedélyezéséhez töltse be a sablont egy szerkesztőbe, keresse meg a szakaszon belül resources
az Microsoft.Compute/virtualMachines
érdeklődésre számot tartó erőforrást, és adja hozzá a "identity"
tulajdonságot a "type": "Microsoft.Compute/virtualMachines"
tulajdonságtal azonos szinten. Alkalmazza a következő szintaxist:
"identity": {
"type": "SystemAssigned"
},
Az utolsó sablon az alábbi példában látható
"resources": [
{
"apiVersion": "2021-11-01",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned",
},
//other resource provider properties...
}
]
Hozzáférési szabályzat hozzáadása az Azure Key Vaulthoz
Miután engedélyezte a rendszer által hozzárendelt felügyelt identitást a CVM-hez, hozzáférést kell biztosítania a kulcsobjektumokat tároló Azure Key Vault adatsíkhoz. Annak érdekében, hogy csak a bizalmas virtuális gépünk hajthassa végre a kiadási műveletet, csak a szükséges engedélyt adunk meg.
Feljegyzés
A felügyelt identitásobjektum-azonosítót a virtuális gép identitásbeállításaiban, az Azure Portalon találja. Másik lehetőségként PowerShell-, Azure CLI-, Bicep- vagy ARM-sablonokkal is lekérheti.
[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-sablon 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')]"
]
}
A kiadási szabályzat előkészítése
A Key Vault biztonságos kulcskiadási szabályzatai az Azure Policy után modellezhetők, kissé eltérő nyelvhelyességgel.
Az ötlet az, amikor átadjuk az igazolt platformjelentést egy JSON-webjogkivonat (JWT) formájában a Key Vaultnak. Ez viszont megvizsgálja a JWT-t, és ellenőrzi, hogy az igazolást kapó platformjelentés jogcímei megegyeznek-e a szabályzatban szereplő jogcímekkel.
Tegyük fel például, hogy csak akkor szeretnénk kiadni egy kulcsot, ha az igazolt platformjelentésnek olyan tulajdonságai vannak, mint:
- A Microsoft Azure Attestation (MAA) szolgáltatásvégponthttps://sharedweu.weu.attest.azure.net" ";" tanúsítványa.
- A
authority
szabályzatból származó érték a jogkivonatban lévő iss
(kiállítói) tulajdonsághoz hasonlítható össze.
- És hogy tartalmaz egy objektumot is, amelynek egy
x-ms-isolation-tee
úgynevezett tulajdonsága x-ms-attestation-type
van, amely az értéket sevsnpvm
tartalmazza.
- A MAA Azure-szolgáltatásként igazolta, hogy a CVM egy AMD SEV-SNP valódi processzorban fut.
- Emellett tartalmaz egy objektumot
x-ms-isolation-tee
is, amelynek neve egy úgynevezett x-ms-compliance-status
tulajdonság, amely az értéket azure-compliant-cvm
tartalmazza.
- A MAA Azure-szolgáltatásként képes igazolni, hogy a CVM egy megfelelő Azure-beli bizalmas virtuális gép.
Hozzon létre egy új mappát, assets
és adja hozzá a következő JSON-tartalmat egy nevesített cvm-release-policy.json
fájlhoz:
{
"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"
}
]
}
]
}
A kiadási szabályzat egy anyOf
olyan feltétel, amely a főbb hatóságok tömbét tartalmazza. A claim
feltétel egy JSON-objektum, amely azonosítja a jogcím nevét, az egyeztetés feltételét és egy értéket. A AnyOf
feltételobjektumok AllOf
lehetővé teszik a logikai OR
és AND
a . Jelenleg csak összehasonlítást equals
végezhetünk egy claim
. A feltételtulajdonságok a tulajdonságokkal authority
együtt vannak elhelyezve.
Fontos
A környezeti állítások legalább egy kulcstitkosítási kulcsot és egy vagy több jogcímet tartalmaznak a célkörnyezetről (például TEE-típus, közzétevő, verzió), amelyek megfelelnek a kulcskiadási szabályzatnak. A kulcstitkosítási kulcs egy nyilvános RSA-kulcs, amelyet a kulcsexportáláshoz használt célvégrehajtási környezet véd. Meg kell jelennie a TEE-kulcsok jogcímében (x-ms-runtime/keys). Ez a jogcím egy JSON-objektum, amely egy JSON-webkulcskészletet jelöl. A JWKS-ben az egyik kulcsnak meg kell felelnie a titkosítási kulcsként való használatra vonatkozó követelményeknek (key_use "enc", vagy key_ops "titkosítást" tartalmaz). Az első megfelelő kulcs van kiválasztva.
A Key Vault kiválasztja az első megfelelő kulcsot a "x-ms-runtime
" objektum "keys
" tömbtulajdonságából, és nyilvános RSA-kulcsot keres a következővel vagy ."key_use": ["enc"]
"key_ops": ["encrypt"]
Egy példa egy tanúsított platformjelentésre:
{
//...
"x-ms-runtime": {
"client-payload": {
"nonce": "MTIzNA=="
},
"keys": [
{
"e": "AQAB",
"key_ops": [
"encrypt"
],
"kid": "TpmEphemeralEncryptionKey",
"kty": "RSA",
"n": "9v2XQgAA6y18CxV8dSGnh..."
}
]
},
//...
}
Ebben a példában csak egy kulccsal rendelkezünk az $.x-ms-runtime.keys
elérési út alatt. A Key Vault a TpmEphemeralEncryptionKey
kulcsot használja kulcstitkosítási kulcsként.
Feljegyzés
Figyelje meg, hogy lehet, hogy a Kulcstartó $.x-ms-isolation-tee.x-ms-runtime.keys
nem ezt a kulcsot használja.
Exportálható kulcs létrehozása kiadási szabályzattal
Létrehozunk egy Key Vault hozzáférési szabályzatot, amely lehetővé teszi, hogy egy Azure-beli bizalmas virtuális gép végrehajtsa a release
kulcsműveletet. Végül a kiadási szabályzatot base64 kódolású sztringként kell szerepeltetni a kulcs létrehozása során. A kulcsnak egy HSM által támogatott exportálható kulcsnak kell lennie.
Feljegyzés
A HSM által támogatott kulcsok az Azure Key Vault Premium és az Azure Key Vault által felügyelt HSM használatával érhetők el.
[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-sablon 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')]"
]
}
Az Azure Portalra való navigálással és a kulcs kiválasztásával ellenőrizheti, hogy a Key Vault létrehozott-e egy új , HSM-alapú kulcsot, és tartalmazza-e a biztonságos kulcs kiadási szabályzatát . A kívánt kulcs "exportálhatóként" lesz megjelölve.
Vendégigazolási ügyfél
Az igazolás segít kriptográfiailag felmérni, hogy valami a kívánt működési állapotban fut-e. Ez az a folyamat, amellyel az egyik fél, a hitelesítő felméri egy potenciálisan nem megbízható társ, az igazolás megbízhatóságát. A távoli vendégigazolással a megbízható végrehajtási környezet egy olyan platformot kínál, amely lehetővé teszi egy teljes operációs rendszer futtatását benne.
Fontos
A Microsoft egy C/C++ kódtárat kínál Windows és Linux rendszerekhez is, amelyek segíthetnek a fejlesztési erőfeszítésekben. A kódtár segítségével egyszerűen beszerezhet egy SEV-SNP-platformjelentést a hardverből, és azt az Azure Attestation szolgáltatás egy példánya is tanúsíthatja. Az Azure Attestation szolgáltatás lehet a Microsoft által üzemeltetett (megosztott) vagy a saját privát példánya.
A vendégigazolási kódtárat használó nyílt forráskód Windows- és Linux-ügyfél bináris fájl választható a vendégigazolási folyamat egyszerűvé tétele a CVM-ekkel. Az ügyfél bináris fájlja az igazolt platformjelentést JSON webes jogkivonatként adja vissza, ami a Key Vault kulcsműveletéhez release
szükséges.
Feljegyzés
Az Azure Attestation szolgáltatás jogkivonata 8 órán át érvényes.
[Linux]
Jelentkezzen be a virtuális gépre.
Klónozza a linuxos mintaalkalmazást.
Telepítse az build-essential
csomagot. Ez a csomag a mintaalkalmazás összeállításához szükséges összes elemet telepíti.
sudo apt-get install build-essential
Telepítse a csomagokat és libjsoncpp-dev
a libcurl4-openssl-dev
csomagokat.
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libjsoncpp-dev
Töltse le az igazolási csomagot.
Telepítse az igazolási csomagot. Mindenképpen cserélje le <version>
a letöltött verzióra.
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
A mintaügyfél futtatásához navigáljon a kibontott mappában, és futtassa az alábbi parancsot:
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Feljegyzés
Ha -o
nincs megadva, token
az exe az igazolás eredményétől és a platformtól sevsnp
függően igaz vagy hamis bináris eredményt nyomtat.
Jelentkezzen be a virtuális gépre.
Klónozza a Windows-mintaalkalmazást.
Navigáljon a kibontott mappában, és futtassa a fájlt VC_redist.x64.exe
. VC_redist telepíti a Microsoft C és C++ (MSVC) futtatókörnyezeti kódtárakat a számítógépre.
A mintaügyfél futtatásához navigáljon a kibontott mappában, és futtassa az alábbi parancsot:
sudo ./AttestationClient -a <attestation-url> -n <nonce-value> -o token
Feljegyzés
Ha -o
nincs megadva, token
az exe az igazolás eredményétől és a platformtól sevsnp
függően igaz vagy hamis bináris eredményt nyomtat.
Vendégigazolási eredmény
A vendégigazolási ügyfél eredménye egyszerűen egy base64 kódolású sztring. Ez a kódolt sztringérték egy aláírt JSON-webjogkivonat (JWT), amelynek fejléce, törzse és aláírása van. A sztringet feloszthatja a .
(pont) érték alapján, és a base64 dekódolhatja az eredményeket.
eyJhbGciO...
A fejléc tartalmaz egy jku
JWK-készlet URI-t, amely JSON-kódolt nyilvános kulcsokra hivatkozik. Ezek egyike megfelel a JWS digitális aláírásához használt kulcsnak. A kid
JWS aláírásához használt kulcs.
{
"alg": "RS256",
"jku": "https://sharedweu.weu.attest.azure.net/certs",
"kid": "dRKh+hBcWUfQimSl3Iv6ZhStW3TSOt0ThwiTgUUqZAo=",
"typ": "JWT"
}
A vendégigazolási válasz törzsét az Azure Key Vault ellenőrzi bemenetként, hogy tesztelje a kulcskiadási szabályzatot. Ahogy korábban már említettük, az Azure Key Vault a "TpmEphemeralEncryptionKey
"-t használja kulcstitkosítási kulcsként.
{
"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"
}
A Microsoft Azure-igazolási szolgáltatás dokumentációja egy átfogó listát tartalmaz, amely az SEV-SNP-hez kapcsolódó összes jogcím leírását tartalmazza.
Bármilyen szkript- vagy programozási nyelv használatával megkaphatunk egy igazolást tartalmazó platformjelentést az AttestationClient bináris használatával. Mivel az előző lépésben üzembe helyezett virtuális gép rendelkezik engedélyezett felügyelt identitással, le kell kérnünk egy Azure AD-jogkivonatot a Key Vaulthoz a példány metaadat-szolgáltatásából (IMDS).
Ha konfigurálja az igazolt platformjelentést hasznos adattörzsként és a Microsoft Entra-jogkivonatot az engedélyezési fejlécben, a kulcsművelet release
végrehajtásához minden szükséges rendelkezésére áll.
#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
}
Kulcskiadási válasz
A biztonságos kulcs kiadási művelete csak egyetlen tulajdonságot ad vissza a JSON hasznos adatain belül. A tartalom azonban base64 kódolású is.
{
"value": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg4RUFDM.."
}
Itt van egy másik fejléc, bár ez egy X.509-tanúsítványláncot használ tulajdonságként.
{
"alg": "RS256",
"kid": "88EAC2DB6BE4E051B0E05AEAF6CB79E675296121",
"x5t": "iOrC22vk4FGw4Frq9st55nUpYSE",
"typ": "JWT",
"x5t#S256": "BO7jbeU3BG0FEjetF8rSisRbkMfcdy0olhcnmYEwApA",
"x5c": [
"MIIIfDCCBmSgA..XQ==",
"MII..8ZZ8m",
"MII..lMrY="
]
}
A PowerShell "x5c
" tömbjében olvashat, így ellenőrizheti, hogy ez egy érvényes tanúsítvány-e. Az alábbiakban egy példát láthat erre:
$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
A válasz JWT-jogkivonatának törzse hihetetlenül hasonlít a kulcsművelet meghívásakor get
megjelenő válaszhoz. A release
művelet azonban magában foglalja a key_hsm
tulajdonságot, többek között.
{
"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
}
}
}
}
Ha a base64 dekódolja az értéket az alatta $.response.key.release_policy.data
, megkapja a Key Vault egy korábbi lépésben definiált kulcskiadási szabályzatának JSON-ábrázolását.
A key_hsm
base64 dekódolt tulajdonság értéke így néz ki:
{
"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"
}
Következő lépések
SKR-szabályzatok– Példák a bizalmas virtuális gépekkel való Felhőhöz készült Microsoft Defender integráció használatára a vendégigazolással– További információ a vendégigazolási funkciórólTovábbi információ az Azure-beli bizalmas virtuális gépekről