Guida alla risoluzione dei problemi di Microsoft attestazione di Azure

La gestione degli errori in attestazione di Azure viene implementata seguendo le linee guida dell'API REST Microsoft. La risposta di errore restituita dalle API di attestazione di Azure contiene coppie nome/valore e codice di stato HTTP con i nomi "code" e "message". Il valore di "codice" è leggibile dall'utente ed è un indicatore del tipo di errore. Il valore di "message" intende aiutare l'utente e fornisce i dettagli dell'errore.

Se il problema non viene risolto in questo articolo, è anche possibile inviare una richiesta di supporto tecnico di Azure nella pagina supporto tecnico di Azure.

HTTP-401: eccezione non autorizzata

Codice di stato HTTP

401

Codice di errore non autorizzato

Esempi di scenari

  • Non è possibile gestire i criteri di attestazione perché l'utente non è assegnato con ruoli appropriati
  • Impossibile gestire i firmatari dei criteri di attestazione perché l'utente non è assegnato con ruoli appropriati

Utente con ruolo Lettore che tenta di modificare un criterio di attestazione in PowerShell

Set-AzAttestationPolicy : Operation returned HTTP Status Code 401
At line:1 char:1
+ Set-AzAttestationPolicy -Name $attestationProvider -ResourceGroupName ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  + CategoryInfo          : CloseError: (:) [Set-AzAttestationPolicy], RestException
  + FullyQualifiedErrorId : Microsoft.Azure.Commands.Attestation.SetAzureAttestationPolicy

Passaggi per la risoluzione dei problemi

Per gestire i criteri, un utente di Microsoft Entra richiede le autorizzazioni seguenti per "Actions":

  • Microsoft.Attestation/attestationProviders/attestation/read

  • Microsoft.Attestation/attestationProviders/attestation/write

  • Microsoft.Attestation/attestationProviders/attestation/delete

    Per eseguire queste azioni, un utente di Microsoft Entra deve avere il ruolo "Collaboratore attestazione" nel provider di attestazioni. Queste autorizzazioni possono essere ereditate anche con ruoli come "Proprietario" (autorizzazioni con caratteri jolly), "Collaboratore" (autorizzazioni con caratteri jolly) nel gruppo di risorse/sottoscrizione.

Per leggere i criteri, un utente di Microsoft Entra richiede l'autorizzazione seguente per "Actions":

  • Microsoft.Attestation/attestationProviders/attestation/read

    Per eseguire questa azione, un utente di Microsoft Entra deve avere il ruolo "Lettore attestazione" nel provider di attestazioni. Le autorizzazioni di lettura fanno anche parte di ruoli come "Lettore" (autorizzazioni con caratteri jolly) nel gruppo di risorse/sottoscrizione.

Per verificare i ruoli in PowerShell, eseguire la procedura seguente:

a. Avviare PowerShell e accedere ad Azure tramite il cmdlet "Connessione-AzAccount"

b. Fare riferimento alle indicazioni riportate qui per verificare l'assegnazione di ruolo di Azure nel provider di attestazione

c. Se non si trova un'assegnazione di ruolo appropriata, seguire le istruzioni riportate qui

HTTP - 400 errori

Codice di stato HTTP

400

Esistono diversi motivi per cui una richiesta può restituire 400. Ecco alcuni esempi di errori restituiti dalle API di attestazione di Azure.

Errore di attestazione dovuto a errori di valutazione dei criteri

I criteri di attestazione includono regole di autorizzazione e regole di rilascio. L'evidenza dell'enclave viene valutata in base alle regole di autorizzazione. Le regole di rilascio definiscono le attestazioni da includere nel token di attestazione. Se le attestazioni nell'evidenza dell'enclave non sono conformi alle regole di autorizzazione, le chiamate di attestazione restituiranno un errore di valutazione dei criteri.

Codice errore PolicyEvaluationError

Esempi di scenario Quando le attestazioni nell'offerta dell'enclave non corrispondono alle regole di autorizzazione dei criteri di attestazione

Native operation failed with 65518: G:\Az\security\Attestation\src\AttestationServices\Instance\NativePolicyWrapper\NativePolicyEngine.cpp(168)\(null)!00007FF801762308: (caller: 00007FF80143DCC8) Exception(0) 83FFFFEE Policy Evaluation Error has occurred Msg:[Policy Engine Exception: A Deny claim was issued, authorization failed.]

G:\Az\security\Attestation\src\AttestationServices\Instance\Enclave\api.cpp(840)\(null)!00007FF801739FF3: (caller: 00007FF801232801) LogHr(0) 83FFFFEE Policy Evaluation Error has occurred Msg:[Unhandled Enclave Exception: "Policy Evaluation Error has occurred"]

Procedura di risoluzione dei problemi Gli utenti possono valutare l'evidenza dell'enclave rispetto a un criterio di attestazione SGX prima di configurare lo stesso.

