Azure Key Vault Secrets ügyfélkódtár Pythonhoz – 4.7.0-s verzió

Az Azure Key Vault a következő problémák megoldásában segít:

  • Titkos kódok kezelése (ez a kódtár) – biztonságosan tárolhatja és szabályozhatja a jogkivonatokhoz, jelszavakhoz, tanúsítványokhoz, API-kulcsokhoz és egyéb titkos kódokhoz való hozzáférést
  • Titkosítási kulcsok kezelése (azure-keyvault-keys) – az adatok titkosításához használt kulcsokhoz való hozzáférés létrehozása, tárolása és szabályozása
  • Tanúsítványkezelés (azure-keyvault-certificates) – nyilvános és privát SSL/TLS-tanúsítványok létrehozása, kezelése és üzembe helyezése
  • Tárolófelügyelet (azure-keyvault-administration) – szerepköralapú hozzáférés-vezérlés (RBAC), valamint tárolószintű biztonsági mentési és visszaállítási lehetőségek

Forráskód | Csomag (PyPI) | Csomag (Conda) | API-referenciadokumentáció | Termékdokumentáció | Minták

Felelősséget kizáró nyilatkozat

Az Azure SDK Python-csomagok támogatása a Python 2.7-hez 2022. január 01-én véget ért. További információkért és kérdésekért tekintse meg a következőt https://github.com/Azure/azure-sdk-for-python/issues/20691: . A csomag használatához Python 3.7 vagy újabb verzió szükséges. További részletekért tekintse meg az Azure SDK for Python verziótámogatási szabályzatát.

Első lépések

Csomagok telepítése

Telepítse az azure-keyvault-secrets és az azure-identitykódot a pip használatával:

pip install azure-keyvault-secrets azure-identity

Az azure-identity az Azure Active Directory-hitelesítéshez használatos az alábbiak szerint.

Előfeltételek

Az ügyfél hitelesítése

Az Azure Key Vault szolgáltatás használatához szüksége lesz egy SecretClient-példányra, valamint egy tároló URL-címére és egy hitelesítőadat-objektumra. Ez a dokumentum bemutatja a defaultAzureCredential használatát, amely megfelel a legtöbb forgatókönyvnek, beleértve a helyi fejlesztési és éles környezeteket is. Azt javasoljuk, hogy felügyelt identitást használjon az éles környezetekben történő hitelesítéshez.

További információt az azure-identity dokumentációjában talál a hitelesítési módszerekről és azok megfelelő hitelesítő adatairól.

Ügyfél létrehozása

Miután konfigurálta a környezetet a DefaultAzureCredential számára a megfelelő hitelesítési módszer használatára, az alábbiakat elvégezve létrehozhat egy titkos ügyfelet (az érték VAULT_URL helyett a tároló URL-címét):

VAULT_URL = os.environ["VAULT_URL"]
credential = DefaultAzureCredential()
client = SecretClient(vault_url=VAULT_URL, credential=credential)

MEGJEGYZÉS: Aszinkron ügyfél esetén importálja azure.keyvault.secrets.aiohelyette az 's-t SecretClient .

Fő fogalmak

Titkos

A titkos kód egy titkos értékből, valamint annak metaadataiból és felügyeleti adataiból áll. Ez a kódtár sztringként kezeli a titkos értékeket, de az Azure Key Vault nem tárolja őket. A titkos kódokról és azok Key Vault tárolásáról és kezeléséről a Key Vault dokumentációjában talál további információt.

A SecretClient titkos értékeket állíthat be a tárolóban, frissítheti a titkos metaadatokat és törölheti a titkos kulcsokat az alábbi példákban látható módon .

Példák

Ez a szakasz a gyakori feladatokat lefedő kódrészleteket tartalmazza:

Titkos kód beállítása

set_secret új titkos kulcsokat hoz létre, és módosítja a meglévő titkos kulcsok értékeit. Ha a megadott névvel nem rendelkezik titkos kód, set_secret hozzon létre egy új titkos kulcsot ezzel a névvel és a megadott értékkel. Ha a megadott név használatban van, set_secret létrehozza a titkos kód új verzióját a megadott értékkel.

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)

Titkos kód lekérése

get_secret lekéri a Key Vault korábban tárolt titkos kódot.

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)

Titkos kód metaadatainak frissítése

