Aracılığıyla paylaş


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

İ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

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.

İzlenimler