Průvodce odstraňováním potíží s ověřením identity v Microsoft Azure
Zpracování chyb ve službě Azure Attestation se implementuje podle pokynů k rozhraní Microsoft REST API. Odpověď na chybu vrácená rozhraními API pro ověření identity Azure obsahuje stavový kód HTTP a páry name/value s názvy "code" a "message". Hodnota "kódu" je čitelná a je indikátorem typu chyby. Hodnota zprávy má v úmyslu uživateli pomoct a poskytuje podrobnosti o chybě.
Pokud se váš problém v tomto článku nevyřeší, můžete na stránce podpora Azure odeslat také podpora Azure žádost.
HTTP–401: Neautorizovaná výjimka
Kód stavu HTTP
401
Kód chyby Neautorizováno
Příklady scénářů
- Nejde spravovat zásady ověření identity, protože uživatel nemá přiřazené odpovídající role
- Nejde spravovat podepisující zásady ověření identity, protože uživatel není přiřazený s příslušnými rolemi
Uživatel s rolí Čtenář, který se pokouší upravit zásady ověření identity v PowerShellu
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
Postup při řešení potíží
Aby bylo možné spravovat zásady, vyžaduje uživatel Microsoft Entra následující oprávnění pro akce:
Microsoft.Attestation/attestationProviders/attestationProviders/attestation/read
Microsoft.Attestation/attestationProviders/attestation/write
Microsoft.Attestation/attestationProviders/attestationProviders/attestation/delete
K provedení těchto akcí musí mít uživatel Microsoft Entra roli Přispěvatel ověření identity u poskytovatele ověření identity. Tato oprávnění se dají také dědit pomocí rolí, jako je Vlastník (oprávnění se zástupnými cardy), Přispěvatel (oprávnění zástupných znaků) u předplatného nebo skupiny prostředků.
Ke čtení zásad vyžaduje uživatel Microsoft Entra následující oprávnění pro akce:
Microsoft.Attestation/attestationProviders/attestationProviders/attestation/read
K provedení této akce musí mít uživatel Microsoft Entra roli Čtenář ověření identity u poskytovatele ověření identity. Oprávnění ke čtení jsou také součástí rolí, jako je čtenář (oprávnění se zástupnými znaky) pro předplatné nebo skupinu prostředků.
Pokud chcete ověřit role v PowerShellu, spusťte následující kroky:
a. Spuštění PowerShellu a přihlášení k Azure pomocí rutiny Connect-AzAccount
b. Informace o ověření přiřazení role Azure u poskytovatele ověření identity najdete v doprovodných materiálech.
c. Pokud nenajdete odpovídající přiřazení role, postupujte podle pokynů v tomto článku .
Chyby HTTP – 400
Kód stavu HTTP
400
Žádost může vrátit 400 různých důvodů. Tady je několik příkladů chyb vrácených rozhraními API služby Azure Attestation.
Selhání ověření identity kvůli chybám vyhodnocení zásad
Zásady ověření identity zahrnují autorizační pravidla a pravidla vystavování. Důkazy enklávy se vyhodnocují na základě autorizačních pravidel. Pravidla vystavování definují deklarace identity, které se mají zahrnout do tokenu ověření identity. Pokud deklarace identity v důkazech enklávy nedodržují autorizační pravidla, volání ověření vrátí chybu vyhodnocení zásad.
Chyba PolicyEvaluationError
Příklady scénářů, kdy deklarace identity v uvozovce enklávy neodpovídají autorizačním pravidlu zásad ověření identity
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"]
Postup při řešení potíží: Uživatelé můžou vyhodnotit důkazy enklávy proti zásadám ověření identity SGX před konfigurací stejné identity.
Odešlete požadavek na ověření rozhraní API zadáním textu zásady v parametru draftPolicyForAttestation. Rozhraní API AttestSgxEnclave použije tento dokument zásad během volání atestu a dá se použít k otestování zásad ověření identity před jejich použitím. Token ověření identity vygenerovaný při přítomnosti tohoto pole bude nezabezpečený.
Příklady zásad ověření identity
Selhání ověření identity kvůli neplatnému vstupu
Kód chyby InvalidParameter
Příklady selhání ověření identity SGX kvůli neplatnému vstupu Tady je několik příkladů chybových zpráv:
- Zadaná nabídka byla neplatná kvůli chybě v uvozovkách
- Zadaná nabídka byla neplatná, protože zařízení, na kterém byla nabídka vygenerována, nesplňuje základní požadavky Azure.
- Zadaná uvozovka byla neplatná, protože informace TCBInfo nebo QEID poskytnuté službou mezipaměti PCK byly neplatné.
Postup při řešení potíží
Ověření identity Microsoft Azure podporuje ověření citací SGX generovaných sadou Intel SDK a sadou Open Enclave SDK.
Projděte si ukázky kódu pro ověření pomocí sady Open Enclave SDK nebo Sady Intel SDK.
Chyba neplatného řetězu certifikátů při nahrávání zásad nebo podepisující osoby
Kód chyby InvalidParameter
Příklady scénářů Konfigurace podepsaných zásad nebo přidání nebo odstranění podepisující zásady, která je podepsaná neplatným řetězem certifikátů (například pokud rozšíření základní omezení kořenového certifikátu není nastavené na Typ subjektu = 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
Postup řešení potíží: Kořenový certifikát musí být označený jako vystavený certifikační autoritou (základní omezení X.509), jinak se nepovažuje za platný certifikát.
Ujistěte se, že je rozšíření základních omezení kořenového certifikátu nastavené tak, aby indikuje, že typ subjektu = CA
Jinak se řetěz certifikátů považuje za neplatný.
Podívejte se na příklady podepisující osoby a zásad zásad .
Selhání při přidávání nebo odstraňování podepisujícího zásad
Kód chyby InvalidOperation
Příklady scénářů
Když uživatel nahraje JWS bez deklarace identity 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
Když uživatel nenahraje certifikát ve formátu 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
Při řešení potíží s postupem přidání nebo odstranění nového certifikátu podepisujícího zásad použijte RFC7519 webového tokenu JSON (JWT) s deklarací identity x-ms-policyCertificate. Hodnota deklarace identity je RFC7517 webový klíč JSON, který obsahuje certifikát, který se má přidat. JWT musí být podepsaný privátním klíčem některého z platných certifikátů podepisující zásady přidružených k zprostředkovateli. Podívejte se na příklady podepisující osoby zásad.
Selhání konfigurace zásad ověření identity
Kód chyby PolicyParsingError
Příklady scénářů s nesprávnou syntaxí (například chybějící středník)/platná zásada JWT)
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
Kód chyby InvalidOperation
Příklady scénářů : Zadaný neplatný obsah (například nahrání zásad nebo nepodepsaných zásad při vyžadování podepisování zásad)
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
Postup řešení potíží: Ujistěte se, že je zásada ve formátu Text zakódovaná ve formátu UTF-8.
Pokud je vyžadováno podepisování zásad, musí být zásady ověření identity nakonfigurované pouze ve formátu RFC7519 webového tokenu JSON (JWT). Pokud se podepisování zásad nevyžaduje, je možné zásady nakonfigurovat ve formátu textu nebo JWT.
Pokud chcete nakonfigurovat zásadu ve formátu JWT, použijte JWT s deklarací identity s názvem AttestationPolicy. Hodnota deklarace identity je verze zakódovaná v kódu Base64URL textu zásady. Pokud je zprostředkovatel ověření identity nakonfigurovaný s certifikáty podepisující zásady, musí být JWT podepsaný privátním klíčem některého z platných certifikátů podepisující zásady přidružených k zprostředkovateli.
Pokud chcete nakonfigurovat zásadu v textovém formátu, zadejte text zásad přímo.
V PowerShellu zadejte policyFormat jako JWT pro konfiguraci zásad ve formátu JWT. Výchozí formát zásad je Text.
Podívejte se na příklady zásad ověření identity a postup vytvoření zásady ověření identity.
Problémy s instalací Az.Attestation v PowerShellu
V PowerShellu nejde nainstalovat modul Az PowerShell nebo modul Az.Attestation PowerShell.
Chyba
UPOZORNĚNÍ: Nelze přeložit zdrojhttps://www.powershellgallery.com/api/v2 balíčku PackageManagement\Install-Package: Nebyla nalezena žádná shoda pro zadaná kritéria vyhledávání a název modulu.
Postup při řešení potíží
Galerie prostředí PowerShell má zastaralé tls (Transport Layer Security) verze 1.0 a 1.1.
Doporučuje se protokol TLS 1.2 nebo novější verze.
Pokud chcete pokračovat v interakci s Galerie prostředí PowerShell, spusťte před příkazy Install-Module následující příkaz.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Problémy s přístupem k zásadám nebo konfigurací v PowerShellu
Uživatel přiřazený s příslušnými rolemi Dochází ale k problémům s autorizací při správě zásad ověření identity prostřednictvím PowerShellu.
Chyba
Klient s ID <> objektu ID objektu nemá autorizaci k provedení akce Microsoft.Authorization/roleassignments/write v oboru subcriptions/<subscriptionId>resourcegroups/secure_enclave_poc/providers/Microsoft.Authorization/roleassignments/<role assignmentId> nebo je obor neplatný. Pokud byl přístup nedávno udělen, aktualizujte své přihlašovací údaje.
Postup při řešení potíží
Minimální verze modulů Az PowerShellu vyžadovaných pro podporu operací ověření identity:
- Az 4.5.0
- Az.Accounts 1.9.2
- Az.Attestation 0.1.8
Spuštěním následujícího příkazu ověřte nainstalovanou verzi všech modulů Az.
Get-InstalledModule
Pokud verze nesplňují minimální požadavek, spusťte rutinu PowerShellu update-module.
Update-Module -Name Az.Attestation