Guide de résolution des problèmes Microsoft Azure Attestation

La gestion des erreurs dans Azure Attestation est implémentée conformément aux instructions de l’API REST de Microsoft. La réponse d’erreur retournée par les API d’Azure Attestation contient le code d’état HTTP et les paires nom-valeur avec les noms « code » et « message ». La valeur de « code » est lisible par l’utilisateur et constitue un indicateur du type d’erreur. La valeur de « message » vise à aider l’utilisateur et fournit les détails relatifs à l’erreur.

Si votre problème n’est pas résolu dans cet article, vous pouvez également envoyer une demande de support Azure sur la page support Azure.

HTTP-401 : exception non autorisée

Code de statut HTTP

401

Code d’erreur Unauthorized

Exemples de scénarios

  • Impossible de gérer les stratégies d’attestation, car l’utilisateur n’est pas affecté avec les rôles appropriés
  • Impossible de gérer les signataires de stratégie d’attestation, car l’utilisateur n’est pas affecté avec les rôles appropriés

Utilisateur ayant un rôle Lecteur et tentant de modifier une stratégie d’attestation dans 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

Étapes de dépannage

Afin de gérer les stratégies, un utilisateur Microsoft Entra doit avoir les autorisations suivantes pour « Actions » :

  • Microsoft.Attestation/attestationProviders/attestation/read

  • Microsoft.Attestation/attestationProviders/attestation/write

  • Microsoft.Attestation/attestationProviders/attestation/delete

    Pour effectuer ces actions, un utilisateur Microsoft Entra doit avoir le rôle « Contributeur d’attestation » sur le fournisseur d’attestation. Ces autorisations peuvent également être héritées avec des rôles tels que « Propriétaire » (autorisations génériques carte), « Contributeur » (autorisations génériques carte) sur l’abonnement/le groupe de ressources.

Afin de lire les stratégies, un utilisateur Microsoft Entra doit avoir l’autorisation suivante pour « Actions » :

  • Microsoft.Attestation/attestationProviders/attestation/read

    Pour effectuer cette action, un utilisateur Microsoft Entra doit avoir le rôle « Lecteur d’attestation » sur le fournisseur d’attestation. Les autorisations de lecture font également partie des rôles tels que « Lecteur » (autorisations génériques carte) sur l’abonnement/groupe de ressources.

Pour vérifier les rôles dans PowerShell, procédez comme suit :

a. Lancez PowerShell et connectez-vous à Azure via la cmdlet « Connect-AzAccount ».

b. Reportez-vous aux instructions fournies ici pour vérifier votre attribution de rôle Azure sur le fournisseur d’attestation

c. Si vous ne trouvez pas une attribution de rôle appropriée, suivez les instructions indiquées ici

Erreurs HTTP–400

Code de statut HTTP

400

Il existe différentes raisons pour lesquelles une requête peut retourner une erreur 400. Voici quelques exemples d’erreurs retournées par les API Azure Attestation.

Échec de l’attestation en raison d’erreurs d’évaluation de la stratégie

La stratégie d’attestation comprend des règles d’autorisation et des règles d’émission. La preuve d’enclave est évaluée en fonction des règles d’autorisation. Les règles d’émission définissent les revendications à inclure dans le jeton d’attestation. Si les revendications dans la preuve d’enclave ne sont pas conformes aux règles d’autorisation, les appels d’attestation retournent une erreur d’évaluation de stratégie.

Code d’erreur PolicyEvaluationError

Exemples de scénarios Lorsque les revendications dans le devis d’enclave ne correspondent pas aux règles d’autorisation de la stratégie d’attestation

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

Étapes de dépannage Les utilisateurs peuvent évaluer les preuves d’enclave par rapport à une stratégie d’attestation SGX avant de les configurer.

Envoyez une demande d’attestation d’API en fournissant le texte de la stratégie dans le paramètre « draftPolicyForAttestation ». L’API AttestSgxEnclave utilise ce document de stratégie lors de l’appel de l’attestation et celui-ci peut être utilisé pour tester les stratégies d’attestation avant qu’elles ne soient consommées. Quand ce champ est présent, le jeton d’attestation généré n’est pas sécurisé.

Voir des exemples de stratégie d’attestation

Échec de l’attestation en raison d’une entrée non valide

Code d’erreur InvalidParameter

Exemples de scénarios Échec de l’attestation SGX en raison d’une entrée non valide. Voici quelques exemples de messages d’erreur :

  • Le devis spécifié n’était pas valide en raison d’une erreur dans la documentation connexe du devis.
  • Le devis spécifié n’était pas valide, car l’appareil sur lequel le devis a été généré ne répond pas aux exigences de base d’Azure.
  • Le devis spécifié n’est pas valide, car le TCBInfo ou le QEID fourni par le service de cache PCK n’était pas valide.

Étapes de dépannage

Microsoft Azure Attestation prend en charge l’attestation de devis SGX générés par les Kits de développement logiciel (SDK) Intel et Open Enclave.

