Felsökningsguide för Microsoft Azure Attestation

Felhantering i Azure Attestation implementeras enligt Riktlinjerna för Microsoft REST API. Felsvaret som returneras av API:er för Azure-attestering innehåller HTTP-statuskod och namn/värde-par med namnen "code" och "message". Värdet för "kod" är läsbart för människor och är en indikator på typen av fel. Värdet för "meddelande" avser att hjälpa användaren och ger felinformation.

Om problemet inte åtgärdas i den här artikeln kan du även skicka en Azure-supportbegäran på Azure-supportsidan.

HTTP–401: Otillåtet undantag

HTTP-statuskod

401

Felkod Obehörig

Scenarioexempel

  • Det går inte att hantera attesteringsprinciper eftersom användaren inte har tilldelats lämpliga roller
  • Det går inte att hantera attesteringsprincipsignerare eftersom användaren inte har tilldelats lämpliga roller

Användare med rollen Läsare försöker redigera en attesteringsprincip i 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

Felsökningsanvisningar

För att kunna hantera principer kräver en Microsoft Entra-användare följande behörigheter för "Åtgärder":

  • Microsoft.Attestation/attestationProviders/attestation/read

  • Microsoft.Attestation/attestationProviders/attestation/write

  • Microsoft.Attestation/attestationProviders/attestation/delete

    För att utföra dessa åtgärder måste en Microsoft Entra-användare ha rollen "Attesteringsdeltagare" på attesteringsprovidern. Dessa behörigheter kan också ärvas med roller som "Ägare" (jokerteckenbehörigheter), "Deltagare" (jokerteckenbehörigheter) i prenumerationen/resursgruppen.

För att kunna läsa principer kräver en Microsoft Entra-användare följande behörighet för "Åtgärder":

  • Microsoft.Attestation/attestationProviders/attestation/read

    För att utföra den här åtgärden måste en Microsoft Entra-användare ha rollen "Attesteringsläsare" på attesteringsprovidern. Läsbehörigheter är också en del av roller som "Läsare" (jokerteckenbehörigheter) i prenumerationen/resursgruppen.

Kontrollera rollerna i PowerShell genom att köra stegen nedan:

a. Starta PowerShell och logga in på Azure via cmdleten "Anslut-AzAccount"

b. Se vägledningen här för att verifiera din Azure-rolltilldelning på attesteringsprovidern

c. Om du inte hittar någon lämplig rolltilldelning följer du anvisningarna här

HTTP – 400 fel

HTTP-statuskod

400

Det finns olika orsaker till varför en begäran kan returnera 400. Här är några exempel på fel som returneras av Api:er för Azure-attestering.

Attesteringsfel på grund av principutvärderingsfel

Attesteringsprincipen innehåller auktoriseringsregler och utfärdanderegler. Enklavens bevis utvärderas baserat på auktoriseringsreglerna. Utfärdanderegler definierar de anspråk som ska ingå i attesteringstoken. Om anspråk i enklaver inte följer auktoriseringsreglerna returnerar intygsanrop principutvärderingsfel.

Felkod PolicyEvaluationError

Scenarioexempel När anspråk i enklavens citattecken inte matchar auktoriseringsreglerna för attesteringsprincipen

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

Felsökningssteg Användare kan utvärdera enklaver mot en SGX-attesteringsprincip innan de konfigurerar samma sak.

Skicka en begäran om attestera API genom att ange principtext i parametern "draftPolicyForAttestation". AttestSgxEnclave-API:et använder det här principdokumentet under attest-anropet och det kan användas för att testa attesteringsprinciper innan de används. Attesteringstoken som genereras när det här fältet finns kommer att vara oskyddad.

Se exempel på attesteringsprinciper

Attesteringsfel på grund av ogiltiga indata

Felkod : InvalidParameter

Scenarioexempel på SGX-attesteringsfel på grund av ogiltiga indata. Här är några exempel på felmeddelanden:

  • Den angivna offerten var ogiltig på grund av ett fel i offertens säkerhet
  • Det angivna citatet var ogiltigt eftersom enheten som offerten genererades på inte uppfyller Kraven för Azure-baslinjen
  • Det angivna citatet var ogiltigt eftersom TCBInfo eller QEID som tillhandahålls av PCK Cache Service var ogiltigt

Felsökningsanvisningar

Microsoft Azure Attestation stöder attestering av SGX-citattecken som genereras av Intel SDK och Open Enclave SDK.

Se kodexempel för att utföra attestering med hjälp av Open Enclave SDK/Intel SDK

