Rychlý start: Klientská knihovna klíčů služby Azure Key Vault pro Python

Začínáme s klientskou knihovnou služby Azure Key Vault pro Python Pomocí těchto kroků nainstalujte balíček a vyzkoušejte si ukázkový kód pro základní úlohy. Použitím služby Key Vault k ukládání kryptografických klíčů se vyhnete ukládání takových klíčů do kódu, což zvyšuje zabezpečení vaší aplikace.

Referenční dokumentace k rozhraní API | Zdrojový kód knihovny | Balíček (Index balíčků Pythonu)

Požadavky

V tomto rychlém úvodu se předpokládá, že používáte Azure CLI nebo Azure PowerShell v okně terminálu v systému Linux.

Nastavení místního prostředí

V tomto rychlém startu se k ověření uživatele ve službách Azure používá knihovna identit Azure s Azure CLI nebo Azure PowerShellem. Vývojáři také můžou k ověření volání použít Visual Studio nebo Visual Studio Code. Další informace naleznete v tématu Ověřování klienta s využitím knihovny Azure Identity pro klienty.

Přihlášení k Azure

  • Azure CLI
  • Azure PowerShell
  1. Spusťte příkaz login.

    az login
    

    Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku Azure.

    V opačném případě otevřete stránku prohlížeče na adrese https://aka.ms/devicelogin a zadejte autorizační kód zobrazený ve vašem terminálu.

  2. Přihlaste se pomocí přihlašovacích údajů vašeho účtu v prohlížeči.

Instalace balíčků

  1. V terminálu nebo příkazovém řádku vytvořte vhodnou složku pro projekt, poté vytvořte a aktivujte virtuální prostředí pro Python, jak je popsáno v části Použití virtuálních prostředí Pythonu.

  2. Nainstalujte knihovnu identit Microsoft Entra:

    pip install azure-identity
    
  3. Nainstalujte klientskou knihovnu klíčů služby Key Vault:

    pip install azure-keyvault-keys
    

Vytvořte skupinu prostředků a trezor klíčů

  • Azure CLI
  • Azure PowerShell
  1. Použijte příkaz az group create pro vytvoření skupiny prostředků:

    az group create --name "myResourceGroup" --location "EastUS"
    

    Můžete změnit "EastUS" na místo blíže k vám, pokud dáváte přednost.

  2. Použijte az keyvault create k vytvoření trezoru klíčů:

    az keyvault create --name "<vault-name>" --resource-group "myResourceGroup" --enable-rbac-authorization true --enable-purge-protection true
    

    Nahraďte <vault-name> názvem, který je unikátní v rámci celého Azure. Obvykle používáte svůj osobní název nebo název společnosti spolu s dalšími čísly a identifikátory.

Nastavte proměnnou prostředí KEY_VAULT_NAME

Náš skript použije hodnotu přiřazenou proměnné prostředí KEY_VAULT_NAME jako název trezoru klíčů. Tuto hodnotu proto musíte nastavit pomocí následujícího příkazu:

export KEY_VAULT_NAME=<vault-name>

Udělení přístupu k trezoru klíčů

Pokud chcete získat oprávnění k trezoru klíčů prostřednictvím řízení přístupu na základě role (RBAC), přiřaďte roli k "User Principal Name" (UPN) pomocí příkazu az role assignment create v Azure CLI.

az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Nahraďte hodnoty <upn>, <subscription-id> a <vault-name> skutečnými hodnotami. Pokud jste použili jiný název skupiny prostředků, nahraďte také myResourceGroup. Název uživatele (UPN) bude obvykle ve formátu e-mailové adresy (např. username@domain.com).

Vytvoření ukázkového kódu

Klientská knihovna klíčů služby Azure Key Vault pro Python umožňuje spravovat kryptografické klíče. Následující ukázka kódu ukazuje, jak vytvořit klienta, nastavit klíč, načíst klíč a odstranit klíč.

Vytvořte soubor s názvem kv_keys.py , který obsahuje tento kód.

