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" (Wildcardberechtigungen), "Mitwirkender" (Wildcardberechtigungen) in der 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" (Wildcard-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 Fehlersuche
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 Fehlersuche
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