Ogiltigt certifikatkedjefel vid uppladdning av princip/principsignerare

Felkod : InvalidParameter

Scenarioexempel Konfigurera signerad princip eller lägg till/ta bort principsignerare, som är signerad med en ogiltig certifikatkedja (till exempel när tillägget Grundläggande begränsningar för rotcertifikatet inte är inställt på Ämnestyp = 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

Felsökningssteg Rotcertifikatet måste flaggas som utfärdat av en certifikatutfärdare (de grundläggande X.509-begränsningarna), annars betraktas det inte som ett giltigt certifikat.

Kontrollera att tillägget Grundläggande begränsningar för rotcertifikatet är inställt för att ange att Ämnestyp = CA

Annars anses certifikatkedjan vara ogiltig.

Se principsignerare och principexempel

Fel med att lägga till/ta bort principsignerare

Felkod : InvalidOperation

Scenarioexempel

När användaren laddar upp JWS utan "maa-policyCertificate"-anspråk

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

När användaren inte laddar upp ett certifikat i JWS-format

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

Felsökningssteg Om du vill lägga till/ta bort ett nytt principsigneringscertifikat använder du RFC7519 JSON-webbtoken (JWT) med ett anspråk med namnet "x-ms-policyCertificate". Värdet för anspråket är en RFC7517 JSON-webbnyckel som innehåller certifikatet som ska läggas till. JWT måste signeras med privat nyckel för något av de giltiga principsigneringscertifikat som är associerade med providern. Se exempel på principsignerare.

Konfigurationsfel för attesteringsprincip

Felkod PolicyParsingError

Scenarioexempel Princip som tillhandahålls med felaktig syntax (till exempel semikolon saknas)/giltig JWT-princip)

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

Felkod : InvalidOperation

Scenarioexempel Ogiltigt innehåll (till exempel överföringsprincip/osignerad princip när principsignering krävs)


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

Felsökningssteg Se till att principen i textformat är UTF-8-kodad.

Om principsignering krävs måste attesteringsprincipen endast konfigureras i RFC7519 JSON-webbtokenformat (JWT). Om principsignering inte krävs kan principen konfigureras i text- eller JWT-format.

Om du vill konfigurera en princip i JWT-format använder du JWT med ett anspråk med namnet "AttestationPolicy". Värdet för anspråket är Base64URL-kodad version av principtexten. Om attesteringsprovidern har konfigurerats med principsigneringscertifikat måste JWT signeras med privat nyckel för något av de giltiga principsigneringscertifikat som är associerade med providern.

Om du vill konfigurera en princip i textformat anger du principtext direkt.

I PowerShell anger du PolicyFormat som JWT för att konfigurera principen i JWT-format. Standardprincipformatet är Text.

Se exempel på attesteringsprinciper och hur du skapar en attesteringsprincip

Installationsproblem med Az.Attestation i PowerShell

Det går inte att installera Az PowerShell-modulen eller Az.Attestation PowerShell-modulen i PowerShell.

Fel

VARNING! Det gick inte att matcha paketkällan PackageManagementhttps://www.powershellgallery.com/api/v2\Install-Package: Det gick inte att hitta någon matchning för det angivna sökvillkoren och modulnamnet

Felsökningsanvisningar

PowerShell-galleriet har inaktuella TLS-versionerna (Transport Layer Security) 1.0 och 1.1.

TLS 1.2 eller en senare version rekommenderas.

Om du vill fortsätta att interagera med PowerShell-galleriet kör du följande kommando före kommandona Install-Module

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

Problem med principåtkomst/konfiguration i PowerShell

Användare tilldelad med lämpliga roller. Men problem med auktorisering vid hantering av attesteringsprinciper via PowerShell.

Fel

Klienten med objekt-ID-objekt-ID <> har inte behörighet att utföra åtgärden Microsoft.Authorization/roleassignments/write over scope 'subcriptions/<subscriptionId>resourcegroups/secure_enclave_poc/providers/Microsoft.Authorization/roleassignments/<role assignmentId>' eller omfånget är ogiltigt. Om åtkomst nyligen har beviljats uppdaterar du dina autentiseringsuppgifter

Felsökningsanvisningar

Den lägsta versionen av Az PowerShell-modulerna som krävs för att stödja attesteringsåtgärder är:

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

Kör kommandot nedan för att verifiera den installerade versionen av alla Az-moduler

Get-InstalledModule 

Om versionerna inte uppfyller minimikravet kör du PowerShell-cmdleten Update-Module.

Update-Module -Name Az.Attestation