Probleemoplossingsgids voor Microsoft Azure Attestation

Foutafhandeling in Azure Attestation wordt geïmplementeerd volgens microsoft REST API-richtlijnen. Het foutbericht dat wordt geretourneerd door Azure Attestation-API's bevat HTTP-statuscode en naam/waardeparen met de namen 'code' en 'bericht'. De waarde van 'code' kan door mensen worden gelezen en is een indicator van het type fout. De waarde van 'bericht' is bedoeld om de gebruiker te helpen en geeft foutdetails.

Als uw probleem niet wordt opgelost in dit artikel, kunt u ook een ondersteuning voor Azure aanvraag indienen op de ondersteuning voor Azure pagina.

HTTP-401: Niet-geautoriseerde uitzondering

HTTP-statuscode

401

Foutcode niet geautoriseerd

Scenariovoorbeelden

  • Kan attestation-beleid niet beheren omdat de gebruiker niet is toegewezen met de juiste rollen
  • Kan attestation-beleidsaantekenaars niet beheren omdat de gebruiker niet is toegewezen met de juiste rollen

Gebruiker met de rol Lezer die probeert een attestation-beleid te bewerken 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

Stappen voor probleemoplossing

Voor het beheren van beleid heeft een Microsoft Entra-gebruiker de volgende machtigingen nodig voor 'Acties':

  • Microsoft.Attestation/attestationProviders/attestation/read

  • Microsoft.Attestation/attestationProviders/attestation/write

  • Microsoft.Attestation/attestationProviders/attestation/delete

    Als u deze acties wilt uitvoeren, moet een Microsoft Entra-gebruiker de rol Attestation-inzender hebben voor de attestation-provider. Deze machtigingen kunnen ook worden overgenomen met rollen zoals 'Eigenaar' (machtigingen voor jokertekens), Inzender (machtigingen voor jokertekens) voor het abonnement/de resourcegroep.

Als u beleid wilt lezen, heeft een Microsoft Entra-gebruiker de volgende machtiging nodig voor 'Acties':

  • Microsoft.Attestation/attestationProviders/attestation/read

    Als u deze actie wilt uitvoeren, moet een Microsoft Entra-gebruiker de rol Attestation Reader hebben voor de attestation-provider. Leesmachtigingen maken ook deel uit van rollen zoals 'Lezer' (machtigingen voor jokertekens) voor het abonnement/de resourcegroep.

Voer de volgende stappen uit om de rollen in PowerShell te controleren:

a. Start PowerShell en meld u aan bij Azure via de cmdlet 'Verbinding maken-AzAccount'.

b. Raadpleeg de richtlijnen hier om uw Azure-roltoewijzing te controleren op de attestation-provider

c. Als u geen geschikte roltoewijzing vindt, volgt u de instructies hier

HTTP- 400-fouten

HTTP-statuscode

400

Er zijn verschillende redenen waarom een aanvraag 400 kan retourneren. Hier volgen enkele voorbeelden van fouten die worden geretourneerd door Azure Attestation-API's.

Attestation-fout vanwege beleidsevaluatiefouten

Attestation-beleid omvat autorisatieregels en uitgifteregels. Enclave-bewijs wordt geëvalueerd op basis van de autorisatieregels. Uitgifteregels definiëren de claims die moeten worden opgenomen in het attestation-token. Als claims in enclave-bewijs niet voldoen aan autorisatieregels, retourneert attest-aanroepen beleidsevaluatiefout.

Foutcode PolicyEvaluationError

Scenariovoorbeelden Wanneer claims in de enclave-offerte niet overeenkomen met de autorisatieregels van attestation-beleid

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"]

Stappen voor probleemoplossing: gebruikers kunnen enclave-bewijs evalueren op basis van een SGX-attestation-beleid voordat ze hetzelfde configureren.

Verzend een aanvraag om de API te bevestigen door beleidstekst op te geven in de parameter draftPolicyForAttestation. De AttestSgxEnclave-API gebruikt dit beleidsdocument tijdens de attest-aanroep en dit kan worden gebruikt om attestation-beleid te testen voordat deze worden gebruikt. Het attestation-token dat wordt gegenereerd wanneer dit veld aanwezig is, is onbeveiligd.

Voorbeelden van attestation-beleid bekijken

Attestation-fout vanwege ongeldige invoer

Foutcode InvalidParameter

Scenariovoorbeelden van een SGX-attestation-fout vanwege ongeldige invoer. Hier volgen enkele voorbeelden van foutberichten:

  • De opgegeven offerte is ongeldig vanwege een fout in het offertepand
  • De opgegeven offerte is ongeldig omdat het apparaat waarop de offerte is gegenereerd niet voldoet aan de Vereisten voor de Azure-basislijn
  • De opgegeven aanhalingsteken is ongeldig omdat de TCBInfo of QEID van de PCK-cacheservice ongeldig was

Stappen voor probleemoplossing

Microsoft Azure Attestation ondersteunt attestation van SGX-aanhalingstekens die zijn gegenereerd door Intel SDK en Open Enclave SDK.

Raadpleeg codevoorbeelden voor het uitvoeren van attestation met behulp van Open Enclave SDK/ Intel SDK

