Microsoft Azure Attestation: Leitfaden zur Problembehandlung

Die Fehlerbehandlung in Azure Attestation wird gemäß den Richtlinien zur Microsoft-REST-API implementiert. Die Fehlerantwort, die von Azure Attestation-APIs zurückgegeben wird, enthält den HTTP-Statuscode und Name-Wert-Paare mit den Namen „code“ und „message“. Der Wert von „code“ ist für Menschen lesbar und ein Indikator für den Fehlertyp. Der Wert von „message“ dient dem Benutzer als Hilfe und enthält Details zum Fehler.

Wenn Ihr Problem in diesem Artikel nicht behoben ist, können Sie auch eine Azure-Support Anfrage auf der Azure-Support Seite übermitteln.

HTTP–401: Nicht autorisierte Ausnahme

HTTP-Statuscode

401

Fehlercode: Nicht autorisiert

Szenariobeispiele

  • Nachweisrichtlinien können nicht verwaltet werden, da der Benutzer nicht den entsprechenden Rollen zugewiesen ist.
  • Die Signierer der Nachweisrichtlinie können nicht verwaltet werden, da der Benutzer nicht den entsprechenden Rollen zugewiesen ist.

Ein Benutzer mit der Rolle „Leser“ versucht, in PowerShell eine Nachweisrichtlinie zu bearbeiten:

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

Schritte zur Problembehandlung

Für die Verwaltung von Richtlinien benötigt ein Azure AD-Benutzer die folgenden Berechtigungen für „Aktionen“:

  • Microsoft.Attestation/attestationProviders/attestation/read

  • Microsoft.Attestation/attestationProviders/attestation/write

  • Microsoft.Attestation/attestationProviders/attestation/delete

    Um diese Aktionen auszuführen, muss ein Microsoft Entra-Benutzer über die Rolle "Nachweismitwirkender" für den Nachweisanbieter verfügen. Diese Berechtigungen können auch mit Rollen wie "Besitzer" (wild Karte Berechtigungen), "Mitwirkender" (wild Karte Berechtigungen) für die Abonnement-/Ressourcengruppe geerbt werden.

Für das Lesen von Richtlinien benötigt ein Azure AD-Benutzer die folgenden Berechtigungen für „Aktionen“:

  • Microsoft.Attestation/attestationProviders/attestation/read

    Um diese Aktion auszuführen, muss ein Microsoft Entra-Benutzer die Rolle "Nachweisleser" für den Nachweisanbieter haben. Leseberechtigungen sind auch Teil von Rollen wie "Reader" (wild Karte Berechtigungen) für die Abonnement-/Ressourcengruppe.

Führen Sie die nachfolgenden Schritte aus, um die Rollen in PowerShell zu überprüfen:

a. Starten Sie PowerShell, und melden Sie sich über das Cmdlet „Connect-AzAccount“ bei Azure an.

b. Lesen Sie hier die Anleitungen, um Ihre Azure-Rollenzuweisung für den Nachweisanbieter zu überprüfen.

c. Befolgen Sie diese Anleitung, falls Sie keine passende Rollenzuweisung finden

HTTP 400-Fehler

HTTP-Statuscode

400

Es gibt verschiedene Gründe, warum für eine Anforderung der Fehler 400 zurückgegeben werden kann. Hier sind einige Beispiele für Fehler, die von Azure Attestation-APIs zurückgegeben werden.

Nachweisfehler aufgrund von Fehlern bei der Richtlinienauswertung

Eine Nachweisrichtlinie umfasst Autorisierungs- und Ausstellungsregeln. Die Enklavenbeweise werden basierend auf den Autorisierungsregeln ausgewertet. Mit Ausstellungsregeln werden die Ansprüche definiert, die in das Nachweistoken eingeschlossen werden sollen. Wenn Ansprüche in Enklaven-Nachweisen nicht den Autorisierungsregeln entsprechen, geben Attestaufrufe richtlinienauswertungsfehler zurück.

Fehlercode: PolicyEvaluationError

