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
- Azure-előfizetés
- Python 3.7 vagy újabb
- Egy meglévő Azure Key Vault. Ha létre kell hoznia egyet, ezt az Azure CLI használatával teheti meg a jelen dokumentum lépéseinek követésével.
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.aio
helyette az 's-tSecretClient
.
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
- Titkos kód lekérése
- Titkos kód metaadatainak frissítése
- Titkos kulcs törlése
- Titkos kulcsok listázása
- Async API
- Titkos kód aszinkron létrehozása
- Titkos kódok aszinkron listázása
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.
Azure SDK for Python
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: