Panduan pemecahan masalah Microsoft Azure Attestation

Penanganan kesalahan di Azure Attestation diterapkan mengikuti panduan Microsoft REST API. Respons kesalahan yang dikembalikan oleh API Azure Attestation berisi kode status HTTP dan pasangan nama/nilai dengan nama "kode" dan "pesan". Nilai "kode" dapat dibaca manusia dan merupakan indikator dari jenis kesalahan. Nilai "pesan" bermaksud untuk membantu pengguna dan memberikan detail kesalahan.

Jika masalah Anda tidak ditangani dalam artikel ini, Anda juga dapat mengirimkan permintaan dukungan Azure di halaman dukungan Azure.

HTTP–401: Pengecualian tidak sah

Kode status HTTP

401

Kode kesalahan Tidak diizinkan

Contoh skenario

  • Tidak dapat mengelola kebijakan pengesahan karena pengguna tidak ditetapkan dengan peran yang sesuai
  • Tidak dapat mengelola penanda tangan kebijakan pengesahan karena pengguna tidak ditetapkan dengan peran yang sesuai

Pengguna dengan peran Pembaca mencoba mengedit kebijakan pengesahan di 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

Langkah-langkah pemecahan masalah

Untuk mengelola kebijakan, pengguna Microsoft Entra memerlukan izin berikut untuk "Tindakan":

  • Microsoft.Attestation/attestationProviders/attestation/read

  • Microsoft.Attestation/attestationProviders/pengesahan/tulis

  • Microsoft.Attestation/attestationProviders/pengesahan/hapus

    Untuk melakukan tindakan ini, pengguna Microsoft Entra harus memiliki peran "Kontributor Pengesahan" pada penyedia pengesahan. Izin ini juga dapat diwariskan dengan peran seperti "Pemilik" (izin kartubebas), "Kontributor" (izin kartubebas) pada grup langganan/sumber daya.

Untuk membaca kebijakan, pengguna Microsoft Entra memerlukan izin berikut untuk "Tindakan":

  • Microsoft.Attestation/attestationProviders/attestation/read

    Untuk melakukan tindakan ini, pengguna Microsoft Entra harus memiliki peran "Pembaca Pengesahan" pada penyedia pengesahan. Izin baca juga merupakan bagian dari peran seperti "Pembaca" (izin kartubebas) pada grup langganan/sumber daya.

Untuk memverifikasi peran di PowerShell, jalankan langkah-langkah di bawah ini:

a. Luncurkan PowerShell dan masuk ke Azure melalui cmdlet "Connect-AzAccount"

b. Lihat panduan di sini untuk memverifikasi penetapan peran Azure Anda pada penyedia pengesahan

c. Jika Anda tidak menemukan penetapan peran yang sesuai, ikuti petunjuk di sini

HTTP – Kesalahan 400

Kode status HTTP

400

Ada berbagai alasan mengapa permintaan dapat mengembalikan 400. Berikut adalah beberapa contoh kesalahan yang dikembalikan oleh API Azure Attestation.

Kegagalan pengesahan karena kesalahan evaluasi kebijakan

Kebijakan pengesahan mencakup aturan otorisasi dan aturan penerbitan. Bukti enklave dievaluasi berdasarkan aturan otorisasi. Aturan penerbitan mendefinisikan klaim yang akan dimasukkan dalam token pengesahan. Jika klaim dalam bukti enklave tidak mematuhi aturan otorisasi, panggilan pengesahan akan mengembalikan kesalahan evaluasi kebijakan.

Kode kesalahan PolicyEvaluationError

Contoh skenario Ketika klaim dalam kutipan enklave tidak cocok dengan aturan otorisasi kebijakan pengesahan

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

Langkah-langkah pemecahan masalah Pengguna dapat mengevaluasi bukti enklave terhadap kebijakan pengesahan SGX sebelum mengonfigurasi hal yang sama.

Kirim permintaan untuk membuktikan API dengan memberikan teks kebijakan dalam parameter "draftPolicyForAttestation". API AttestSgxEnclave akan menggunakan dokumen kebijakan ini selama panggilan uji coba dan ini dapat digunakan untuk menguji kebijakan pengesahan sebelum dikonsumsi. Token pengesahan yang dihasilkan ketika bidang ini hadir akan tidak aman.

Lihat contoh kebijakan pengesahan

Kegagalan pengesahan karena masukan yang tidak valid

Kode kesalahan InvalidParameter

Contoh skenario Pengesahan SGX gagal karena masukan yang tidak valid. Berikut adalah beberapa contoh pesan kesalahan:

  • Kutipan yang ditentukan tidak valid karena kesalahan dalam kolateral kutipan
  • Kutipan yang ditentukan tidak valid karena perangkat tempat kutipan dibuat tidak memenuhi persyaratan dasar Azure
  • Kutipan yang ditentukan tidak valid karena TCBInfo atau QEID yang disediakan oleh Layanan Cache PCK tidak valid

Langkah-langkah pemecahan masalah

Microsoft Azure Attestation mendukung pengesahan kutipan SGX yang dihasilkan oleh Intel SDK dan Open Enclave SDK.

Lihat sampel kode untuk melakukan pengesahan menggunakan Open Enclave SDK/Intel SDK

Kesalahan rantai sertifikat tidak valid saat mengunggah penanda tangan kebijakan/kebijakan

