Samouczek: korzystanie z usługi Azure Key Vault z maszyną wirtualną w języku Python

Usługa 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ę w języku Python, aby odczytywać informacje z usługi Azure Key Vault przy użyciu tożsamości zarządzanych dla zasobów platformy Azure. Omawiane kwestie:

  • Tworzenie magazynu kluczy
  • Przechowywanie wpisu tajnego w Key Vault
  • Tworzenie maszyny wirtualnej z systemem Linux na platformie Azure
  • Włączanie tożsamości zarządzanej dla maszyny wirtualnej
  • Przyznaj wymagane uprawnienia aplikacji konsolowej do odczytywania danych z Key Vault
  • Pobieranie wpisu tajnego z Key Vault

Przed rozpoczęciem przeczytaj Key Vault podstawowych pojęć.

Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.

Wymagania wstępne

W przypadku systemów Windows, Mac i Linux:

  • Usługa Git
  • Ten samouczek wymaga uruchomienia interfejsu wiersza polecenia platformy Azure lokalnie. Musisz mieć zainstalowany interfejs wiersza polecenia platformy Azure w wersji 2.0.4 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja wiersza polecenia lub jego uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure 2.0.

Zaloguj się do platformy Azure.

Aby zalogować się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure, wpisz:

az login

Tworzenie grupy zasobów i magazynu kluczy

W tym przewodniku Szybki start jest używany wstępnie utworzony magazyn kluczy platformy Azure. Magazyn kluczy można utworzyć, wykonując kroki opisane w przewodniku Szybki start interfejsu wiersza polecenia platformy Azure, Azure PowerShell przewodniku Szybki start lub przewodniku Szybki start Azure Portal.

Alternatywnie możesz po prostu uruchomić interfejs wiersza polecenia platformy Azure lub Azure PowerShell polecenia poniżej.

Ważne

Każdy magazyn kluczy musi mieć unikatową nazwę. Zastąp <ciąg your-unique-keyvault-name> nazwą magazynu kluczy w poniższych przykładach.

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

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"

Wypełnianie magazynu kluczy wpisem tajnym

Utwórzmy wpis tajny o nazwie mySecret z wartością Success!. Wpis tajny może być hasłem, parametrami połączenia SQL lub wszelkimi innymi informacjami, które muszą być bezpieczne i dostępne dla aplikacji.

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

az keyvault secret set --vault-name "<your-unique-keyvault-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
Interfejs wiersza polecenia platformy Azure Interfejs wiersza polecenia platformy Azure
Program PowerShell Program PowerShell
Azure Portal Witryna Azure Portal

Aby utworzyć maszynę wirtualną z systemem Linux przy użyciu interfejsu wiersza polecenia platformy Azure, 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 myResourceGroup \
  --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ść przypisaną przez system dla maszyny wirtualnej przy użyciu polecenia az vm identity assign interfejsu wiersza polecenia platformy Azure:

az vm identity assign --name "myVM" --resource-group "myResourceGroup"

Zanotuj tożsamość przypisaną przez system, która jest wyświetlana w poniższym kodzie. Dane wyjściowe poprzedniego polecenia to:

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

Przypisywanie uprawnień do tożsamości maszyny wirtualnej

Teraz możesz przypisać wcześniej utworzone uprawnienia tożsamości do magazynu kluczy, uruchamiając następujące polecenie:

az keyvault set-policy --name "<your-unique-keyvault-name>" --object-id "<systemAssignedIdentity>" --secret-permissions get list

Logowanie się do maszyny wirtualnej

Aby zalogować się do maszyny wirtualnej, postępuj zgodnie z instrukcjami w temacie Connect and sign in an Azure virtual machine running Linux or Connect and sign in an Azure virtual machine running Windows (Nawiązywanie połączenia i logowanie się do maszynywirtualnej platformy Azure z systemem Windows).

Aby zalogować się do maszyny wirtualnej z systemem Linux, możesz użyć polecenia ssh z wartością <publicIpAddress>podaną w kroku Tworzenie maszyny wirtualnej :

ssh azureuser@<PublicIpAddress>

Instalowanie bibliotek języka Python na maszynie wirtualnej

Na maszynie wirtualnej zainstaluj dwie biblioteki języka Python, których będziemy używać w skryscie języka Python: azure-keyvault-secrets i azure.identity.

Na przykład na maszynie wirtualnej z systemem Linux można zainstalować następujące elementy przy użyciu polecenia pip3:

pip3 install azure-keyvault-secrets

pip3 install azure.identity

Tworzenie i edytowanie przykładowego skryptu języka Python

Na maszynie wirtualnej utwórz plik w języku Python o nazwie sample.py. Edytuj plik, aby zawierał następujący kod, zastępując <ciąg your-unique-keyvault-name> nazwą magazynu kluczy:

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

key_vault_name = "<your-unique-keyvault-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 w języku Python

Na koniec uruchom sample.py. Jeśli wszystko poszło dobrze, powinna zwrócić wartość wpisu tajnego:

python3 sample.py

The value of secret 'mySecret' in '<your-unique-keyvault-name>' is: 'Success!'

Czyszczenie zasobów

Gdy maszyna wirtualna i magazyn kluczy nie będą już potrzebne, usuń je. Można to zrobić szybko, usuwając grupę zasobów, do której należą:

az group delete -g myResourceGroup

Następne kroki

Interfejsy API REST usługi Azure Key Vault