update_secret_properties frissíti egy titkos kód metaadatait. Nem módosíthatja a titkos kód értékét; a titkos kód értékének beállításához használja a set_secret.

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)

Titkos kulcs törlése

begin_delete_secret kéri, Key Vault törölje a titkos kódot, és visszaad egy lekérdezést, amely lehetővé teszi, hogy megvárja a törlés befejezését. A várakozás akkor hasznos, ha a tárolóban engedélyezve van a helyreállítható törlés , és a titkos kulcsot a lehető leghamarabb törölni szeretné (véglegesen törölni). Ha a helyreállítható törlés le van tiltva, begin_delete_secret maga is állandó.

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)

Titkos kulcsok listázása

list_properties_of_secrets felsorolja az ügyfél tárolójában lévő összes titkos kód tulajdonságait. Ez a lista nem tartalmazza a titkos kód értékeit.

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)

Async API

Ez a kódtár az aszinkron API-k teljes készletét tartalmazza. A használatukhoz először telepítenie kell egy aszinkron átvitelt, például az aiohttp-t. További információért tekintse meg az Azure Core dokumentációját .

Az aszinkron ügyfeleket és a hitelesítő adatokat akkor kell bezárni, ha már nincs rájuk szükség. Ezek az objektumok aszinkron környezetkezelők, és aszinkron close metódusokat definiálnak. Például:

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:
    ...

Titkos kód aszinkron létrehozása

set_secret létrehoz egy titkos kulcsot a Key Vault a megadott választható argumentumokkal.

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)

Titkos kódok aszinkron listázása

list_properties_of_secrets felsorolja az ügyfél tárolójában lévő összes titkos kód tulajdonságait.

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)

Hibaelhárítás

azure-keyvault-secrets A különböző hibaforgatókönyvek diagnosztizálásának részleteiért tekintse meg a hibaelhárítási útmutatót.

Általános kérdések

Key Vault ügyfelek kivételeket emelnek ki az Azure-Core-ban. Ha például olyan kulcsot próbál lekérni, amely nem létezik a tárolóban, a SecretClient a ResourceNotFoundError erőforrást emeli ki:

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)

Naplózás

Ez a kódtár a szabványos naplózási kódtárat használja a naplózáshoz. A HTTP-munkamenetekkel (URL-címekkel, fejlécekkel stb.) kapcsolatos alapvető információk az INFO szintjén naplózva lesznek.

Részletes HIBAKERESÉSi szintű naplózás, beleértve a kérelem-/választörzseket és a nem felügyelt fejléceket, engedélyezhető egy ügyfélen az logging_enable argumentummal:

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
)

Hasonlóképpen logging_enable , engedélyezheti a részletes naplózást egyetlen művelethez, még akkor is, ha nincs engedélyezve az ügyfél számára:

secret_client.get_secret("my-secret", logging_enable=True)

Következő lépések

Az Azure SDK for Python GitHub-adattárban számos minta érhető el. Ezek példakódot biztosítanak további Key Vault forgatókönyvekhez: | Fájl | Leírás | |-------------|-------------| | hello_world.py (aszinkron verzió) | titkos kódok létrehozása/lekérése/frissítése/törlése | | list_operations.py (aszinkron verzió) | titkos kódok alapszintű listaműveleteinek | | backup_restore_operations.py (aszinkron verzió) | titkos kódok biztonsági mentése és visszaállítása | | recover_purge_operations.py (aszinkron verzió) | titkos kódok helyreállítása és végleges törlése |

További dokumentáció

Az Azure Key Vault részletesebb dokumentációját az API referenciadokumentációjában találja.

Közreműködés

A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. További részletekért lásd: https://cla.microsoft.com.

A lekéréses kérelmek elküldésekor egy CLA-robot automatikusan meghatározza, hogy kell-e biztosítania CLA-t, és megfelelően kitölti a lekéréses kérelmet (például címke, megjegyzés). Egyszerűen csak kövesse a robot által megadott utasításokat. Ezt csak egyszer kell elvégeznie az összes olyan tárházban, amely a CLA-t használja.

A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért keresse fel a Viselkedési szabályzattal kapcsolatos gyakori kérdések oldalát, illetve küldje el kérdéseit vagy észrevételeit a következő címre: opencode@microsoft.com.

Megjelenések