Share via


Zelfstudie: Azure Key Vault gebruiken met een virtuele machine in Python

Met Azure Key Vault kunt u sleutels, geheimen en certificaten beveiligen, zoals API-sleutels en databaseverbindingsreeksen.

In deze zelfstudie configureert u een Python-toepassing voor het lezen van gegevens uit Azure Key Vault met behulp van beheerde identiteiten voor Azure-resources. U leert het volgende:

  • Maak een sleutelkluis.
  • Een geheim opslaan in Key Vault
  • Een virtuele Linux-machine maken
  • Een Beheerde identiteit inschakelen voor de virtuele machine
  • De vereiste machtigingen verlenen aan de consoletoepassing om gegevens te lezen uit Key Vault
  • Een geheim lezen uit Key Vault

Lees voordat u verdergaat eerst Basisconcepten van Key Vault.

Als u nog geen Azure-abonnement hebt, maakt u een gratis account.

Vereisten

Voor Windows, Mac en Linux:

  • Git
  • Voor deze zelfstudie moet u de Azure CLI lokaal uitvoeren. Azure CLI versie 2.0.4 of hoger moet geïnstalleerd zijn. Voer az --version uit om de versie te bekijken. Zie Azure CLI 2.0 installeren als u CLI wilt installeren of upgraden.

Meld u aan bij Azure

Als u zich bij Azure wilt aanmelden met de Azure CLI, voert u het volgende in:

az login

Een resourcegroep en sleutelkluis maken

In deze quickstart wordt een vooraf gemaakte Azure-sleutelkluis gebruikt. U kunt een sleutelkluis maken met behulp van de stappen in de quickstart voor Azure CLI, de quickstart voor Azure PowerShell of de quickstart voor de Azure-portal.

U kunt deze Azure CLI- of Azure PowerShell-opdrachten ook uitvoeren.

Belangrijk

Elke sleutelkluis moet een unieke naam hebben. Vervang <uw unieke sleutelkluisnaam> door de naam van uw sleutelkluis in de volgende voorbeelden.

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

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

Vul uw sleutelkluis in met een geheim

We gaan een geheim maken met de naam mySecret en de waarde Success!. Een geheim kan een wachtwoord zijn, een SQL-verbindingsreeks of andere gegevens die u zowel veilig als beschikbaar wilt houden voor de toepassing.

Gebruik de volgende opdracht om een geheim toe te voegen aan uw zojuist gemaakte sleutelkluis:

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

Maak een virtuele machine

Gebruik een van de volgende methoden om een VM met de naam myVM te maken:

Linux Windows
Azure-CLI Azure-CLI
Powershell Powershell
Azure-portal Azure Portal

Als u een Linux-VM wilt maken met behulp van de Azure CLI, gebruikt u de opdracht az vm create. In het volgende voorbeeld wordt een gebruikersaccount met de naam azureuser toegevoegd. De parameter --generate-ssh-keys wordt gebruikt om automatisch een SSH-sleutel te genereren en deze te plaatsen in de standaardsleutellocatie (~/.ssh).

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

Noteer de waarde van publicIpAddress in de uitvoer.

Een identiteit toewijzen aan de virtuele machine

Maak een door het systeem toegewezen identiteit voor de virtuele machine met de opdracht az vm identity assign van de Azure CLI:

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

Bekijk de door het systeem toegewezen identiteit die wordt weergegeven in de volgende code. De uitvoer van de vorige opdracht ziet er als volgt uit:

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

Machtigingen toewijzen aan de VM-identiteit

Als u uw toepassingsmachtigingen wilt verlenen aan uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe met behulp van de Azure CLI-opdracht 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>"

Vervang , <subscription-id><resource-group-name> en <your-unique-keyvault-name> door <app-id>uw werkelijke waarden. <app-id> is de toepassings-id (client) van uw geregistreerde toepassing in Microsoft Entra.

Aanmelden bij de nieuwe virtuele machine

Als u zich wilt aanmelden bij de virtuele machine, volgt u de instructies in Verbinding maken met en aanmelden bij een virtuele Azure-machine met Linux of Verbinding maken en aanmelden bij een virtuele Azure-machine met Windows.

Als u zich wilt aanmelden bij een Virtuele Linux-machine, kunt u de ssh-opdracht gebruiken met het <publicIpAddress> dat is opgegeven in de stap Een virtuele machine maken:

ssh azureuser@<PublicIpAddress>

Python-bibliotheken installeren op de VM

Installeer op de virtuele machine de twee Python-bibliotheken die we gaan gebruiken in het Python-script: azure-keyvault-secrets en azure.identity.

Op een Linux-VM kunt u deze bijvoorbeeld installeren met behulp van pip3:

pip3 install azure-keyvault-secrets

pip3 install azure.identity

Het Python-voorbeeldscript maken en bewerken

Maak op de virtuele machine een Python-bestand met de naam sample.py. Bewerk het bestand met de volgende code, waarbij u <uw unieke sleutelkluisnaam> vervangt door de naam van uw sleutelkluis:

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}'")

De Python-voorbeeld-app uitvoeren

Voer ten slotte sample.py uit. Als alles goed is, moet de waarde van uw geheim worden geretourneerd:

python3 sample.py

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

Resources opschonen

Wanneer ze niet meer nodig zijn, verwijdert u de virtuele machine en uw sleutelkluis. U kunt snel worden gedaan door de resourcegroep waartoe ze behoren te verwijderen:

az group delete -g myResourceGroup

Volgende stappen

REST-API van Azure Key Vault