Inviare una richiesta all'API di attestazione specificando il testo dei criteri nel parametro "draftPolicyForAttestation". L'API AttestaSgxEnclave userà questo documento di criteri durante la chiamata di attestazione e può essere usato per testare i criteri di attestazione prima che vengano utilizzati. Il token di attestazione generato quando questo campo è presente non sarà protetto.

Vedere esempi di criteri di attestazione

Errore di attestazione a causa di un input non valido

Codice di errore InvalidParameter

Esempi di errori di attestazione SGX a causa di input non valido. Ecco alcuni esempi di messaggi di errore:

  • L'offerta specificata non è valida a causa di un errore nella citazione collaterale
  • L'offerta specificata non è valida perché il dispositivo in cui è stata generata l'offerta non soddisfa i requisiti di base di Azure
  • L'offerta specificata non è valida perché TCBInfo o QEID fornito dal servizio cache PCK non è valido

Passaggi per la risoluzione dei problemi

Microsoft attestazione di Azure supporta l'attestazione delle virgolette SGX generate da Intel SDK e Open Enclave SDK.

Vedere esempi di codice per l'esecuzione dell'attestazione con Open Enclave SDK/Intel SDK

Errore della catena di certificati non valido durante il caricamento di criteri/firmatario dei criteri

Codice di errore InvalidParameter

Esempi di scenario Configurare il criterio firmato o il firmatario di criteri di aggiunta/eliminazione, firmato con una catena di certificati non valida( ad esempio, quando l'estensione Vincoli di base del certificato radice non è impostata su Tipo soggetto = CA)

Native operation failed with 65529: C:\source\src\AttestationServices\Instance\SgxPal\sgxcert.cpp(1074)\(null)!00007FFA285CDAED: (caller: 00007FFA285C36E8) Exception(0) 83FFFFF9 The requested item is not found    Msg:[Unable to find issuer certificate CN=attestationsigningcert]
C:\source\src\AttestationServices\Instance\Enclave\api.cpp(618)\(null)!00007FFA286DCBF8: (caller: 00007FFA285860D3) LogHr(0) 83FFFFF9 The requested item is not found    Msg:[Unhandled Enclave Exception: "The requested item is not found"]
At line:1 char:1
+ Set-AzAttestationPolicy -Name "testpolicy1" -ResourceGroupName "BugBa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Set-AzAttestationPolicy], RestException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Attestation.SetAzureAttestationPolicy

Procedura di risoluzione dei problemi Il certificato radice deve essere contrassegnato come rilasciato da una CA (vincoli di base X.509), altrimenti non verrà considerato come un certificato valido.

Assicurarsi che l'estensione Vincoli di base del certificato radice sia impostata per indicare che Tipo soggetto = CA

Altrimenti la catena di certificati è considerata non valida.

Vedere esempi di criteri e firmatari dei criteri

Errore di aggiunta/eliminazione del firmatario dei criteri

Codice di errore InvalidOperation

Esempi di scenari

Quando l'utente carica JWS senza attestazione "maa-policyCertificate"

Add-AzAttestationPolicySigner : Operation returned HTTP Status Code 400
Code: InvalidOperation
Message: Native operation failed with 74: ..\Enclave\enclave.cpp(2213)\(null)!: (caller: ) Exception(0) 83FF004A Bad
message    Msg:[Could not find "maa-policyCertificate" claim in policy token]
..\Enclave\api.cpp(496)\(null)!: (caller: ) LogHr(0) 83FF004A Bad message    Msg:[Unhandled Enclave Exception: "Bad
message"]
At line:1 char:1
+ Add-AzAttestationPolicySigner -Name $attestationProvider -ResourceGro ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Add-AzAttestationPolicySigner], RestException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Attestation.AddAzureAttestationPolicySigner

Quando l'utente non carica un certificato in formato JWS

Add-AzAttestationPolicySigner : Operation returned HTTP Status Code 400
Code: InvalidOperation
Message: Native operation failed with 74: ..\JsonWebToken\jsonwebtoken.cpp(375)\(null)!: (caller: ) LogHr(0) 83FF004A
Bad message    Msg:[RETURN_IF_TRUE('(firstPeriod == std::string::npos)') failed with 0x4a: Malformed JWT: Could not
find first period in the token.]
..\Enclave\enclave.cpp(2106)\(null)!: (caller: ) LogHr(0) 83FF004A Bad message
Msg:[THROW_IF_ERROR('DecomposeJsonWebSignature(&policyJws, encodedJoseHeader, encodedJwsBody, jwsSignature)') failed
with 0x4a: 'Bad message']
..\Enclave\enclave.cpp(2106)\(null)!: (caller: ) Exception(0) 83FF004A Bad message
..\Enclave\api.cpp(496)\(null)!: (caller: ) LogHr(0) 83FF004A Bad message    Msg:[Unhandled Enclave Exception: "Bad
message"]
At line:1 char:1
+ Add-AzAttestationPolicySigner -Name $attestationProvider -ResourceGro ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Add-AzAttestationPolicySigner], RestException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Attestation.AddAzureAttestationPolicySigner

Procedura di risoluzione dei problemi Per aggiungere/eliminare un nuovo certificato del firmatario dei criteri, usare RFC7519 token Web JSON (JWT) con un'attestazione denominata "x-ms-policyCertificate". Il valore dell'attestazione è una chiave Web JSON RFC7517 che contiene il certificato da aggiungere. Il token JWT deve essere firmato con chiave privata di uno dei certificati del firmatario di criteri validi associati al provider. Vedere esempi di firmatario dei criteri.

Errore di configurazione dei criteri di attestazione

Codice errore PolicyParsingError

Esempi di scenari Criteri forniti con sintassi non corretta (ad esempio, manca un punto e virgola)/criteri JWT validi)