Szenariobeispiele Wenn Ansprüche im Enklavenzitat nicht mit den Autorisierungsregeln der Nachweisrichtlinie übereinstimmen

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

Schritte zur Problembehandlung Benutzer können die Enklavenbeweise anhand einer SGX-Nachweisrichtlinie auswerten, bevor sie die Konfiguration dafür durchführen.

Senden Sie eine Anforderung für einen API-Nachweis, indem Sie Richtlinientext im Parameter „draftPolicyForAttestation“ angeben. Von der AttestSgxEnclave-API wird dieses Richtliniendokument während des Nachweisaufrufs verwendet. Es kann genutzt werden, um Nachweisrichtlinien vor der Verwendung zu testen. Ein Nachweistoken, das bei Vorhandensein dieses Felds generiert wird, ist nicht geschützt.

Sehen Sie sich die Beispiele für Nachweisrichtlinien an.

Nachweisfehler aufgrund einer ungültigen Eingabe

Fehlercode: InvalidParameter

Szenariobeispiele SGX-Nachweisfehler aufgrund einer ungültigen Eingabe. Hier sind einige Beispiele für Fehlermeldungen:

  • Das angegebene Angebot war aufgrund eines Fehlers im Begleitmaterial des Angebots ungültig.
  • Das angegebene Angebot war ungültig, weil das Gerät, auf dem das Angebot generiert wurde, die Azure-Baselineanforderungen nicht erfüllt.
  • Das angegebene Angebot war ungültig, weil die vom PCK-Cachedienst bereitgestellten TCBInfo- oder QEID-Daten ungültig waren.

Schritte zur Problembehandlung

Microsoft Azure Attestation unterstützt den Nachweisvorgang für SGX-Angebote, die vom Intel SDK und Open Enclave SDK generiert werden.

Sehen Sie sich die Codebeispiele zur Durchführung des Nachweisvorgangs mit dem Open Enclave SDK/Intel SDK an.

Fehler aufgrund einer ungültigen Zertifikatkette beim Hochladen der Richtlinie bzw. des Richtliniensignaturgebers

Fehlercode: InvalidParameter

Szenariobeispiele Konfigurieren einer signierten Richtlinie oder Hinzufügen/Löschen eines Richtliniensignaturgebers, wenn zum Signieren eine ungültige Zertifikatkette verwendet wurde (z. B. wenn die Erweiterung für Basiseinschränkungen des Stammzertifikats nicht auf „Subject Type = CA“ festgelegt ist)

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

Schritte zur Problembehandlung Das Stammzertifikat muss über eine Kennzeichnung verfügen, dass es von einer Zertifizierungsstelle (CA) ausgestellt wurde (X.509-Basiseinschränkungen), weil es sonst nicht als gültiges Zertifikat angesehen wird.

Stellen Sie sicher, dass die Erweiterung für Basiseinschränkungen des Stammzertifikats auf „Subject Type = CA“ festgelegt ist.

Andernfalls wird die Zertifikatkette als ungültig angesehen.

Sehen Sie sich die Beispiele für Richtliniensignaturgeber und Richtlinien an.

Fehler beim Hinzufügen/Löschen des Richtliniensignaturgebers

Fehlercode: InvalidOperation

Szenariobeispiele

Benutzer lädt JWS ohne „maa-policyCertificate“-Anspruch hoch

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

Benutzer lädt kein Zertifikat im JWS-Format hoch

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

Schritte zur Problembehandlung Verwenden Sie zum Hinzufügen/Löschen ein neues Richtlinien-Signaturgeberzertifikats das RFC7519 JSON Web Token (JWT) mit dem Anspruch „x-ms-policyCertificate“. Der Wert des Anspruchs ist ein RFC7517 JSON Web Key, der das hinzuzufügende Zertifikat enthält. Das JWT muss mit dem privaten Schlüssel eines beliebigen gültigen Richtlinien-Signaturgeberzertifikats signiert werden, das dem Anbieter zugeordnet ist. Weitere Informationen finden Sie unter Beispiele für Richtliniensignaturgeber.

