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

Stavový kód 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 Připojení-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

Stavový kód 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