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