Samouczek: używanie Azure Key Vault z maszyną wirtualną w Python

Azure Key Vault pomaga chronić klucze, wpisy tajne i certyfikaty, takie jak klucze interfejsu API i parametry połączenia bazy danych.

W tym samouczku skonfigurujesz aplikację Python, aby odczytywać informacje z Azure Key Vault przy użyciu tożsamości zarządzanej dla zasobów Azure. Uczysz się, jak:

  • Stwórz magazyn kluczy
  • Przechowaj tajemnicę w Key Vault
  • Tworzenie maszyny wirtualnej z systemem Azure Linux
  • Włączanie tożsamości zarządzanej dla maszyny wirtualnej
  • Udzielanie wymaganych uprawnień aplikacji konsolowej do odczytywania danych z Key Vault
  • Pobieranie tajemnicy z Key Vault

Przed rozpoczęciem przeczytaj Key Vault podstawowe pojęcia.

Jeśli nie masz subskrypcji Azure, utwórz konto free.

Wymagania wstępne

W przypadku systemów Windows, Mac i Linux:

  • Usługa Git
  • Bieżąca wersja Azure CLI. Uruchom polecenie az --version , aby sprawdzić zainstalowaną wersję.

Zaloguj się do Azure

Zaloguj się do Azure przy użyciu Azure CLI:

az login

Utwórz grupę zasobów i magazyn kluczy

Ten przewodnik szybkiego startu korzysta z wcześniej utworzonego Azure Key Vault. Można utworzyć magazyn kluczy, wykonując kroki opisane w tych szybkich przewodnikach startowych:

Alternatywnie możesz uruchomić te polecenia Azure CLI lub Azure PowerShell.

Ważne

Każdy magazyn kluczy musi mieć unikalną nazwę. Zastąp <vault-name> nazwą magazynu kluczy w poniższych przykładach.

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

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Wypełnij swój magazyn kluczy tajemnicą

Utwórzmy wpis tajny o nazwie mySecret z wartością Success!. Tajna informacja może być hasłem, ciągiem połączeniowym SQL lub innymi informacjami, które muszą być zarówno zabezpieczone, jak i dostępne dla Twojej aplikacji.

Aby dodać sekret do nowo utworzonego magazynu kluczy, użyj następującego polecenia:

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

Tworzenie maszyny wirtualnej

Utwórz maszynę wirtualną o nazwie myVM przy użyciu jednej z następujących metod:

Linux Windows
Azure CLI Azure CLI
PowerShell PowerShell
Portal Azure Portal Azure

Aby utworzyć maszynę wirtualną z systemem Linux przy użyciu Azure CLI, użyj polecenia az vm create. W poniższym przykładzie dodano konto użytkownika o nazwie azureuser. Parametr --generate-ssh-keys jest używany, aby automatycznie wygenerować klucz SSH i umieścić go w domyślnej lokalizacji klucza (~/.ssh).

az vm create \
  --resource-group <resource-group> \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Zanotuj wartość publicIpAddress w danych wyjściowych.

Przypisywanie tożsamości do maszyny wirtualnej

Utwórz tożsamość zarządzaną przypisaną przez system dla maszyny wirtualnej przy użyciu polecenia az vm identity assign :

az vm identity assign --name "myVM" --resource-group "<resource-group>"

Zanotuj tożsamość przypisaną przez system w danych wyjściowych:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Przypisywanie uprawnień do tożsamości maszyny wirtualnej

Aby uzyskać uprawnienia do magazynu kluczy za pomocą Role-Based Access Control (RBAC), przypisz rolę do głównej nazwy użytkownika (UPN) przy użyciu polecenia Azure CLI az role assignment create.

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

Zastąp <upn>, <subscription-id> i <vault-name> rzeczywistymi wartościami. Jeśli użyto innej nazwy grupy zasobów, zastąp "myResourceGroup" również. Twój UPN zazwyczaj będzie w formacie adresu e-mail (np. username@domain.com).

Zaloguj się do maszyny wirtualnej

Aby zalogować się do maszyny wirtualnej, postępuj zgodnie z instrukcjami w temacie Łączenie i logowanie się do maszyny wirtualnej Azure z systemem Linux lub Connect i zaloguj się do maszyny wirtualnej Azure z systemem Windows.

Aby zalogować się do maszyny wirtualnej z systemem Linux, użyj ssh wraz z poleceniem z kroku Utwórz maszynę wirtualną:

ssh azureuser@<public-ip-address>

Instalowanie bibliotek Python na maszynie wirtualnej

Na maszynie wirtualnej zainstaluj dwie biblioteki Python, których używa przykładowy skrypt: azure-keyvault-secrets i azure-identity.

Na maszynie wirtualnej z systemem Linux zainstaluj je przy użyciu polecenia pip3:

pip3 install azure-keyvault-secrets azure-identity

Tworzenie i edytowanie przykładowego skryptu Python

Na maszynie wirtualnej utwórz plik Python o nazwie sample.py. Wklej następujący kod do pliku, zastępując element <vault-name> nazwą swojego magazynu kluczy:

from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

key_vault_name = "<vault-name>"
key_vault_uri = f"https://{key_vault_name}.vault.azure.net"
secret_name = "mySecret"

credential = DefaultAzureCredential()
client = SecretClient(vault_url=key_vault_uri, credential=credential)
retrieved_secret = client.get_secret(secret_name)

print(f"The value of secret '{secret_name}' in '{key_vault_name}' is: '{retrieved_secret.value}'")

Uruchamianie przykładowej aplikacji Python

Uruchom program sample.py. Jeśli wszystko jest poprawnie skonfigurowane, aplikacja wypisuje tajną wartość:

python3 sample.py

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

Uprzątnij zasoby

Gdy nie są już potrzebne, usuń maszynę wirtualną i magazyn kluczy. Najszybszym sposobem jest usunięcie grupy zasobów, do której należą:

az group delete -g "myResourceGroup"

Dalsze kroki

REST API Azure Key Vault