Fehler bei der Konfiguration der Nachweisrichtlinie

Fehlercode: PolicyParsingError

Szenariobeispiele Bereitstellung der Richtlinie mit fehlerhafter Syntax (z. B. Semikolon/gültige JWT-Richtlinie fehlt)

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

Fehlercode: InvalidOperation

Szenariobeispiele Bereitstellung ungültiger Inhalte (z. B. Richtlinienupload/unsignierte Richtlinie, obwohl erforderlich)


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

Schritte zur Problembehandlung Stellen Sie sicher, dass die Richtlinie im Textformat UTF-8-codiert ist.

Wenn die Richtlinie signiert sein muss, darf die Nachweisrichtlinie nur im RFC7519 JWT-Format (JSON Web Token) konfiguriert sein. Falls keine Richtliniensignaturen erforderlich sind, kann die Richtlinie im Text- oder JWT-Format konfiguriert werden.

Verwenden Sie das JWT mit dem Anspruch „AttestationPolicy“, um eine Richtlinie im JWT-Format zu konfigurieren. Der Wert des Anspruchs ist die Base64URL-codierte Version des Richtlinientexts. Wenn der Nachweisanbieter mit Richtlinien-Signaturgeberzertifikaten konfiguriert wird, muss das JWT mit dem privaten Schlüssel eines beliebigen gültigen Richtlinien-Signaturgeberzertifikats signiert werden, das dem Anbieter zugeordnet ist.

Geben Sie Richtlinientext direkt an, um eine Richtlinie im Textformat zu konfigurieren.

Geben Sie in PowerShell für „PolicyFormat“ die Option „JWT“ an, um die Richtlinie im JWT-Format zu konfigurieren. Das Standardformat für Richtlinien ist „Text“.

Weitere Informationen finden Sie unter Beispiele für eine Nachweisrichtlinie und Erstellen und Signieren einer Nachweisrichtlinie.

Probleme bei der Az.Attestation-Installation in PowerShell

Das Az PowerShell-Modul oder das Az.Attestation PowerShell-Modul kann nicht in PowerShell installiert werden.

Fehler

WARNUNG: Die Paketquelle 'https://www.powershellgallery.com/api/v2' PackageManagement\Install-Package kann nicht aufgelöst werden: Für die angegebenen Suchkriterien und den Modulnamen wurde keine Übereinstimmung gefunden.

Schritte zur Problembehandlung

Im PowerShell-Katalog wurden die TLS-Versionen (Transport Layer Security) 1.0 und 1.1 als veraltet gekennzeichnet.

Empfohlen wird TLS 1.2 oder eine höhere Version.

Führen Sie den folgenden Befehl vor den Befehlen vom Typ „Install-Module“ aus, um weiterhin mit dem PowerShell-Katalog zu interagieren.

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

Richtlinienzugriff/Konfigurationsprobleme in PowerShell

Dem Benutzer wurden die richtigen Rollen zugewiesen. Beim Verwalten der Nachweisrichtlinien mit PowerShell treten aber Autorisierungsprobleme auf.

Fehler

Der Client mit der Objekt-ID <object Id> ist nicht zur Durchführung der Aktion „Microsoft.Authorization/roleassignments/write“ für den Bereich „subcriptions/<subscriptionId>resourcegroups/secure_enclave_poc/providers/Microsoft.Authorization/roleassignments/<role assignmentId>“ berechtigt, oder der Bereich ist ungültig. Wenn der Zugriff kürzlich gewährt wurde, aktualisieren Sie Ihre Anmeldeinformationen

Schritte zur Problembehandlung

Die Mindestversion der Az PowerShell-Module, die zur Unterstützung von Nachweisvorgängen erforderlich sind:

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

Führen Sie den folgenden Befehl aus, um die installierte Version aller Az-Module zu überprüfen:

Get-InstalledModule 

Wenn die Versionen die Mindestanforderung nicht erfüllen, führen Sie das PowerShell-Cmdlet "Update-Module" aus.

Update-Module -Name Az.Attestation