Azure Key Vault Keys ügyfélkódtár Pythonhoz – 4.8.0-s verzió
Az Azure Key Vault a következő problémák megoldásában segít:
- Titkosítási kulcsok kezelése (ez a kódtár) – az adatok titkosításához használt kulcsokhoz való hozzáférés létrehozása, tárolása és vezérlése
- Titkos kódok kezelése (azure-keyvault-secrets) – biztonságosan tárolhatja és szabályozhatja a jogkivonatokhoz, jelszavakhoz, tanúsítványokhoz, API-kulcsokhoz és más titkos kódokhoz való hozzáférést
- 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
A csomag telepítése
Telepítse az azure-keyvault-keys és az azure-identityelemet a pip használatával:
pip install azure-keyvault-keys 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.
- Felügyelt HSM használata esetén egy meglévő Key Vault felügyelt HSM. Ha létre kell hoznia egy felügyelt HSM-et, 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 KeyClient-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ábbi módon hozhat létre egy kulcsügyfélt (az érték VAULT_URL
helyett a tároló URL-címét):
VAULT_URL = os.environ["VAULT_URL"]
credential = DefaultAzureCredential()
client = KeyClient(vault_url=VAULT_URL, credential=credential)
MEGJEGYZÉS: Aszinkron ügyfél esetén importálja
azure.keyvault.keys.aio
helyette az 's-tKeyClient
.
Fő fogalmak
Kulcsok
Az Azure Key Vault RSA- és háromliptikus görbekulcsokat hozhat létre és tárolhat. Mindkettő védhető hardveres biztonsági modulokkal (HSM-ekkel). Az Azure Key Vault velük is végezhet titkosítási műveleteket. A kulcsokkal, a támogatott műveletekkel és algoritmusokkal kapcsolatos további információkért tekintse meg a Key Vault dokumentációját.
A KeyClient az alábbi példákban látható módon kulcsokat hozhat létre a tárolóban, lekérheti a meglévő kulcsokat a tárolóból, frissítheti a kulcs metaadatait és törölheti a kulcsokat.
Példák
Ez a szakasz a gyakori feladatokat lefedő kódrészleteket tartalmazza:
- Kulcs létrehozása
- Kulcs lekérése
- Meglévő kulcs frissítése
- Kulcs törlése
- Automatikus kulcsrotálás konfigurálása
- Listakulcsok
- Titkosítási műveletek végrehajtása
- Async API
- Kulcs aszinkron létrehozása
- Aszinkron listakulcsok
Kulcs létrehozása
create_rsa_key és create_ec_key hozzon létre RSA- és háromliptikus görbekulcsokat a tárolóban. Ha már létezik ugyanazzal a névvel rendelkező kulcs, létrejön a kulcs új verziója.
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
# Create an RSA key
rsa_key = key_client.create_rsa_key("rsa-key-name", size=2048)
print(rsa_key.name)
print(rsa_key.key_type)
# Create an elliptic curve key
ec_key = key_client.create_ec_key("ec-key-name", curve="P-256")
print(ec_key.name)
print(ec_key.key_type)
Kulcs lekérése
get_key lekéri a tárolóban korábban tárolt kulcsot.
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
key = key_client.get_key("key-name")
print(key.name)
Meglévő kulcs frissítése
update_key_properties frissíti a Key Vault korábban tárolt kulcs tulajdonságait.
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
# we will now disable the key for further use
updated_key = key_client.update_key_properties("key-name", enabled=False)
print(updated_key.name)
print(updated_key.properties.enabled)
Kulcs törlése
begin_delete_key kérések Key Vault egy kulcs törlését, és egy lekérdezést ad vissza, 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 lehető leghamarabb törölni szeretné (véglegesen törölni) a kulcsot. Ha a helyreállítható törlés le van tiltva, begin_delete_key
maga is állandó.
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
deleted_key = key_client.begin_delete_key("key-name").result()
print(deleted_key.name)
print(deleted_key.deleted_date)
Automatikus kulcsrotálás konfigurálása
update_key_rotation_policy lehetővé teszi egy kulcs automatikus kulcsrotálásának konfigurálását egy rotációs szabályzat megadásával. Emellett rotate_key lehetővé teszi a kulcs igény szerinti elforgatását az adott kulcs új verziójának létrehozásával.
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient, KeyRotationLifetimeAction, KeyRotationPolicyAction
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
# Set the key's automated rotation policy to rotate the key 30 days before the key expires
actions = [KeyRotationLifetimeAction(KeyRotationPolicyAction.ROTATE, time_before_expiry="P30D")]
# You may also specify the duration after which the newly rotated key will expire
# In this example, any new key versions will expire after 90 days
updated_policy = key_client.update_key_rotation_policy("key-name", expires_in="P90D", lifetime_actions=actions)
# You can get the current rotation policy for a key with get_key_rotation_policy
current_policy = key_client.get_key_rotation_policy("key-name")
# Finally, you can rotate a key on-demand by creating a new version of the key
rotated_key = key_client.rotate_key("key-name")
Listakulcsok
list_properties_of_keys felsorolja az ügyfél tárolójában található összes kulcs tulajdonságait.
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
keys = key_client.list_properties_of_keys()
for key in keys:
# the list doesn't include values or versions of the keys
print(key.name)
Titkosítási műveletek
A CryptographyClient lehetővé teszi a titkosítási műveleteket (titkosítás/visszafejtés, burkolás/kicsomagolás, aláírás/ellenőrzés) egy adott kulccsal.
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
from azure.keyvault.keys.crypto import CryptographyClient, EncryptionAlgorithm
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
key = key_client.get_key("key-name")
crypto_client = CryptographyClient(key, credential=credential)
plaintext = b"plaintext"
result = crypto_client.encrypt(EncryptionAlgorithm.rsa_oaep, plaintext)
decrypted = crypto_client.decrypt(result.algorithm, result.ciphertext)
A titkosítási API további részleteiért tekintse meg a csomag dokumentációját .
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.keys.aio import KeyClient
credential = DefaultAzureCredential()
# call close when the client and credential are no longer needed
client = KeyClient(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 = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
async with client:
async with credential:
...
Kulcs aszinkron létrehozása
create_rsa_key és create_ec_key hozzon létre RSA- és háromliptikus görbekulcsokat a tárolóban. Ha már létezik azonos nevű kulcs, létrejön a kulcs új verziója.
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.keys.aio import KeyClient
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
# Create an RSA key
rsa_key = await key_client.create_rsa_key("rsa-key-name", size=2048)
print(rsa_key.name)
print(rsa_key.key_type)
# Create an elliptic curve key
ec_key = await key_client.create_ec_key("ec-key-name", curve="P-256")
print(ec_key.name)
print(ec_key.key_type)
Aszinkron listakulcsok
list_properties_of_keys felsorolja az ügyfél tárolójában található összes kulcs tulajdonságait.
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.keys.aio import KeyClient
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
keys = key_client.list_properties_of_keys()
async for key in keys:
print(key.name)
Hibaelhárítás
azure-keyvault-keys
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 KeyClient a ResourceNotFoundError erőforrást emeli ki:
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
from azure.core.exceptions import ResourceNotFoundError
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
try:
key_client.get_key("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.keys import KeyClient
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
client = KeyClient(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:
client.get_key("my-key", 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ó) | kulcsok létrehozása/lekérése/frissítése/törlése | | list_operations.py (aszinkron verzió) | kulcsok alapszintű listaművelete | | backup_restore_operations.py (aszinkron verzió) | kulcsok biztonsági mentése és helyreállítása | | recover_purge_operations.py (aszinkron verzió) | kulcsok helyreállítása és végleges törlése | | send_request.py | az ügyfélmetódus send_request
használata |
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 elérhető: 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: