Megosztás a következőn keresztül:


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

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.aiohelyette az 's-t KeyClient .

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

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.

Megjelenések