Python için Azure Key Vault Gizli Dizileri istemci kitaplığı - sürüm 4.7.0
Azure Key Vault aşağıdaki sorunların çözülmesine yardımcı olur:
- Gizli dizi yönetimi (bu kitaplık) - belirteçlere, parolalara, sertifikalara, API anahtarlarına ve diğer gizli dizilere erişimi güvenli bir şekilde depolayın ve denetleyin
- Şifreleme anahtarı yönetimi (azure-keyvault-keys) - verilerinizi şifrelemek için kullanılan anahtarlara erişimi oluşturma, depolama ve denetleme
- Sertifika yönetimi (azure-keyvault-certificates) - genel ve özel SSL/TLS sertifikaları oluşturma, yönetme ve dağıtma
- Kasa yönetimi (azure-keyvault-administration) - rol tabanlı erişim denetimi (RBAC) ve kasa düzeyinde yedekleme ve geri yükleme seçenekleri
Kaynak kodu | Paket (PyPI) | Paket (Conda) | API başvuru belgeleri | Ürün belgeleri | Örnekleri
Bildirim
Python 2.7 için Azure SDK Python paketleri desteği 01 Ocak 2022'de sona erdi. Daha fazla bilgi ve soru için bkz https://github.com/Azure/azure-sdk-for-python/issues/20691. . Bu paketi kullanmak için Python 3.7 veya üzeri gereklidir. Daha fazla ayrıntı için bkz. Python için Azure SDK sürüm desteği ilkesi.
Başlarken
Paketleri yükleme
pip ile azure-keyvault-secrets ve azure-identity yükleyin:
pip install azure-keyvault-secrets azure-identity
azure-identity , aşağıda gösterildiği gibi Azure Active Directory kimlik doğrulaması için kullanılır.
Önkoşullar
- Azure aboneliği
- Python 3.7 veya üzeri
- Mevcut bir Azure Key Vault. Oluşturmanız gerekiyorsa, bu belgedeki adımları izleyerek Azure CLI'yı kullanarak bunu yapabilirsiniz.
İstemcinin kimliğini doğrulama
Azure Key Vault hizmetiyle etkileşim kurmak için bir SecretClient örneğinin yanı sıra kasa URL'si ve kimlik bilgisi nesnesi gerekir. Bu belgede, yerel geliştirme ve üretim ortamları dahil olmak üzere çoğu senaryo için uygun olan DefaultAzureCredential kullanımı gösterilmektedir. Üretim ortamlarında kimlik doğrulaması için yönetilen kimlik kullanmanızı öneririz.
Diğer kimlik doğrulama yöntemleri ve ilgili kimlik bilgileri türleri hakkında daha fazla bilgi için bkz. azure-identity belgeleri.
İstemci oluşturma
Ortamınızı DefaultAzureCredential için uygun bir kimlik doğrulama yöntemi kullanacak şekilde yapılandırdıktan sonra, gizli dizi istemcisi oluşturmak için aşağıdakileri yapabilirsiniz (değerini VAULT_URL
kasanızın URL'si ile değiştirerek):
VAULT_URL = os.environ["VAULT_URL"]
credential = DefaultAzureCredential()
client = SecretClient(vault_url=VAULT_URL, credential=credential)
NOT: Zaman uyumsuz bir istemci için bunun yerine 'leri
SecretClient
içeri aktarabilirsinizazure.keyvault.secrets.aio
.
Önemli kavramlar
Gizli dizi
Gizli dizi, bir gizli dizi değeriyle ilişkili meta veriler ve yönetim bilgilerinden oluşur. Bu kitaplık gizli dizi değerlerini dize olarak işler, ancak Azure Key Vault bunları bu şekilde depolamaz. Gizli diziler ve Key Vault bunları nasıl depolayıp yönettiği hakkında daha fazla bilgi için Key Vault belgelerine bakın.
SecretClient , aşağıdaki örneklerde gösterildiği gibi kasada gizli dizi değerleri ayarlayabilir, gizli meta verileri güncelleştirebilir ve gizli dizileri silebilir.
Örnekler
Bu bölüm, ortak görevleri kapsayan kod parçacıkları içerir:
- Gizli dizi ayarlama
- Gizli dizi alma
- Gizli dizi meta verilerini güncelleştirme
- Gizli anahtarı silme
- Gizli dizileri listeleme
- Zaman uyumsuz API
- Zaman uyumsuz olarak gizli dizi oluşturma
- Gizli dizileri zaman uyumsuz olarak listeleme
Gizli dizi ayarlama
set_secret yeni gizli diziler oluşturur ve mevcut gizli dizilerin değerlerini değiştirir. Verilen ada sahip bir gizli dizi yoksa, set_secret
bu ada ve verilen değere sahip yeni bir gizli dizi oluşturur. Verilen ad kullanılıyorsa, set_secret
bu gizli dizinin verilen değerle yeni bir sürümünü oluşturur.
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
secret = secret_client.set_secret("secret-name", "secret-value")
print(secret.name)
print(secret.value)
print(secret.properties.version)
Gizli dizi alma
get_secret daha önce Key Vault depolanan bir gizli diziyi alır.
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
secret = secret_client.get_secret("secret-name")
print(secret.name)
print(secret.value)
Gizli dizi meta verilerini güncelleştirme
update_secret_properties bir gizli dizinin meta verilerini güncelleştirir. Gizli dizinin değerini değiştiremez; gizli dizinin değerini ayarlamak için set_secret kullanın.
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
# Clients may specify the content type of a secret to assist in interpreting the secret data when it's retrieved
content_type = "text/plain"
# We will also disable the secret for further use
updated_secret_properties = secret_client.update_secret_properties("secret-name", content_type=content_type, enabled=False)
print(updated_secret_properties.updated_on)
print(updated_secret_properties.content_type)
print(updated_secret_properties.enabled)
Gizli anahtarı silme
begin_delete_secret istekleri bir gizli diziyi Key Vault silip silme işleminin bitmesini beklemenizi sağlayan bir poller döndürür. Kasada geçici silme etkinleştirildiğinde ve gizli diziyi en kısa sürede temizlemek (kalıcı olarak silmek) istediğinizde beklemek yararlı olur. Geçici silme devre dışı bırakıldığında, begin_delete_secret
kendisi kalıcı olur.
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
deleted_secret = secret_client.begin_delete_secret("secret-name").result()
print(deleted_secret.name)
print(deleted_secret.deleted_date)
Gizli dizileri listeleme
list_properties_of_secrets , istemcinin kasasındaki tüm gizli dizilerin özelliklerini listeler. Bu liste gizli dizinin değerlerini içermez.
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
secret_properties = secret_client.list_properties_of_secrets()
for secret_property in secret_properties:
# the list doesn't include values or versions of the secrets
print(secret_property.name)
Zaman uyumsuz API
Bu kitaplık tam bir zaman uyumsuz API kümesi içerir. Bunları kullanmak için önce aiohttp gibi bir zaman uyumsuz aktarım yüklemeniz gerekir. Daha fazla bilgi için bkz. azure-core belgeleri .
Zaman uyumsuz istemciler ve kimlik bilgileri artık gerekli olmadığında kapatılmalıdır. Bu nesneler zaman uyumsuz bağlam yöneticileridir ve zaman uyumsuz close
yöntemler tanımlar. Örneğin:
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.secrets.aio import SecretClient
credential = DefaultAzureCredential()
# call close when the client and credential are no longer needed
client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
...
await client.close()
await credential.close()
# alternatively, use them as async context managers (contextlib.AsyncExitStack can help)
client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
async with client:
async with credential:
...
Zaman uyumsuz olarak gizli dizi oluşturma
set_secret belirtilen isteğe bağlı bağımsız değişkenlerle Key Vault bir gizli dizi oluşturur.
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.secrets.aio import SecretClient
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
secret = await secret_client.set_secret("secret-name", "secret-value")
print(secret.name)
print(secret.value)
print(secret.properties.version)
Gizli dizileri zaman uyumsuz olarak listeleme
list_properties_of_secrets , istemcinin kasasındaki tüm gizli dizilerin özelliklerini listeler.
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.secrets.aio import SecretClient
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
secret_properties = secret_client.list_properties_of_secrets()
async for secret_property in secret_properties:
# the list doesn't include values or versions of the secrets
print(secret_property.name)
Sorun giderme
azure-keyvault-secrets
Çeşitli hata senaryolarını tanılama hakkında ayrıntılı bilgi için sorun giderme kılavuzuna bakın.
Genel
Key Vault istemcileri azure-core'da tanımlanan özel durumları tetikler. Örneğin, kasada mevcut olmayan bir anahtar almaya çalışırsanız , SecretClientResourceNotFoundError'ı oluşturur:
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
from azure.core.exceptions import ResourceNotFoundError
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
try:
secret_client.get_secret("which-does-not-exist")
except ResourceNotFoundError as e:
print(e.message)
Günlüğe Kaydetme
Bu kitaplık , günlüğe kaydetme için standart günlük kitaplığını kullanır. HTTP oturumları (URL'ler, üst bilgiler vb.) hakkındaki temel bilgiler BİlGİ düzeyinde günlüğe kaydedilir.
İstek/yanıt gövdeleri ve kaydedilmemiş üst bilgiler de dahil olmak üzere ayrıntılı HATA AYıKLAMA düzeyi günlüğe kaydetme, istemcide şu bağımsız değişkenle logging_enable
etkinleştirilebilir:
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
import sys
import logging
# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
credential = DefaultAzureCredential()
# This client will log detailed information about its HTTP sessions, at DEBUG level
secret_client = SecretClient(
vault_url="https://my-key-vault.vault.azure.net/",
credential=credential,
logging_enable=True
)
Benzer şekilde, logging_enable
istemci için etkinleştirilmemiş olsa bile tek bir işlem için ayrıntılı günlüğe kaydetmeyi etkinleştirebilir:
secret_client.get_secret("my-secret", logging_enable=True)
Sonraki adımlar
Python için Azure SDK GitHub deposunda çeşitli örnekler mevcuttur. Bunlar ek Key Vault senaryoları için örnek kod sağlar: | Dosya | Açıklama | |-------------|-------------| | hello_world.py (zaman uyumsuz sürüm) | gizli dizi oluşturma/alma/güncelleştirme/silme | | list_operations.py (zaman uyumsuz sürüm) | gizli diziler için temel liste işlemleri | | backup_restore_operations.py (zaman uyumsuz sürüm) | gizli dizileri yedekleme ve geri yükleme | | recover_purge_operations.py (zaman uyumsuz sürüm) | gizli dizileri kurtarma ve temizleme |
Diğer Belgeler
Azure Key Vault hakkında daha kapsamlı belgeler için BKZ. API başvuru belgeleri.
Katkıda bulunma
Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.
Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.
Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları hakkında SSS bölümüne bakın veya başka soru ya da görüşleriniz olursa opencode@microsoft.com ile iletişime geçin.
Azure SDK for Python