Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Python için Azure Key Vault sertifika 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. Sertifikaları depolamak için Key Vault'ı kullanarak, kodunuzun içinde sertifika 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)
Prerequisites
- Azure aboneliği - ücretsiz bir abonelik oluşturun.
- Python 3.7+
- Azure CLI
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ıçta azure hizmetlerinde kullanıcının kimliğini doğrulamak için Azure CLI veya Azure PowerShell ile Azure Kimlik kitaplığı kullanılmaktadı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 bölümüne bakın.
Azure'a Giriş Yap
loginkomutunu çalıştırın.az loginCLI varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.
Aksi takdirde https://aka.ms/devicelogin adresinde bir tarayıcı sayfası 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 bölümünde açıklandığı gibi bir Python sanal ortamı oluşturup etkinleştirin
Microsoft Entra kimlik kitaplığını yükleyin:
pip install azure.identityKey Vault sertifika istemci kitaplığını yükleyin:
pip install azure-keyvault-certificates
Bir kaynak grubu ve anahtar kasası oluşturun
az group createKaynak 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
az keyvault createkullanın.az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroupAzure genelinde benzersiz olan bir adla
<your-unique-keyvault-name>'i 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=<your-unique-keyvault-name>
Anahtar kasanıza erişim izni verme
Anahtar kasanıza Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla izin almak için, Azure CLI komutu az role assignment create kullanarak "Kullanıcı Principal Adı (UPN)" için bir rol atayın.
az role assignment create --role "Key Vault Certificates 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 sertifika istemci kitaplığı sertifikaları yönetmenize olanak tanır. Aşağıdaki kod örneğinde istemci oluşturma, sertifika ayarlama, sertifika alma ve sertifika silme işlemleri gösterilmektedir.
Bu kodu içeren kv_certificates.py adlı bir dosya oluşturun.
import os
from azure.keyvault.certificates import CertificateClient, CertificatePolicy
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
certificateName = input("Input a name for your certificate > ")
print(f"Creating a certificate in {keyVaultName} called '{certificateName}' ...")
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
print(" done.")
print(f"Retrieving your certificate from {keyVaultName}.")
retrieved_certificate = client.get_certificate(certificateName)
print(f"Certificate with name '{retrieved_certificate.name}' was found'.")
print(f"Deleting your certificate from {keyVaultName} ...")
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
print(" done.")
Kodu çalıştır
Önceki bölümdeki kodun kv_certificates.py adlı bir dosyada olduğundan emin olun. Ardından aşağıdaki komutla kodu çalıştırın:
python kv_certificates.py
- İzin hatalarıyla karşılaşırsanız veya
az keyvault set-policykomutunu çalıştırdığınızdanSet-AzKeyVaultAccessPolicyemin olun. - Kodun aynı anahtar adıyla yeniden çalıştırılması "(Çakışma) Sertifika <adı> ş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ı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ı, https://\<your-key-vault-name>.vault.azure.net biçiminde bir anahtar kasası URI'sine dönüştürülür.
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
Sertifika kaydetme
Anahtar kasası için istemci nesnesini aldıktan sonra begin_create_certificate yöntemini kullanarak bir sertifika oluşturabilirsiniz:
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
Burada sertifika, CertificatePolicy.get_default yöntemiyle alınan bir ilke gerektirir.
begin_create_certificate yöntemini çağırmak, key vault için Azure REST API'sine asenkron çağrı oluşturur. Asenkron çağrı bir poller nesnesi döndürür. İşlemin sonucunu beklemek için result yöntemini poller'ı çağırarak kullanın.
Azure isteği işlediğinde, istemciye sağladığınız kimlik bilgisi nesnesini kullanarak çağıranın kimliğini (hizmet sorumlusu) doğrular.
Sertifika alma
Key Vault'tan sertifika okumak için get_certificate yöntemini kullanın:
retrieved_certificate = client.get_certificate(certificateName)
Sertifikanın az keyvault certificate show Azure CLI komutu veya Get-AzKeyVaultCertificate Azure PowerShell cmdlet'i ile ayarlandığını da doğrulayabilirsiniz
Sertifika silme
Sertifikayı silmek için begin_delete_certificate yöntemini kullanın:
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
begin_delete_certificate yöntemi zaman uyumsuzdur ve bir poller nesnesi döndürür. Poller'ın result yöntemini çağırmak, onun tamamlanmasını beklemek demektir.
Az keyvault certificate show Azure CLI komutu veya Get-AzKeyVaultCertificate Azure PowerShell cmdlet'i ile sertifikanın silindiğini doğrulayabilirsiniz.
Sertifika silindikten sonra bir süre için silinmiş ancak kurtarılabilir durumda kalır. Kodu yeniden çalıştırırsanız farklı bir sertifika adı kullanın.
Kaynakları temizle
Gizli diziler ve anahtarlarla da denemeler 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