Udostępnij za pośrednictwem


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

Usługa Azure Key Vault ułatwia ochronę kluczy, wpisów tajnych i certyfikatów, takich 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. Dowiedz się, jak odbywa się:

  • Tworzenie magazynu kluczy
  • Przechowywanie wpisu tajnego w usłudze Key Vault
  • Tworzenie maszyny wirtualnej z systemem Linux platformy Azure
  • Włączanie tożsamości zarządzanej dla maszyny wirtualnej
  • Udzielanie wymaganych uprawnień aplikacji konsolowej do odczytywania danych z usługi Key Vault
  • Pobieranie wpisu tajnego z usługi Key Vault

Przed rozpoczęciem zapoznaj się z podstawowymi pojęciami dotyczącymi usługi Key Vault.

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 interfejsu wiersza polecenia lub jego uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure 2.0.

Logowanie 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, przewodniku Szybki start dla programu Azure PowerShell lub przewodniku Szybki start w witrynie Azure Portal.

Alternatywnie możesz uruchomić te polecenia interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.

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" --enable-rbac-authorization

Wypełnianie magazynu kluczy wpisem tajnym

Utwórzmy wpis tajny o nazwie mySecret z wartością Success!. Wpis tajny może być hasłem, parametry połączenia SQL lub innymi informacjami, które należy zapewnić bezpieczeństwo i dostęp do 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
Witryna 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

Aby udzielić aplikacji uprawnień do magazynu kluczy za pomocą kontroli dostępu opartej na rolach (RBAC), przypisz rolę przy użyciu polecenia interfejsu wiersza polecenia platformy Azure az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Zastąp <app-id>wartości , <subscription-id>i <resource-group-name> <your-unique-keyvault-name> wartościami rzeczywistymi. <app-id> to identyfikator aplikacji (klienta) zarejestrowanej aplikacji w firmie Microsoft Entra.

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 (Łączenie się i logowanie do maszyny wirtualnej 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 naszym 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, powinien 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żesz 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