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