Reportez-vous aux exemples de code pour effectuer une attestation à l’aide des Kits de développement logiciel (SDK) Open Enclave ou Intel.

Erreur de chaîne de certificat non valide lors du chargement de la stratégie/du signataire de stratégie

Code d’erreur InvalidParameter

Exemples de scénarios Configurer une stratégie signée ou ajouter/supprimer un signataire de stratégie, qui est signé avec une chaîne de certificat non valide (par exemple, lorsque l’extension Basic Constraints du certificat racine n’est pas définie sur Subject Type = 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

Étapes de dépannage Le certificat racine doit être signalé comme étant émis par une autorité de certification (les contraintes de base X.509), sinon il ne sera pas considéré comme un certificat valide.

Assurez-vous que l’extension Basic Constraints du certificat racine est définie pour indiquer Subject Type = CA.

Sinon, la chaîne de certificat est considérée comme non valide.

Voir des exemples de signataire de stratégie et de stratégie

Échec de l’ajout ou de la suppression du signataire de stratégie

Code d’erreur InvalidOperation

Exemples de scénarios

Lorsque l’utilisateur charge JWS sans revendication « 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

Lorsque l’utilisateur ne charge pas de certificat au format 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

Étapes de dépannage Pour ajouter/supprimer un nouveau certificat de signataire de stratégie, utilisez RFC7519 JSON Web Token (JWT) avec une revendication nommée « x-ms-policyCertificate ». La valeur de la revendication est une clé web JSON RFC7517, qui contient le certificat à ajouter. JWT doit être signé avec une clé privée de l’un des certificats de signataire de stratégie valides associés au fournisseur. Voir des exemples de signataire de stratégie.

Échec de la configuration de la stratégie d’attestation

Code d’erreur PolicyParsingError

Exemples de scénarios Stratégie fournie avec une syntaxe incorrecte (par exemple, point-virgule manquant ou absence de stratégie JWT valide)

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

Code d’erreur InvalidOperation

Exemples de scénarios Contenu non valide fourni (par exemple, chargement d’une stratégie non signée lorsque la signature de la stratégie est obligatoire)


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

Étapes de dépannage S’assurer que la stratégie au format texte est UTF-8.

Si la signature de stratégie est requise, la stratégie d’attestation doit être configurée uniquement au format RFC7519 JSON Web Token (JWT). Si vous n’avez pas besoin de la signature de stratégie, la stratégie peut être configurée au format texte ou JWT.

Pour configurer une stratégie au format JWT, utilisez JWT avec une revendication nommée « AttestationPolicy ». La valeur de la revendication est la version codée en Base64URL du texte de la stratégie. Si le fournisseur d’attestation est configuré avec des certificats de signataire de stratégie, JWT doit être signé avec la clé privée de l’un des certificats de signataire de stratégie valides associés au fournisseur.

Pour configurer une stratégie au format texte, spécifiez directement le texte de la stratégie.

Dans PowerShell, pour PolicyFormat, spécifiez JWT afin de configurer la stratégie au format JWT. Le format de stratégie par défaut est Texte.

Voir des exemples de stratégie d’attestation et comment créer une stratégie d’attestation

Problèmes d’installation d’Az.Attestation dans PowerShell

Impossible d’installer le module Az PowerShell ou le module PowerShell Az.Attestation dans PowerShell.

Erreur

AVERTISSEMENT : Impossible de résoudre la source du package 'https://www.powershellgallery.com/api/v2' PackageManagement\Install-Package : Aucune correspondance n’a été trouvée pour les critères de recherche et le nom du module spécifiés

Étapes de dépannage

PowerShell Gallery déconseille les versions 1.0 et 1.1 du protocole TLS (Transport Layer Security).

TLS 1.2 ou une version ultérieure est recommandé.

Pour continuer à interagir avec PowerShell Gallery, exécutez la commande suivante avant les commandes Install-Module

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

Problèmes d’accès ou de configuration pour la stratégie dans PowerShell

Utilisateur affecté aux rôles appropriés, mais faisant face à des problèmes d’autorisation lors de la gestion des stratégies d’attestation via PowerShell.

Erreur

Le client doté de l’ID d’objet <object Id> n’a pas l’autorisation d’effectuer l’action Microsoft.Authorization/roleassignments/write over scope ‘subcriptions/<subscriptionId>resourcegroups/secure_enclave_poc/providers/Microsoft.Authorization/roleassignments/<role assignmentId>’ ou l’étendue est non valide. Si l’accès a été récemment accordé, actualisez vos informations d’identification

Étapes de dépannage

La version minimale des modules PowerShell Az requis pour prendre en charge les opérations d’attestation est la suivante :

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

Exécutez la commande ci-dessous pour vérifier la version installée de tous les modules Az :

Get-InstalledModule 

Si les versions ne répondent pas à la configuration minimale requise, exécutez l’applet de commande PowerShell Update-Module.

Update-Module -Name Az.Attestation