import os
from azure.keyvault.keys import KeyClient
from azure.identity import DefaultAzureCredential

keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"

credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)

keyName = input("Input a name for your key > ")

print(f"Creating a key in {keyVaultName} called '{keyName}' ...")

rsa_key = client.create_rsa_key(keyName, size=2048)

print(" done.")

print(f"Retrieving your key from {keyVaultName}.")

retrieved_key = client.get_key(keyName)

print(f"Key with name '{retrieved_key.name}' was found.")
print(f"Deleting your key from {keyVaultName} ...")

poller = client.begin_delete_key(keyName)
deleted_key = poller.result()

print(" done.")

Spuštění kódu

Ujistěte se, že kód v předchozí části je v souboru s názvem kv_keys.py. Pak kód spusťte pomocí následujícího příkazu:

python kv_keys.py

Opětovné spuštění kódu se stejným názvem klíče může způsobit chybu "(Konfliktní) klíč <name> je aktuálně v odstraněném, ale obnovitelném stavu." Použijte jiný název klíče.

Podrobnosti kódu

Ověření a vytvoření klienta

Žádosti o aplikace na většinu služeb Azure musí být autorizované. Použití třídy DefaultAzureCredential, kterou poskytuje knihovna klientu Azure Identity, je doporučeným přístupem pro implementaci připojení ke službám Azure bez použití hesla ve vašem kódu. DefaultAzureCredential podporuje více metod ověřování a určuje, která metoda se má použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí.

V tomto rychlém startu se DefaultAzureCredential autentizuje v trezoru klíčů pomocí přihlašovacích údajů místního vývojového uživatele přihlášeného k Azure CLI. Když je aplikace nasazená do Azure, stejný DefaultAzureCredential kód může automaticky zjišťovat a používat spravovanou identitu přiřazenou k App Service, virtuálnímu počítači nebo jiným službám. Podrobnosti naleznete v Přehled spravované identity.

V ukázkovém kódu se název trezoru klíčů rozšíří pomocí hodnoty KVUri proměnné ve formátu: https://<vault-name>.vault.azure.net.

credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)

Uložení klíče

Po získání objektu klienta pro trezor s klíči můžete klíč uložit pomocí metody create_rsa_key:

rsa_key = client.create_rsa_key(keyName, size=2048)

Můžete také použít create_key nebo create_ec_key.

Volání metody create vygeneruje volání rozhraní Azure REST API pro trezor klíčů.

Když Azure zpracovává požadavek, ověří identitu volajícího (služební objekt) pomocí ověřovacího objektu, který jste zadali klientovi.

Načtení klíče

Ke čtení klíče ze služby Key Vault použijte metodu get_key:

retrieved_key = client.get_key(keyName)

K nastavení klíče můžete použít příkaz `az keyvault key show` v Azure CLI nebo cmdlet `Get-AzKeyVaultKey` v Azure PowerShell.

Odstraňte klíč

Klíč odstraníte pomocí metody begin_delete_key:

poller = client.begin_delete_key(keyName)
deleted_key = poller.result()

Metoda begin_delete_key je asynchronní a vrací objekt poller. Volání metody poller result čeká na dokončení procesu.

Pomocí příkazu Azure CLI az keyvault key show nebo rutiny Azure PowerShell Get-AzKeyVaultKey můžete ověřit, že byl klíč smazán.

Po odstranění zůstane klíč po určitou dobu ve stavu - je odstraněný, ale obnovitelný. Pokud kód spustíte znovu, použijte jiný název klíče.

Vyčištění prostředků

Pokud chcete také experimentovat s certifikáty a tajemstvími, můžete znovu použít službu Key Vault vytvořenou v tomto článku.

Jinak po dokončení práce s prostředky vytvořenými v tomto článku odstraňte skupinu prostředků a všechny její obsažené prostředky pomocí následujícího příkazu:

  • Azure CLI
  • Azure PowerShell
az group delete --resource-group "myResourceGroup"

Další kroky