Ongeldige certificaatketenfout tijdens het uploaden van beleid/beleids ondertekenaar

Foutcode InvalidParameter

Scenariovoorbeelden : ondertekend beleid configureren of beleidsondertekening toevoegen/verwijderen, die is ondertekend met een ongeldige certificaatketen (bijvoorbeeld wanneer de extensie Basisbeperkingen van het basiscertificaat niet is ingesteld op Onderwerptype = 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

Stappen voor probleemoplossing Het basiscertificaat moet worden gemarkeerd als worden uitgegeven door een CA (de basisbeperkingen van X.509), anders wordt het niet beschouwd als een geldig certificaat.

Zorg ervoor dat de uitbreiding basisbeperkingen van het basiscertificaat is ingesteld om aan te geven dat onderwerptype = CA

Anders wordt de certificaatketen beschouwd als ongeldig.

Voorbeelden van beleids ondertekenen en beleid bekijken

Fout bij toevoegen/verwijderen van beleids ondertekenaar

Foutcode InvalidOperation

Scenariovoorbeelden

Wanneer de gebruiker JWS uploadt zonder 'maa-policyCertificate'-claim

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

Wanneer de gebruiker geen certificaat uploadt in JWS-indeling

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

Probleemoplossingsstappen Voor het toevoegen/verwijderen van een nieuw certificaat voor beleidsaantekening gebruikt u RFC7519 JSON Web Token (JWT) met een claim met de naam x-ms-policyCertificate. De waarde van de claim is een RFC7517 JSON-websleutel, die het certificaat bevat dat moet worden toegevoegd. JWT moet zijn ondertekend met een persoonlijke sleutel van een van de geldige certificaten voor beleidsondertekening die aan de provider zijn gekoppeld. Zie voorbeelden van beleids ondertekenen.

Configuratiefout voor Attestation-beleid

Foutcode PolicyParsingError

Scenariovoorbeelden beleid met onjuiste syntaxis (bijvoorbeeld ontbrekende puntkomma)/geldig JWT-beleid)

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

Foutcode InvalidOperation

Scenariovoorbeelden van ongeldige inhoud die is opgegeven (bijvoorbeeld uploadbeleid/niet-ondertekend beleid wanneer beleidsondertekening is vereist)


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

Stappen voor probleemoplossing: zorg ervoor dat het beleid in tekstindeling UTF-8 is gecodeerd.

Als beleidsondertekening is vereist, moet attestation-beleid alleen worden geconfigureerd in de indeling van RFC7519 JSON Web Token (JWT). Als beleidsondertekening niet vereist is, kan beleid worden geconfigureerd in tekst- of JWT-indeling.

Als u een beleid in JWT-indeling wilt configureren, gebruikt u JWT met een claim met de naam AttestationPolicy. De waarde van de claim is base64URL gecodeerde versie van de beleidstekst. Als de attestation-provider is geconfigureerd met certificaten voor beleidsondertekening, moet de JWT zijn ondertekend met een persoonlijke sleutel van een van de geldige certificaten voor beleidsondertekening die aan de provider zijn gekoppeld.

Als u een beleid in tekstindeling wilt configureren, geeft u beleidstekst rechtstreeks op.

Geef in PowerShell PolicyFormat op als JWT om beleid in JWT-indeling te configureren. Standaardbeleidsindeling is Tekst.

Bekijk voorbeelden van attestation-beleid en hoe u een attestation-beleid maakt

Installatieproblemen met Az.Attestation in PowerShell

Kan de Az PowerShell-module of Az.Attestation PowerShell-module niet installeren in PowerShell.

Fout

WAARSCHUWING: Kan pakketbronhttps://www.powershellgallery.com/api/v2 '' PackageManagement\Install-Package niet oplossen: er is geen overeenkomst gevonden voor de opgegeven zoekcriteria en modulenaam

Stappen voor probleemoplossing

PowerShell Gallery heeft TLS-versies (Transport Layer Security) 1.0 en 1.1 afgeschaft.

TLS 1,2 of een latere versie wordt aanbevolen.

Als u wilt blijven werken met de PowerShell Gallery, voert u de volgende opdracht uit vóór de installatie-module-opdrachten

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

Problemen met toegang/configuratie van beleid in PowerShell

Gebruiker toegewezen met de juiste rollen. Maar ondervindt autorisatieproblemen bij het beheren van attestation-beleid via PowerShell.

Fout

De client met object-id-object-id <> heeft geen autorisatie voor het uitvoeren van actie Microsoft.Authorization/roleassignments/write over bereik 'subcriptions/<subscriptionId>resourcegroups/secure_enclave_poc/providers/Microsoft.Authorization/roleassignments/roleassignments/<role assignmentId>' of het bereik is ongeldig. Als onlangs toegang is verleend, vernieuwt u uw referenties

Stappen voor probleemoplossing

De minimale versie van de Az PowerShell-modules die nodig zijn om attestation-bewerkingen te ondersteunen, zijn:

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

Voer de onderstaande opdracht uit om de geïnstalleerde versie van alle AZ-modules te controleren

Get-InstalledModule 

Als de versies niet voldoen aan de minimale vereiste, voert u de PowerShell-cmdlet Update-Module uit.

Update-Module -Name Az.Attestation