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