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 "Connect-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.
Error
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.
Error
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