Hızlı Başlangıç: Python için Azure Key Vault anahtarları istemci kitaplığı

Python için Azure Key Vault 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. Şifreleme anahtarlarını depolamak için Key Vault kullanarak bu tür anahtarları kodunuzda depolamaktan kaçınarak 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

  • Azure aboneliği - ücretsiz bir şekilde abonelik oluşturun.
  • Python 3.7+
  • Azure CLI

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

Yerel ortamınızı ayarlama

Bu hızlı başlangıç, azure hizmetlerinde kullanıcının kimliğini doğrulamak için Azure CLI veya Azure PowerShell ile Azure Kimlik kitaplığını kullanmaktır. Geliştiriciler, aramalarının kimliğini doğrulamak için Visual Studio veya Visual Studio Code da kullanabilir. Daha fazla bilgi için Azure Identity istemci kitaplığıyla istemcinin kimliğini doğrulama başlığına bakın.

Azure'da oturum açma

  • Azure CLI
  • Azure PowerShell
  1. 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 halde https://aka.ms/devicelogin adresinde bir tarayıcı sayfası açın ve terminalinizde görüntülenen kimlik doğrulama kodunu girin.

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

Paketleri yükleme

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

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

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

    pip install azure-keyvault-keys
    

Kaynak grubu ve Key Vault oluşturma

  • Azure CLI
  • Azure PowerShell
  1. az group create komutunu kullanarak bir kaynak grubu oluşturun:

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

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

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

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

    Azure genelinde benzersiz bir adla <vault-name> 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, 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=<vault-name>

Anahtar kasanıza erişim izni verin

Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla anahtar kasanıza izinler almak için Azure CLI komutunu kullanarak "Kullanıcı İlke Adı" (UPN) için az role assignment create komutuyla bir rol atayın.

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

, <upn>ve <subscription-id> değerlerini gerçek değerlerinizle değiştirin<vault-name>. Eğer farklı bir kaynak grubu adı kullandıysanız, "myResourceGroup" yerine bunu koyun. UPN'niz genellikle bir e-posta adresi biçiminde olur (ör. username@domain.com).

Örnek kodu oluşturma

Python için Azure Key Vault anahtar istemci kitaplığı, şifreleme anahtarlarını yönetmenize olanak tanır. Aşağıdaki kod örneğinde istemci oluşturma, anahtar ayarlama, anahtar alma ve anahtarı silme işlemleri gösterilmektedir.

Bu kodu içeren kv_keys.py adlı bir dosya oluşturun.

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.")

Kodu çalıştırma

Önceki bölümdeki kodun kv_keys.py adlı bir dosyada olduğundan emin olun. Ardından aşağıdaki komutla kodu çalıştırın:

python kv_keys.py

Kodun aynı anahtar adıyla yeniden çalıştırılması "(Çakışma) Anahtarı <name> şu anda silinmiş ancak kurtarılabilir durumda" hatasını verebilir. Farklı bir anahtar 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ı kullanmak, kodunuzda Azure hizmetlerine parolasız bağlantılar kurmak için önerilen yaklaşımdır. DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma anı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 yerel geliştirme kullanıcısının Azure CLI'ya giriş yaparken kullandığı kimlik bilgileriyle anahtar kasasına 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 keşfederek kullanabilir. Daha fazla bilgi için Yönetilen Kimliğe Genel Bakış bölümüne bakın.

Örnek kodda, KVUri değişkeninin değeri kullanılarak anahtar kasanızın adı şu formatta genişletilir: https://<vault-name>.vault.azure.net.

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

Anahtarı kaydetme

Anahtar kasası için istemci nesnesini aldıktan sonra, `create_rsa_key` yöntemini kullanarak bir anahtar depolayabilirsiniz.

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

create_key veya create_ec_key da kullanabilirsiniz.

Bir create yöntemi çağırmak, anahtar kasası için Azure REST API'ye 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.

Anahtar elde etme

Key Vault'tan bir anahtar okumak için get_key yöntemini kullanın:

retrieved_key = client.get_key(keyName)

Anahtarın ayarlandığını da Azure CLI komutu az keyvault key show ile veya Azure PowerShell cmdlet'i Get-AzKeyVaultKey ile doğrulayabilirsiniz.

Anahtarı sil

Anahtarı silmek için begin_delete_key yöntemini kullanın:

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

begin_delete_key yöntemi zaman uyumsuzdur ve bir poller nesnesi döndürür. Poller'ın result yöntemini çağırmak, tamamlanmasını bekler.

Anahtarın silindiğini, Azure CLI komutu az keyvault key show veya Azure PowerShell cmdlet'i Get-AzKeyVaultKey ile doğrulayabilirsiniz.

Bir anahtar silindikten sonra bir süre için silinmiş ancak kurtarılabilir durumda kalır. Kodu yeniden çalıştırırsanız farklı bir anahtar adı kullanın.

Kaynakları temizleme

Eğer sertifikalar ve sırlarla da denemeler yapmak istiyorsanız, bu makalede oluşturulan Key Vault'u 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:

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

Sonraki adımlar