Native operation failed with 65526: ..\NativePolicyWrapper\NativePolicyEngine.cpp(31)\(null)!: (caller: ) Exception(0) 83FFFFF6 Invalid policy was specified    Msg:[Policy Parser Exception Thrown: Offending
symbol: '['
Line: '2', Column: '1'
Failure message: 'mismatched input '[' expecting ';''
Failing rule: 'policy > versionInfo']
..\Enclave\api.cpp(618)\(null)!: (caller: ) LogHr(0) 83FFFFF6 Invalid policy was specified    Msg:[Unhandled Enclave Exception: "Invalid policy was specified"]
At line:1 char:1
+ set-AzAttestationPolicy -Name $attestationProvider -ResourceGroupName ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Set-AzAttestationPolicy], RestException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Attestation.SetAzureAttestationPolicy

Codice di errore InvalidOperation

Esempi di scenario Contenuto non valido fornito (ad esempio, criteri di caricamento/criteri non firmati quando è richiesta la firma dei criteri)


Native operation failed with 74: ..\Shared\base64url.h(226)\(null)!: (caller: ) Exception(0) 83FF004A Bad message    Msg:[Unknown base64 character: 41 (')')]
..\Enclave\api.cpp(618)\(null)!: (caller: ) LogHr(0) 83FF004A Bad message    Msg:[Unhandled Enclave Exception: "Bad message"]
At line:1 char:1
+ set-AzAttestationPolicy -Name $attestationProvider -ResourceGroupName ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Set-AzAttestationPolicy], RestException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Attestation.SetAzureAttestationPolicy

Procedura di risoluzione dei problemi Assicurarsi che il criterio in formato testo sia codificato con UTF-8.

Se è necessaria la firma dei criteri, i criteri di attestazione devono essere configurati solo in RFC7519 formato JWT (JSON Web Token). Se la firma dei criteri non è necessaria, i criteri possono essere configurati in formato testo o JWT.

Per configurare un criterio in formato JWT, usare JWT con un'attestazione denominata "AttestationPolicy". Il valore dell'attestazione è la versione con codifica Base64URL del testo del criterio. Se il provider di attestazioni è configurato con certificati del firmatario dei criteri, il token JWT deve essere firmato con chiave privata di uno dei certificati del firmatario di criteri validi associati al provider.

Per configurare un criterio in formato testo, specificare direttamente il testo dei criteri.

In PowerShell specificare PolicyFormat come JWT per configurare i criteri in formato JWT. Il formato predefinito dei criteri è Text.

Vedere esempi di criteri di attestazione e come creare criteri di attestazione

Problemi di installazione di Az.Attestation in PowerShell

Impossibile installare il modulo Az PowerShell o il modulo Az.Attestation di PowerShell in PowerShell.

Errore

AVVISO: Impossibile risolvere l'origine del pacchetto 'https://www.powershellgallery.com/api/v2' PackageManagement\Install-Package: non è stata trovata alcuna corrispondenza per i criteri di ricerca e il nome del modulo specificati

Passaggi per la risoluzione dei problemi

PowerShell Gallery ha deprecato Transport Layer Security (TLS) versioni 1.0 e 1.1.

È consigliabile usare TLS 1.2 o versione successiva.

Per continuare a interagire con PowerShell Gallery, eseguire il comando seguente prima dei comandi Install-Module

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Problemi di accesso/configurazione dei criteri in PowerShell

Utente assegnato con ruoli appropriati. Ma si verificano problemi di autorizzazione durante la gestione dei criteri di attestazione tramite PowerShell.

Errore

Il client con ID oggetto ID <> oggetto non dispone dell'autorizzazione per eseguire l'azione Microsoft.Authorization/roleassignments/write over scope 'subcriptions/<subscriptionId>resourcegroups/secure_enclave_poc/providers/Microsoft.Authorization/roleassignments/<role assignmentId>' o l'ambito non è valido. Se l'accesso è stato concesso di recente, aggiornare le credenziali

Passaggi per la risoluzione dei problemi

La versione minima dei moduli Az PowerShell necessari per supportare le operazioni di attestazione sono:

  • Az 4.5.0
  • Az.Accounts 1.9.2
  • Az.Attestation 0.1.8

Eseguire il comando seguente per verificare la versione installata di tutti i moduli Az

Get-InstalledModule 

Se le versioni non soddisfano il requisito minimo, eseguire il cmdlet PowerShell Update-Module.

Update-Module -Name Az.Attestation