Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Memulai dengan pustaka klien sertifikat Azure Key Vault untuk Python. Ikuti langkah-langkah berikut untuk menginstal paket dan mencoba contoh kode untuk tugas dasar. Dengan menggunakan Key Vault untuk menyimpan sertifikat, Anda menghindari penyimpanan sertifikat dalam kode yang meningkatkan keamanan aplikasi Anda.
Dokumentasi referensi API | Kode sumber pustaka | Paket (Indeks Paket Python)
Prasyarat
- Langganan Azure - buat satu secara gratis.
- Python 3.7+
- Azure CLI
Panduan cepat ini mengasumsikan bahwa Anda menggunakan Azure CLI atau Azure PowerShell di dalam terminal Linux.
Siapkan lingkungan lokal Anda
Panduan cepat ini menggunakan pustaka Azure Identity bersama Azure CLI atau Azure PowerShell untuk mengautentikasi pengguna ke layanan Azure. Pengembang juga dapat menggunakan Visual Studio atau Visual Studio Code untuk mengautentikasi panggilan. Untuk informasi lebih lanjut, lihat Mengautentikasi klien dengan pustaka klien Azure Identity.
Masuk ke Azure
Jalankan perintah
login.az loginJika CLI dapat membuka browser default Anda, CLI akan melakukannya dan memuat halaman masuk Azure.
Jika tidak, buka halaman browser di https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda.
Masuk menggunakan kredensial akun Anda di browser.
Menginstal paket
Di terminal atau command prompt, buat folder proyek sesuai, lalu buat dan aktifkan lingkungan virtual Python seperti yang dijelaskan di Menggunakan lingkungan virtual Python.
Instal pustaka identitas Microsoft Entra:
pip install azure.identityInstal pustaka klien sertifikat Key Vault:
pip install azure-keyvault-certificates
Buat grup sumber daya dan gudang kunci
Gunakan perintah
az group createuntuk membuat grup sumber daya:az group create --name myResourceGroup --location eastusAnda dapat mengubah "eastus" ke lokasi yang lebih dekat dengan Anda, jika Anda mau.
Gunakan
az keyvault createuntuk membuat brankas kunci.az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroupGanti
<your-unique-keyvault-name>dengan nama yang unik di seluruh Azure. Anda biasanya menggunakan nama pribadi atau perusahaan bersama dengan nomor dan pengidentifikasi lain.
Atur variabel lingkungan KEY_VAULT_NAME
** Skrip kami akan menggunakan nilai yang ditetapkan ke KEY_VAULT_NAME variabel lingkungan sebagai nama vault kunci. Oleh karena itu Anda harus mengatur nilai ini menggunakan perintah berikut:
export KEY_VAULT_NAME=<your-unique-keyvault-name>
Izinkan akses ke brankas kunci Anda
Untuk mendapatkan izin ke brankas kunci Anda melalui Kontrol Akses Berbasis Peran (RBAC), tetapkan peran ke Nama Prinsipal Pengguna (UPN) Anda menggunakan perintah az role assignment create Azure CLI.
az role assignment create --role "Key Vault Certificates Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Ganti #c0#upn#c1#, #c2#subscription-id#c3#, #c4#resource-group-name#c5#, dan #c6#your-unique-keyvault-name#c7# dengan nilai aktual Anda. UPN Anda biasanya akan dalam format alamat email (misalnya, username@domain.com).
Membuat kode sampel
Pustaka klien sertifikat Azure Key Vault untuk Python mengizinkan Anda mengelola sertifikat. Sampel kode berikut menunjukkan cara membuat klien, mengatur sertifikat, mengambil sertifikat, dan menghapus sertifikat.
Buat file dengan nama kv_certificates.py yang berisi kode ini.
import os
from azure.keyvault.certificates import CertificateClient, CertificatePolicy
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
certificateName = input("Input a name for your certificate > ")
print(f"Creating a certificate in {keyVaultName} called '{certificateName}' ...")
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
print(" done.")
print(f"Retrieving your certificate from {keyVaultName}.")
retrieved_certificate = client.get_certificate(certificateName)
print(f"Certificate with name '{retrieved_certificate.name}' was found'.")
print(f"Deleting your certificate from {keyVaultName} ...")
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
print(" done.")
Menjalankan kode
Pastikan kode di bagian sebelumnya ada dalam file dengan nama kv_certificates.py. Kemudian jalankan kode dengan perintah berikut:
python kv_certificates.py
- Jika Anda mengalami kesalahan izin, pastikan Anda menjalankan perintah
az keyvault set-policyatauSet-AzKeyVaultAccessPolicy. - Menjalankan ulang kode dengan nama kunci yang sama dapat menghasilkan kesalahan, "(Konflik) Nama> sertifikat <saat ini dalam status dihapus tetapi dapat dipulihkan." Gunakan nama kunci yang berbeda.
Detail kode
Mengautentikasi dan membuat klien
Permintaan aplikasi ke sebagian besar layanan Azure harus diotorisasi. Menggunakan kelas DefaultAzureCredential yang disediakan oleh pustaka klien Azure Identity adalah pendekatan yang direkomendasikan untuk menerapkan koneksi tanpa kata sandi ke layanan Azure dalam kode Anda. DefaultAzureCredential mendukung beberapa metode autentikasi dan menentukan metode autentikasi yang harus digunakan saat runtime bahasa umum. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (lokal vs. produksi) tanpa menerapkan kode spesifik per lingkungan.
Dalam panduan cepat ini, DefaultAzureCredential mengotentikasi ke brankas kunci dengan kredensial pengguna pengembangan lokal yang masuk ke Azure CLI. Saat aplikasi disebarkan ke Azure, kode yang sama DefaultAzureCredential dapat secara otomatis menemukan dan menggunakan identitas terkelola yang ditetapkan ke App Service, Mesin Virtual, atau layanan lainnya. Untuk informasi selengkapnya, lihat Gambaran Umum Identitas Terkelola.
Dalam kode contoh, nama brankas kunci Anda dikembangkan menjadi URI brankas kunci, dalam format https://\<your-key-vault-name>.vault.azure.net.
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
Menyimpan sertifikat
Setelah Anda mendapatkan objek klien untuk Key Vault, Anda dapat membuat sertifikat menggunakan metode begin_create_certificate:
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
Di sini, sertifikat memerlukan kebijakan yang diperoleh dengan metode CertificatePolicy.get_default.
Memanggil metode begin_create_certificate menghasilkan panggilan asinkron ke Azure REST API untuk key vault. Panggilan asinkron mengembalikan objek poller. Untuk menunggu hasil operasi, panggil metode result poller.
Saat Azure menangani permintaan, Azure akan mengautentikasi identitas pemanggil (perwakilan layanan) menggunakan objek kredensial yang Anda berikan kepada klien.
Mengambil sertifikat
Untuk membaca sertifikat dari Key Vault, gunakan metode get_certificate:
retrieved_certificate = client.get_certificate(certificateName)
Anda juga dapat memverifikasi bahwa sertifikat telah diatur dengan perintah Azure CLI az keyvault certificate show atau cmdlet Azure PowerShell Get-AzKeyVaultCertificate
Hapus sertifikat
Untuk menghapus sertifikat, gunakan metode begin_delete_certificate:
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
Metode begin_delete_certificate ini asinkron dan mengembalikan objek poller. Memanggil metode result dari poller menunggu hingga selesai.
Anda dapat memverifikasi apakah sertifikat telah dihapus menggunakan perintah Azure CLI az keyvault certificate show atau cmdlet Azure PowerShell Get-AzKeyVaultCertificate.
Setelah dihapus, sertifikat tetap dalam status dihapus, tetapi dapat dipulihkan untuk sementara waktu. Jika Anda menjalankan kode lagi, gunakan nama sertifikat yang berbeda.
Membersihkan sumber daya
Jika Anda ingin bereksperimen dengan rahasia dan kunci, Anda dapat menggunakan kembali Key Vault yang dibuat di artikel ini.
Jika tidak, saat Anda selesai dengan sumber daya yang dibuat di artikel ini, gunakan perintah berikut ini untuk menghapus grup sumber daya dan semua sumber daya yang terkandung:
az group delete --resource-group myResourceGroup