Kode kesalahan InvalidParameter

Contoh skenario Mengonfigurasi kebijakan yang ditanda tangani atau menambahkan/menghapus penanda tangan kebijakan, yang ditandatangani dengan rantai sertifikat yang tidak valid (misalnya, ketika ekstensi Batasan Dasar sertifikat akar tidak diatur ke Jenis Subjek = 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

Langkah-langkah pemecahan masalah Sertifikat akar harus ditandai sebagai diterbitkan oleh CA (batasan dasar X.509), jika tidak, sertifikat tersebut tidak akan dianggap sebagai sertifikat yang valid.

Pastikan bahwa ekstensi Batasan Dasar sertifikat akar diatur untuk menunjukkan bahwa Jenis Subjek = CA

Selain itu rantai sertifikat dianggap tidak valid.

Lihat contoh penanda tangan dan kebijakan

Kegagalan penanda tangan kebijakan Tambah/Hapus

Kode kesalahan InvalidOperation

Contoh skenario

Ketika pengguna mengunggah JWS tanpa klaim "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

Saat pengguna tidak mengunggah sertifikat dalam 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

Langkah-langkah pemecahan masalah Untuk menambahkan/menghapus sertifikat penanda tangan kebijakan baru, gunakan RFC7519 JSON Web Token (JWT) dengan klaim bernama "x-ms-policyCertificate". Nilai klaim adalah JSON Web Key, RFC7517, yang berisi sertifikat yang akan ditambahkan. JWT harus ditandatangani dengan kunci privat dari salah satu sertifikat penanda tangan kebijakan yang valid yang terkait dengan penyedia. Lihat contoh penanda tangan kebijakan.

Kegagalan konfigurasi kebijakan pengesahan

Kode kesalahan PolicyParsingError

Contoh skenario Kebijakan yang diberikan dengan sintaksis yang salah (misalnya, hilang titik koma/kebijakan JWT yang valid)

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

Kode kesalahan InvalidOperation

Contoh skenario Konten tidak valid yang disediakan (misalnya, kebijakan unggah/kebijakan tidak ditandatangani saat penandatanganan kebijakan diperlukan)


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

Langkah-langkah pemecahan masalah Pastikan bahwa kebijakan dalam format Teks dikodekan UTF-8.

Jika penandatanganan kebijakan diperlukan, kebijakan pengesahan harus dikonfigurasi hanya dalam format RFC7519 JSON Web Token (JWT). Jika penandatanganan kebijakan tidak diperlukan, kebijakan dapat dikonfigurasi dalam format teks atau JWT.

Untuk mengonfigurasi kebijakan dalam format JWT, gunakan JWT dengan klaim bernama "AttestationPolicy". Nilai klaim adalah versi Base64URL yang dikodekan dari teks kebijakan. Jika penyedia pengesahan dikonfigurasi dengan sertifikat penanda tangan kebijakan, JWT harus ditandatangani dengan kunci privat dari salah satu sertifikat penanda tangan kebijakan yang valid yang terkait dengan penyedia.

Untuk mengonfigurasi kebijakan dalam format teks, tentukan teks kebijakan secara langsung.

Di PowerShell, tentukan PolicyFormat sebagai JWT untuk mengonfigurasi kebijakan dalam format JWT. Format kebijakan default adalah Teks.

Lihat contoh kebijakan pengesahan dan cara menulis kebijakan pengesahan

Masalah penginstalan Az.Attestation di PowerShell

Tidak dapat menginstal modul Az PowerShell atau modul Az.Attestation PowerShell di PowerShell.

Kesalahan

PERINGATAN: Tidak dapat mengatasi sumber paket 'https://www.powershellgallery.com/api/v2' PackageManagement\Install-Package: Tidak ada kecocokan yang ditemukan untuk kriteria pencarian dan nama modul yang ditentukan

Langkah-langkah pemecahan masalah

PowerShell Gallery memiliki Transport Layer Security (TLS) versi 1.0 dan 1.1 yang sudah tidak digunakan lagi.

Sebaiknya gunakan TLS 1.2 atau versi yang lebih baru.

Untuk terus berinteraksi dengan PowerShell Gallery, jalankan perintah berikut sebelum perintah Modul-Pemasangan

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

Masalah akses/konfigurasi kebijakan di PowerShell

Pengguna yang ditugaskan dengan peran yang sesuai. Tetapi menghadapi masalah otorisasi saat mengelola kebijakan pengesahan melalui PowerShell.

Kesalahan

Klien dengan ID objek <Id objek> tidak memiliki otorisasi untuk melakukan tindakan Microsoft.Authorization/roleassignments/write over scope 'subcriptions/<subscriptionId> resourcegroups/secure_enclave_poc/providers/Microsoft.Authorization/roleassignments/<role assignmentId>' atau cakupannya tidak valid. Jika akses baru-baru ini diberikan, refresh kredensial Anda

Langkah-langkah pemecahan masalah

Versi minimum modul Az PowerShell yang diperlukan untuk mendukung operasi pengesahan adalah:

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

Jalankan perintah di bawah ini untuk memverifikasi versi yang dipasang dari semua modul Az

Get-InstalledModule 

Jika versi tidak memenuhi persyaratan minimum, jalankan cmdlet PowerShell Update-Module.

Update-Module -Name Az.Attestation