Quickstart: Pustaka client kunci Azure Key Vault untuk Python

Mulai menggunakan pustaka klien Azure Key Vault untuk Python. Ikuti langkah-langkah berikut untuk menginstal paket dan mencoba contoh kode untuk tugas dasar. Dengan menggunakan Key Vault untuk kunci kriptografi, Anda menghindari penyimpanan kunci dalam kode yang meningkatkan keamanan aplikasi Anda.

Dokumentasi referensi API | Kode sumber pustaka | Paket (Indeks Paket Python)

Prasyarat

Panduan cepat ini mengasumsikan bahwa Anda menjalankan Azure CLI atau Azure PowerShell di terminal Linux.

Siapkan lingkungan lokal Anda

Memulai cepat ini menggunakan pustaka Azure Identity dengan Azure CLI atau dengan Azure PowerShell untuk mengautentikasi pengguna untuk layanan Azure. Pengembang juga dapat menggunakan Visual Studio atau Visual Studio Code untuk mengautentikasi panggilan. Untuk informasi selengkapnya, lihat Mengautentikasi klien dengan pustaka klien Azure Identity.

Masuk ke Azure

  • Azure CLI
  • Azure PowerShell
  1. Jalankan perintah login.

    az login
    

    Jika CLI dapat membuka browser default Anda, CLI akan melakukannya dan memuat halaman masuk Azure.

    Jika tidak, buka halaman peramban di https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda.

  2. Masuk menggunakan kredensial akun Anda di browser.

Menginstal paket

  1. Di terminal atau command prompt, buat folder proyek yang sesuai, lalu buat dan aktifkan lingkungan virtual Python seperti yang dijelaskan pada Use Python virtual environments.

  2. Instal pustaka identitas Microsoft Entra:

    pip install azure-identity
    
  3. Instal pustaka klien kunci Key Vault:

    pip install azure-keyvault-keys
    

Buat grup sumber daya dan Key Vault

  • Azure CLI
  • Azure PowerShell
  1. Gunakan perintah az group create untuk membuat grup sumber daya.

    az group create --name "myResourceGroup" --location "EastUS"
    

    Anda dapat mengubah "EastUS" ke lokasi yang lebih dekat dengan Anda, jika Anda mau.

  2. Gunakan az keyvault create untuk membuat brankas kunci:

    az keyvault create --name "<vault-name>" --resource-group "myResourceGroup" --enable-rbac-authorization true --enable-purge-protection true
    

    Ganti <vault-name> dengan nama yang unik di seluruh platform 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 variabel lingkungan KEY_VAULT_NAME sebagai nama key vault. Oleh karena itu Anda harus mengatur nilai ini menggunakan perintah berikut:

export KEY_VAULT_NAME=<vault-name>

Memberikan akses ke key vault Anda

Untuk mendapatkan izin ke brankas kunci Anda melalui Kontrol Akses Berbasis Peran (RBAC), tetapkan peran ke "Nama Prinsipal Pengguna" (UPN) Anda menggunakan perintah Azure CLI az role assignment create.

az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Ganti <upn>, <subscription-id>, dan <vault-name> dengan nilai aktual Anda. Jika Anda menggunakan nama grup sumber daya yang berbeda, ganti "myResourceGroup" juga. UPN Anda biasanya akan dalam format alamat email (misalnya, username@domain.com).

Membuat kode sampel

Pustaka klien kunci Azure Key Vault untuk Python memungkinkan Anda mengelola kunci kriptografi. Sampel kode di bawah ini menunjukkan cara membuat klien, mengatur, mengambil, dan menghapus kunci.

Buat file bernama kv_keys.py yang berisi kode ini.

import os
from azure.keyvault.keys import KeyClient
from azure.identity import DefaultAzureCredential

keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"

credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)

keyName = input("Input a name for your key > ")

print(f"Creating a key in {keyVaultName} called '{keyName}' ...")

rsa_key = client.create_rsa_key(keyName, size=2048)

print(" done.")

print(f"Retrieving your key from {keyVaultName}.")

retrieved_key = client.get_key(keyName)

print(f"Key with name '{retrieved_key.name}' was found.")
print(f"Deleting your key from {keyVaultName} ...")

poller = client.begin_delete_key(keyName)
deleted_key = poller.result()

print(" done.")

Menjalankan kode

Pastikan kode di bagian sebelumnya ada dalam file dengan nama kv_keys.py. Kemudian jalankan kode dengan perintah berikut:

python kv_keys.py

Menjalankan ulang kode dengan nama kunci yang sama dapat menghasilkan kesalahan, "(Konflik) Kunci <name> 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 perpustakaan klien Azure Identity adalah pendekatan yang direkomendasikan untuk menerapkan koneksi ke layanan Azure tanpa kata sandi dalam kode Anda. DefaultAzureCredential mendukung beberapa metode autentikasi dan menentukan metode mana yang harus digunakan pada saat runtime. 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 mengautentikasi ke brankas kunci menggunakan kredensial dari 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 tersebut diperluas dengan menggunakan nilai variabel KVUri, dalam format: https://<vault-name>.vault.azure.net.

credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)

Menyimpan kunci

Setelah Anda mendapatkan objek klien untuk brankas kunci, Anda dapat menyimpan kunci menggunakan metode create_rsa_key.

rsa_key = client.create_rsa_key(keyName, size=2048)

Anda juga dapat menggunakan `create_key` atau `create_ec_key`.

Memanggil metode create akan menghasilkan panggilan ke REST API Azure untuk brankas kunci.

Saat Azure menangani permintaan, Azure akan mengautentikasi identitas pemanggil (perwakilan layanan) menggunakan objek kredensial yang Anda berikan kepada klien.

Mengambil kunci

Untuk membaca kunci dari Key Vault, gunakan metode get_key:

retrieved_key = client.get_key(keyName)

Anda juga dapat memverifikasi bahwa kunci telah diatur dengan perintah Azure CLI az keyvault key show atau cmdlet Azure PowerShell Get-AzKeyVaultKey.

Menghapus kunci

Untuk menghapus kunci, gunakan metode begin_delete_key:

poller = client.begin_delete_key(keyName)
deleted_key = poller.result()

Metode begin_delete_key ini asinkron dan mengembalikan objek poller. Memanggil metode result poller menunggu penyelesaiannya.

Anda dapat memverifikasi bahwa kunci dihapus dengan perintah Azure CLI az keyvault key show atau cmdlet Azure PowerShell Get-AzKeyVaultKey.

Setelah dihapus, kunci tetap dalam status terhapus namun dapat dipulihkan untuk sementara waktu. Jika Anda menjalankan kode lagi, gunakan nama kunci lain.

Membersihkan sumber daya

Jika Anda juga ingin bereksperimen dengan sertifikat dan rahasia, 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:

  • Azure CLI
  • Azure PowerShell
az group delete --resource-group "myResourceGroup"

Langkah berikutnya