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

Azure Key Vault helpt u bij het beveiligen van sleutels, geheimen en certificaten, zoals API-sleutels en databaseverbindingsreeksen.

In deze zelfstudie stelt u een Python toepassing in om informatie uit Azure Key Vault te lezen met behulp van beheerde identiteiten voor Azure resources. U leert het volgende:

  • Maak een Key Vault.
  • Een geheim opslaan in Key Vault
  • Een Azure virtuele Linux-machine maken
  • Een beheerde identiteit inschakelen voor de virtuele machine
  • Verdeel de vereiste machtigingen voor de consoletoepassing om gegevens uit Key Vault te lezen
  • Een geheim ophalen uit Key Vault

Lees Key Vault basisconcepten voordat u begint.

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

Vereiste voorwaarden

Voor Windows, Mac en Linux:

  • Git
  • Voor deze zelfstudie moet u de Azure CLI lokaal uitvoeren. Je moet een recente versie van de Azure CLI geïnstalleerd hebben. Voer az --version uit om de versie te vinden. Zie Install Azure CLI als u de CLI wilt installeren of upgraden.

Meld u aan bij Azure

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

az login

Maak een resourcegroep en een sleutelkluis aan

In deze quickstart wordt een vooraf aangemaakte Azure-sleutelkluis gebruikt. U kunt een sleutelkluis maken door de stappen in deze quickstarts te volgen:

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

Belangrijk

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

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

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Vul uw sleutelkluis met een geheim

We gaan een geheim maken met de naam mySecret en de waarde Success!. Een geheim kan een wachtwoord, een SQL-verbindingsreeks of andere informatie zijn die u nodig hebt om zowel veilig als beschikbaar te blijven voor uw toepassing.

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

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

Een virtuele machine maken

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 De Azure portal

Als u een Virtuele Linux-machine 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 <resource-group> \
  --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 behulp van de opdracht Azure CLI az vm identity assign:

az vm identity assign --name "myVM" --resource-group "<resource-group>"

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 machtigingen wilt verkrijgen voor uw sleutelkluis via Role-Based Access Control (RBAC), wijst u een rol toe aan uw UPN (User Principal Name) met behulp van de Azure CLI-opdracht az-roltoewijzing maken.

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Vervang , <upn>en <subscription-id> door <vault-name>uw werkelijke waarden. Als u een andere resourcegroepnaam hebt gebruikt, vervangt u myResourceGroup ook. Uw UPN heeft meestal de indeling van een e-mailadres (bijvoorbeeld username@domain.com).

Aanmelden bij de nieuwe virtuele machine

Als u zich wilt aanmelden bij de virtuele machine, volgt u de instructies in Connect and sign in to an Azure virtual machine running Linux or Connect and sign in to an Azure virtual machine running Windows.

Als u zich wilt aanmelden bij een Virtuele Linux-machine, kunt u de ssh-opdracht gebruiken met de <public-ip-address> opgegeven in de stap Een virtuele machine maken :

ssh azureuser@<public-ip-address>

Python bibliotheken installeren op de VIRTUELE machine

Installeer op de virtuele machine de twee Python bibliotheken die we gaan gebruiken in ons 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 voorbeeldscript Python 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 <vault-name> de naam van uw sleutelkluis vervangt:

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

key_vault_name = "<vault-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 voorbeeld-Python-app uitvoeren

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

python3 sample.py

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

De hulpbronnen opschonen

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

az group delete -g "myResourceGroup"

Volgende stappen

Azure Key Vault REST API