Руководство по устранению неполадок Аттестации 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