Aracılığıyla paylaş


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 bilgileri depolamak için Key Vault kullanarak bu bilgileri kodunuzda saklamaktan kaçınır ve böylece uygulamanızın güvenliğini artırırsınız.

API başvuru belgeleri | Kitaplık kaynak kodu | Paket (Python Paket Dizini)

Önkoşullar

Bu hızlı başlangıç, Linux terminal penceresinde Azure CLI veya Azure PowerShell çalıştırdığınızı varsayar.

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'u da kullanabilirler, daha fazla bilgi için bkz Azure Identity istemci kitaplığı ile istemci kimliğini doğrulama.

Azure'da oturum açma

  1. 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 bir tarayıcı sayfası açın ve https://aka.ms/devicelogin adresine gidin, ardından terminalinizde görüntülenen yetkilendirme kodunu girin.

  2. Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.

Paketleri yükleme

  1. Terminalde veya komut isteminde uygun bir proje klasörü oluşturun ve ardından Python sanal ortamlarını kullanma konusunda açıklandığı şekilde bir Python sanal ortamı oluşturup etkinleştirin.

  2. Microsoft Entra kimlik kitaplığını yükleyin:

    pip install azure-identity
    
  3. Key Vault sırlar kitaplığını yükleyin:

    pip install azure-keyvault-secrets
    

Kaynak grubu ve anahtar kasası oluşturma

  1. Kaynak grubu oluşturmak için "az group create" komutunu kullanın.

    az group create --name myResourceGroup --location eastus
    

    İsterseniz "eastus" değerini size daha yakın bir konuma değiştirebilirsiniz.

  2. Anahtar kasasını oluşturmak için az keyvault create kullanın:

    az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
    

    <your-unique-keyvault-name> yerini, tüm Azure'da benzersiz olan bir adla değiştirin. 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, KEY_VAULT_NAME ortam değişkenine atanan değeri anahtar kasasının adı olarak kullanacaktı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) kullanarak anahtar kasanız için izinler elde etmek amacıyla Azure CLI komutunu az role assignment create 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>"

Replace 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 bilgiler istemci kitaplığı, gizli bilgileri yönetmenize olanak tanır. Aşağıdaki kod örneği, bir istemci oluşturma, bir gizli bilgi ayarlama, bir gizli bilgi alma ve bir gizli bilgiyi silme işlemlerini göstermektedir.

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, az keyvault set-policy veya Set-AzKeyVaultAccessPolicy komutunu çalıştırdığınızdan 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 Kimlik 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ına kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldığında, aynı DefaultAzureCredential kodu, bir Uygulama Hizmeti, 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ı KVUri değişkeninin 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)

Bir sırrı kaydet

Anahtar kasası için istemci nesnesini aldıktan sonra, set_secret yöntemini kullanarak bir gizli bilgi depolayabilirsiniz.

client.set_secret(secretName, secretValue)

set_secret çağırmak, 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.

Bir sırrı geri almak

Key Vault'tan bir gizli bilgi okumak için get_secret yöntemini kullanın:

retrieved_secret = client.get_secret(secretName)

Gizli değer retrieved_secret.value içinde yer alır.

Azure CLI komutu az keyvault secret show veya Azure PowerShell cmdlet'i Get-AzKeyVaultSecret ile de gizli veriyi alabilirsiniz.

Gizli bir sırrı silme

Bir sırrı 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 eş zamanlı olmayan 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 ad kullanın.

Kaynakları temizleme

Aynı zamanda 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

Sonraki adımlar