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