Hızlı Başlangıç: Python için Azure Key Vault gizli istemci kitaplığı
Python için Azure Key Vault gizli istemci kitaplığını kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin. Gizli dizileri depolamak için Key Vault kullanarak gizli dizileri kodunuzda depolamaktan kaçınarak uygulamanızın güvenliğini artırırsınız.
API başvuru belgeleri | Kitaplık kaynak kodu | Paketi (Python Paket Dizini)
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun.
- Python 3.7+.
- Azure CLI veya Azure PowerShell.
Bu hızlı başlangıçta, Linux terminal penceresinde Azure CLI veya Azure PowerShell çalıştırdığınız varsayılır.
Yerel ortamınızı ayarlama
Bu hızlı başlangıç, Azure Hizmetleri'nde kullanıcının kimliğini doğrulamak için Azure CLI veya Azure PowerShell ile Azure Kimlik kitaplığını kullanmaktır. Geliştiriciler, çağrılarının kimliğini doğrulamak için Visual Studio veya Visual Studio Code da kullanabilir. Daha fazla bilgi için bkz . Azure Identity istemci kitaplığıyla istemcinin kimliğini doğrulama.
Azure'da oturum açma
az login
komutunu çalıştırın.az login
CLI varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.
Aksi takdirde adresinde bir tarayıcı sayfası https://aka.ms/devicelogin açın ve terminalinizde görüntülenen yetkilendirme kodunu girin.
Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.
Paketleri yükleme
Terminalde veya komut isteminde uygun bir proje klasörü oluşturun ve python sanal ortamlarını kullanma konusunda açıklandığı gibi bir Python sanal ortamı oluşturup etkinleştirin.
Microsoft Entra kimlik kitaplığını yükleyin:
pip install azure-identity
Key Vault gizli dizi kitaplığını yükleyin:
pip install azure-keyvault-secrets
Kaynak grubu ve anahtar kasası oluşturma
az group create
Kaynak grubu oluşturmak için komutunu kullanın:az group create --name myResourceGroup --location eastus
İsterseniz "eastus" değerini size daha yakın bir konuma değiştirebilirsiniz.
Anahtar kasasını oluşturmak için kullanın
az keyvault create
:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
değerini tüm Azure'da benzersiz bir adla değiştirin
<your-unique-keyvault-name>
. Genellikle kişisel veya şirket adınızı diğer numaralar ve tanımlayıcılarla birlikte kullanırsınız.
KEY_VAULT_NAME ortam değişkenini ayarlama
Betiğimiz, anahtar kasasının KEY_VAULT_NAME
adı olarak ortam değişkenine atanan değeri kullanır. Bu nedenle aşağıdaki komutu kullanarak bu değeri ayarlamanız gerekir:
export KEY_VAULT_NAME=<your-unique-keyvault-name>
Anahtar kasanıza erişim izni verme
Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla anahtar kasanıza izinler almak için az role assignment create Azure CLI komutunu kullanarak "Kullanıcı Asıl Adı" (UPN) öğesine bir rol atayın.
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>"
upn>, subscription-id>, <resource-group-name> ve <your-unique-keyvault-name> değerlerini gerçek değerlerinizle değiştirin<<. UPN'niz genellikle bir e-posta adresi biçiminde olur (ör. username@domain.com).
Örnek kodu oluşturma
Python için Azure Key Vault gizli istemci kitaplığı gizli dizileri yönetmenize olanak tanır. Aşağıdaki kod örneğinde istemci oluşturma, gizli dizi ayarlama, gizli dizi alma ve gizli dizi silme işlemleri gösterilmektedir.
Bu kodu içeren kv_secrets.py adlı bir dosya oluşturun.
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.")
Kodu çalıştırma
Önceki bölümdeki kodun kv_secrets.py adlı bir dosyada olduğundan emin olun. Ardından aşağıdaki komutla kodu çalıştırın:
python kv_secrets.py
- İzin hatalarıyla karşılaşırsanız veya
Set-AzKeyVaultAccessPolicy
komutunu çalıştırdığınızdanaz keyvault set-policy
emin olun. - Kodun aynı gizli dizi adıyla yeniden çalıştırılması "(Çakışma) Gizli dizi <adı> şu anda silinmiş ancak kurtarılabilir durumda" hatasını verebilir. Farklı bir gizli dizi adı kullanın.
Kod ayrıntıları
Kimlik doğrulaması yapma ve istemci oluşturma
Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. Azure Identity istemci kitaplığı tarafından sağlanan DefaultAzureCredential sınıfının kullanılması, kodunuzda Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır. DefaultAzureCredential
birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.
Bu hızlı başlangıçta, DefaultAzureCredential
Azure CLI'da oturum açmış yerel geliştirme kullanıcısının kimlik bilgilerini kullanarak anahtar kasasında kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldığında, aynı DefaultAzureCredential
kod App Service, Sanal Makine veya diğer hizmetlere atanan yönetilen kimliği otomatik olarak bulabilir ve kullanabilir. Daha fazla bilgi için bkz . Yönetilen Kimliğe Genel Bakış.
Örnek kodda anahtar kasanızın adı değişkeninin KVUri
değeri kullanılarak "https://< your-key-vault-name.vault.azure.net>" biçiminde genişletilir.
credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)
Gizli dizi kaydetme
Anahtar kasası için istemci nesnesini aldıktan sonra, set_secret yöntemini kullanarak bir gizli dizi depolayabilirsiniz:
client.set_secret(secretName, secretValue)
Çağırma set_secret
, anahtar kasası için Azure REST API'sine bir çağrı oluşturur.
Azure isteği işlediğinde, istemciye sağladığınız kimlik bilgisi nesnesini kullanarak çağıranın kimliğini (hizmet sorumlusu) doğrular.
Gizli dizi alma
Key Vault'tan gizli dizi okumak için get_secret yöntemini kullanın:
retrieved_secret = client.get_secret(secretName)
Gizli dizi değeri içinde retrieved_secret.value
yer alır.
Azure CLI komutu az keyvault secret show veya Azure PowerShell cmdlet'i Get-AzKeyVaultSecret ile de gizli dizi alabilirsiniz.
Gizli anahtarı silme
Gizli diziyi silmek için begin_delete_secret yöntemini kullanın:
poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()
begin_delete_secret
yöntemi zaman uyumsuzdur ve bir poller nesnesi döndürür. Poller'ın result
yöntemini çağırmak, tamamlanmasını bekler.
Gizli dizinin azure CLI komutu az keyvault secret show veya Azure PowerShell cmdlet'i Get-AzKeyVaultSecret ile kaldırıldığını doğrulayabilirsiniz.
Bir gizli dizi silindikten sonra bir süre için silinmiş ancak kurtarılabilir durumda kalır. Kodu yeniden çalıştırırsanız farklı bir gizli dizi adı kullanın.
Kaynakları temizleme
Sertifikalar ve anahtarlarla da deneme yapmak istiyorsanız, bu makalede oluşturulan Key Vault'ı yeniden kullanabilirsiniz.
Aksi takdirde, bu makalede oluşturulan kaynaklarla işiniz bittiğinde, kaynak grubunu ve içerdiği tüm kaynakları silmek için aşağıdaki komutu kullanın:
az group delete --resource-group myResourceGroup