Поделиться через


Руководство по устранению неполадок Аттестации Azure

Обработка ошибок в Аттестации Azure реализуется в соответствии с рекомендациями REST API Майкрософт. Сообщение об ошибке, возвращаемое API Аттестации Azure, содержит код состояния HTTP и пары "имя-значение" с именами "code" и "message". Значение "code" понятно для пользователя и указывает тип ошибки. Значение "message" помогает пользователю понять ситуацию и предоставляет подробные сведения об ошибке.

Если проблема не устранена в этой статье, вы также можете отправить запрос поддержка Azure на странице поддержка Azure.

HTTP-401: неавторизованное исключение

Код состояния HTTP

401

Код ошибки: не авторизовано

Примеры сценариев.

  • Не удается управлять политиками аттестации, так как пользователь не назначен соответствующим ролям
  • Не удается управлять подписями политики аттестации, так как пользователь не назначается соответствующим ролям

Пользователь с ролью читателя пытается изменить политику аттестации в 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

Действия по устранению неполадок

Чтобы управлять политиками, пользователю Microsoft Entra требуются следующие разрешения для действий:

  • Microsoft.Attestation/attestationProviders/attestation/read

  • Microsoft.Attestation/attestationProviders/attestation/write

  • Microsoft.Attestation/attestationProviders/attestation/delete

    Для выполнения этих действий пользователь Microsoft Entra должен иметь роль "Участник аттестации" в поставщике аттестации. Эти разрешения также можно наследовать с такими ролями, как "Владелец" (разрешения подстановочного знака), "Участник" (разрешения подстановочного знака) для группы ресурсов или подписки.

Чтобы считывать политики, пользователю Microsoft Entra требуется следующее разрешение для действия:

  • Microsoft.Attestation/attestationProviders/attestation/read

    Чтобы выполнить это действие, пользователь Microsoft Entra должен иметь роль "Читатель аттестации" в поставщике аттестации. Разрешения на чтение также являются частью ролей, таких как "Читатель" (разрешения подстановочного знака) в подписке или группе ресурсов.

Чтобы проверить роли в PowerShell, выполните следующие действия.

a. Запустите PowerShell и войдите в Azure с помощью командлета Connect-AzAccount.

b. Дополнительные сведения см. в руководстве по проверке назначения ролей Azure в поставщике аттестации.

c. Если в списке нет нужного назначения роли, следуйте инструкциям в этом разделе

Ошибки HTTP — 400

Код состояния HTTP

400

Существует несколько причин, по которым запрос может вернуть ошибку 400. Ниже приведены некоторые примеры ошибок, возвращаемых api-интерфейсами Аттестация Azure.

Сбой аттестации из-за ошибок оценки политики

Политика аттестации включает в себя правила авторизации и правила выдачи. Свидетельство анклава оценивается на основе правил авторизации. Правила выдачи определяют утверждения, включаемые в маркер аттестации. Если утверждения в доказательствах анклава не соответствуют правилам авторизации, вызовы будут возвращать ошибку оценки политики.

Код ошибки: PolicyEvaluationError

Примеры сценариев, когда утверждения в кавычках анклава не соответствуют правилам авторизации политики аттестации

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

Действия по устранению неполадок. Пользователи могут оценивать свидетельство анклава в отношении политики аттестации SGX, прежде чем настраивать его.

Отправьте запрос в API-аттестации, указав текст политики в параметре draftPolicyForAttestation. API AttestSgxEnclave будет использовать этот документ политики во время вызова аттестации, и это можно использовать для проверки политик аттестации перед их использованием. Маркер аттестации, созданный при наличии этого поля, будет незащищенным.

См. примеры политик аттестации.

Сбой аттестации из-за недопустимых входных данных

Код ошибки: InvalidParameter

Примеры сценариев. Сбой аттестации SGX из-за недопустимых входных данных. Ниже приведены некоторые примеры сообщений об ошибках:

  • Указанная квота недопустима из-за ошибки в сопутствующей квоте.
  • Указанная квота недопустима, так как устройство, на котором было создано это предложение, не соответствует базовым требованиям Azure.
  • Указанная квота недопустима, так как TCBInfo или QEID, предоставленный службой кэша PCK, был недопустимым.

Действия по устранению неполадок

Аттестация Microsoft Azure поддерживает аттестацию квот SGX, созданных пакетом SDK Intel или пакетом SDK Open Enclave.

Ознакомьтесь с примерами кода для выполнения аттестации с помощью пакета SDK Open Enclave или пакета SDK Intel.

