Bagikan melalui


Mulai cepat: Pustaka klien rahasia Azure Key Vault untuk Python

Mulai menggunakan pustaka klien rahasia 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 rahasia, Anda menghindari penyimpanan rahasia dalam kode Anda, yang meningkatkan keamanan aplikasi Anda.

Dokumentasi | referensi APIKode | sumber pustakaPaket (Indeks Paket Python)

Prerequisites

Panduan mulai cepat ini diasumsikan Anda menjalankan Azure CLI atau Azure PowerShell di jendela terminal Linux.

Siapkan lingkungan lokal Anda

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

Masuk ke Azure

  1. Jalankan perintah az login.

    az login
    

    Jika 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.

  2. Masuk menggunakan kredensial akun Anda di browser.

Instal paket-paket tersebut

  1. Di terminal atau prompt perintah, buat folder proyek yang sesuai, lalu buat dan aktifkan lingkungan virtual Python seperti yang dijelaskan di Menggunakan lingkungan virtual Python.

  2. Instal pustaka identitas Microsoft Entra:

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

    pip install azure-keyvault-secrets
    

Buat grup sumber daya dan Key Vault.

  1. az group create Gunakan perintah 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 <your-unique-keyvault-name> --resource-group myResourceGroup
    

    Ganti <your-unique-keyvault-name> dengan nama yang unik di seluruh Azure. Anda biasanya menggunakan nama pribadi atau perusahaan Anda bersama dengan nomor dan pengidentifikasi lainnya.

Mengatur variabel lingkungan KEY_VAULT_NAME

Skrip kami akan menggunakan nilai yang ditetapkan ke KEY_VAULT_NAME variabel lingkungan sebagai nama penyimpanan 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 Azure CLI az role assignment create.

az role assignment create --role "Key Vault Secrets 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 rahasia Azure Key Vault untuk Python memungkinkan Anda mengelola rahasia. Sampel kode berikut menunjukkan cara membuat klien, mengatur rahasia, mengambil rahasia, dan menghapus rahasia.

Buat file bernama kv_secrets.py yang berisi kode ini.

import os
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

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

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

secretName = input("Input a name for your secret > ")
secretValue = input("Input a value for your secret > ")

print(f"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ...")

client.set_secret(secretName, secretValue)

print(" done.")

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

retrieved_secret = client.get_secret(secretName)

print(f"Your secret is '{retrieved_secret.value}'.")
print(f"Deleting your secret from {keyVaultName} ...")

poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()

print(" done.")

Menjalankan kode

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

python kv_secrets.py
  • Jika Anda mengalami kesalahan izin, pastikan Anda menjalankan az keyvault set-policy perintah atau Set-AzKeyVaultAccessPolicy.
  • Menjalankan ulang kode dengan nama rahasia yang sama dapat menghasilkan kesalahan, "(Konflik) Nama< rahasia >saat ini dalam status dihapus tetapi dapat dipulihkan." Gunakan nama rahasia 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 mana yang harus digunakan selama 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 pengguna pengembangan lokal yang sudah 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, Komputer Virtual, atau layanan lainnya. Untuk informasi selengkapnya, lihat Gambaran Umum Identitas Terkelola.

Dalam contoh kode, nama brankas kunci Anda diperluas menggunakan nilai variabel KVUri, dalam format: "https://<your-key-vault-name>.vault.azure.net".

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

Menyimpan rahasia

Setelah mendapatkan objek klien untuk brankas kunci, Anda dapat menyimpan rahasia menggunakan metode set_secret :

client.set_secret(secretName, secretValue)

Panggilan set_secret menghasilkan pemanggilan ke Azure REST API untuk brankas kunci.

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

Mengambil kunci rahasia

Untuk membaca rahasia dari Key Vault, gunakan metode get_secret :

retrieved_secret = client.get_secret(secretName)

Nilai rahasia terkandung dalam retrieved_secret.value.

Anda juga dapat mengambil rahasia dengan perintah Azure CLI az keyvault secret show atau cmdlet Azure PowerShell Get-AzKeyVaultSecret.

Menghapus rahasia

Untuk menghapus rahasia, gunakan metode begin_delete_secret :

poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()

Metode begin_delete_secret ini asinkron dan mengembalikan objek poller. Memanggil metode pada result poller akan menunggu hingga proses selesai.

Anda dapat memverifikasi bahwa rahasia telah dihapus dengan perintah Azure CLI az keyvault secret show atau cmdlet Azure PowerShell Get-AzKeyVaultSecret.

Setelah dihapus, rahasia tetap dalam status dihapus tetapi dapat dipulihkan untuk satu waktu. Jika Anda menjalankan kode lagi, gunakan nama rahasia yang berbeda.

Membersihkan sumber daya

Jika Anda ingin juga bereksperimen dengan sertifikat dan kunci, Anda dapat menggunakan kembali Key Vault yang dibuat dalam artikel ini.

Jika tidak, setelah Anda selesai dengan sumber daya yang dibuat dalam artikel ini, gunakan perintah berikut untuk menghapus grup sumber daya dan semua sumber daya yang terkandung:

az group delete --resource-group myResourceGroup

Langkah selanjutnya