Недопустимая ошибка цепочки сертификатов при отправке политики или подписывания политики.

Код ошибки: InvalidParameter

Примеры сценариев. Настройка подписанной политики либо добавление или удаление подписывания политики, которая была подписана с помощью недействительной цепочки сертификатов (например, если в расширении основных ограничений корневого сертификата не был задан тип субъекта ЦС).

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

Действия по устранению неполадок. Корневой сертификат должен быть помечен как выдаваемый ЦС (основные ограничения X. 509), иначе он не будет считаться действительным сертификатом.

Убедитесь, что в расширении основных ограничений корневого сертификата указывается, что субъект имеет тип ЦС.

В противном случае цепочка сертификатов будет считаться недопустимой.

См. примеры политик и подписываний политик.

Сбой добавления или удаления подписывания политики

Код ошибки: InvalidOperation

Примеры сценариев.

Когда пользователь отправляет JWS без утверждения "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

Когда пользователь не отправляет сертификат в формате 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

Действия по устранению неполадок. Чтобы добавить или удалить новый сертификат для подписывания политик, используйте JSON Web Token (JWT) RFC7519 с утверждением с именем "x-ms-policyCertificate". Значением утверждения является JSON Web Key RFC7517, который содержит добавляемый сертификат. JWT должен быть подписан закрытым ключом любого из допустимых сертификатов для подписывания политик, связанных с поставщиком. См. примеры подписывания политик.

Сбой конфигурации политики аттестации

Код ошибки: PolicyParsingError

Примеры сценариев. Политика указана с неверным синтаксисом (например, отсутствует точка с запятой или допустимая политика 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

Код ошибки: InvalidOperation

Примеры сценариев. Предоставлено недопустимое содержимое (например, политика отправки или неподписанная политика, когда требуется подписывание политики).


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

Действия по устранению неполадок. Убедитесь, что политика в текстовом формате имеет кодировку UTF-8.

Если требуется подписывание политики, политика аттестации должна быть настроена только в формате JRFC7519 JSON Web Token (JWT). Если подписывание политики не требуется, политику можно настроить в текстовом формате или в формате JWT.

Чтобы настроить политику в формате JWT, используйте JWT с утверждением с именем "AttestationPolicy". Значение утверждения — версия текста политики в кодировке Base64URL. Если поставщик аттестации настроен с сертификатами для подписывания политик, JWT должен быть подписан закрытым ключом любого из допустимых сертификатов для подписывания политик, связанных с поставщиком.

Чтобы настроить политику в текстовом формате, укажите текст политики напрямую.

В PowerShell укажите PolicyFormat как JWT, чтобы настроить политику в формате JWT. По умолчанию используется текстовый формат политики.

См. примеры политики аттестации и порядок разработки политики аттестации.

Проблемы с установкой Az.Attestation в PowerShell

Не удается установить модуль Az PowerShell или модуль Az.Attestation PowerShell в PowerShell.

Ошибка

ПРЕДУПРЕЖДЕНИЕ. Не удается разрешить источник пакетаhttps://www.powershellgallery.com/api/v2 "" PackageManagement\Install-Package: совпадение не найдено для указанного критерия поиска и имени модуля

Действия по устранению неполадок

В коллекции PowerShell имеются устаревшие версии протокола TLS (Transport Layer Security) — 1.0 и 1.1.

Используйте TLS версии 1.2 или более поздней.

Чтобы продолжить взаимодействие с коллекцией PowerShell Gallery, выполните следующие команды перед командами Install-Module.

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

Проблемы с доступом и конфигурацией политики в PowerShell

Пользователю назначены соответствующие роли. Но при управлении политиками аттестации с помощью PowerShell возникают проблемы с авторизацией.

Ошибка

Клиент с идентификатором объекта <object Id> не авторизован для выполнения действия Microsoft.Authorization/roleassignments/write в области "subcriptions/<subscriptionId>resourcegroups/secure_enclave_poc/providers/Microsoft.Authorization/roleassignments/<role assignmentId>", либо эта область недопустима. Если доступ был предоставлен недавно, обновите учетные данные.

Действия по устранению неполадок

Минимальная версия модулей Az PowerShell, необходимых для поддержки операций аттестации:

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

Выполните приведенную ниже команду, чтобы проверить версии всех установленных модулей Az.

Get-InstalledModule 

Если версии не соответствуют минимальному требованию, выполните командлет PowerShell update-Module.

Update-Module -Name Az.Attestation