Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Ga aan de slag met de Azure Key Vault-geheimbeheerclientbibliotheek voor Python. Volg deze stappen om het pakket te installeren en voorbeeldcode voor basistaken uit te proberen. Door Key Vault te gebruiken om geheimen op te slaan, voorkomt u dat geheimen in uw code worden opgeslagen en is uw app dus beter beveiligd.
API-referentiedocumentatie | Broncode van de bibliotheek | Pakket (Python Package Index)
Vereisten
- Een Azure-abonnement - maak er gratis een aan.
- Python 3.7+.
- Azure CLI of Azure PowerShell.
In deze quickstart wordt ervan uitgegaan dat u Azure CLI of Azure PowerShell uitvoert in een Linux-terminalvenster.
Uw lokale omgeving instellen
In deze quickstart wordt gebruikgemaakt van de Azure Identity-bibliotheek met Azure CLI of Azure PowerShell om de gebruiker te verifiëren bij Azure Services. Ontwikkelaars kunnen ook Visual Studio of Visual Studio Code gebruiken om hun oproepen te verifiëren, voor meer informatie, zie De client verifiëren met de Azure Identity-clientbibliotheek.
Aanmelden bij Azure
- Azure CLI
- Azure PowerShell
Voer het
az logincommando uit.az loginAls de CLI uw standaardbrowser kan openen, gebeurt dat ook en wordt er een Azure-aanmeldingspagina geladen.
Anders opent u een browserpagina op https://aka.ms/devicelogin en voert u de autorisatiecode in die in uw terminal wordt weergegeven.
Meldt u zich in de browser aan met uw accountreferenties.
De pakketten installeren
In een terminal- of opdrachtprompt maakt u een geschikte projectmap en maakt en activeert u een virtuele Python-omgeving, zoals wordt beschreven in Virtuele Python-omgevingen gebruiken.
Installeer de Microsoft Entra-identiteitsbibliotheek:
pip install azure-identityInstalleer de Key Vault-geheimenbibliotheek:
pip install azure-keyvault-secrets
Een resourcegroep en sleutelkluis maken
Gebruik de
az group createopdracht om een resourcegroep te maken:az group create --name <resource-group> --location eastusU kunt "eastus" wijzigen in een locatie die dichterbij ligt, als u dat verkiest.
Gebruik
az keyvault createom de sleutelkluis te maken.az keyvault create --name <vault-name> --resource-group <resource-group> --enable-rbac-authorization true --enable-purge-protection trueVervang
<vault-name>door een naam die uniek is binnen heel Azure. Normaal gesproken gebruikt u uw persoonlijke of bedrijfsnaam samen met andere getallen en id's.
De omgevingsvariabele KEY_VAULT_NAME instellen
Ons script zal de waarde gebruiken die is toegewezen aan de KEY_VAULT_NAME omgevingsvariabele als de naam van de sleutelkluis. U moet deze waarde daarom instellen met de volgende opdracht:
export KEY_VAULT_NAME=<vault-name>
Toegang verlenen tot uw sleutelkluis
Om machtigingen te verkrijgen voor uw sleutelkluis via Role-Based Access Control (RBAC), wijst u een rol toe aan uw "User Principal Name" (UPN) met behulp van de Azure CLI-opdracht az role assignment create.
az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Vervang <upn>, <subscription-id>, <resource-group-name> en <your-unique-keyvault-name> door uw werkelijke waarden. Uw UPN heeft doorgaans de indeling van een e-mailadres (bijvoorbeeld username@domain.com).
De voorbeeldcode maken
Met de Azure Key Vault-clientbibliotheek voor geheimen voor Python kunt u geheimen beheren. Het volgende codevoorbeeld laat zien hoe u een client maakt, een geheim instelt, een geheim ophaalt en een geheim verwijdert.
Maak een bestand met de naam kv_secrets.py dat deze code bevat.
import os
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = f"https://{keyVaultName}.vault.azure.net"
credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)
secretName = input("Input a name for your secret > ")
secretValue = input("Input a value for your secret > ")
print(f"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ...")
client.set_secret(secretName, secretValue)
print(" done.")
print(f"Retrieving your secret from {keyVaultName}.")
retrieved_secret = client.get_secret(secretName)
print(f"Your secret is '{retrieved_secret.value}'.")
print(f"Deleting your secret from {keyVaultName} ...")
poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()
print(" done.")
De code uitvoeren
Zorg ervoor dat de code in de vorige sectie in een bestand met de naam kv_secrets.py staat. Voer de code vervolgens uit met de volgende opdracht:
python kv_secrets.py
- Als er machtigingsfouten optreden, moet u ervoor zorgen dat de juiste Azure RBAC-rol is toegewezen. Zie de stap Toegang verlenen tot uw sleutelkluis .
- Als u de code opnieuw uitvoert met dezelfde geheime naam, kan de fout '(Conflict) Geheim
<name>bevindt zich momenteel in een verwijderde maar herstelbare staat.' optreden. Gebruik een andere geheime naam.
Codegegevens
Een client verifiëren en maken
Toepassingsaanvragen voor de meeste Azure-services moeten worden geautoriseerd. Het gebruik van de DefaultAzureCredential-klasse die wordt geleverd door de Azure Identity-clientbibliotheek is de aanbevolen methode voor het implementeren van wachtwoordloze verbindingen met Azure-services in je code.
DefaultAzureCredential ondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt. Met deze aanpak kan uw app verschillende verificatiemethoden gebruiken in verschillende omgevingen (lokaal versus productie) zonder omgevingsspecifieke code te implementeren.
In deze quickstart authenticeert DefaultAzureCredential zich bij de sleutelkluis met behulp van de referenties van de lokale ontwikkelgebruiker die is aangemeld bij de Azure CLI. Wanneer de toepassing naar Azure wordt uitgerold, kan dezelfde code automatisch een beheerde identiteit detecteren en gebruiken die is toegewezen aan een App Service, een virtuele machine, of andere diensten. Voor meer informatie, zie Overzicht van beheerde identiteiten.
In de voorbeeldcode wordt de naam van uw sleutelkluis uitgebreid met behulp van de waarde van de KVUri variabele, in de notatie: https://<vault-name>.vault.azure.net.
credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)
Een geheim opslaan
Zodra u het clientobject voor de sleutelkluis hebt opgehaald, kunt u een secret opslaan met behulp van de methode `set_secret`:
client.set_secret(secretName, secretValue)
Het aanroepen van set_secret genereert een oproep naar de Azure REST API voor de sleutelkluis.
Wanneer Azure de aanvraag afhandelt, wordt de identiteit van de beller (de service-principal) geverifieerd met behulp van het referentieobject dat u aan de client hebt opgegeven.
Een geheim ophalen
Om een geheim uit Key Vault te lezen, gebruikt u de methode get_secret:
retrieved_secret = client.get_secret(secretName)
De geheime waarde bevindt zich in retrieved_secret.value.
U kunt ook een geheim ophalen met de Azure CLI-opdracht az keyvault secret show of de Azure PowerShell-cmdlet Get-AzKeyVaultSecret.
Een geheim verwijderen
Gebruik de methode begin_delete_secret om een geheim te verwijderen:
poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()
De begin_delete_secret-methode is asynchroon en retourneert een poller-object. Door de methode result van de poller aan te roepen, wordt gewacht tot de voltooiing is bereikt.
U kunt controleren of het geheim is verwijderd met de Azure CLI-opdracht az keyvault secret show of de Azure PowerShell-cmdlet Get-AzKeyVaultSecret.
Zodra een geheim is verwijderd, heeft deze nog een tijdje de status Verwijderd maar herstelbaar. Gebruik een andere geheime naam als u de code nogmaals uitvoert.
Resources opschonen
Als u ook met certificaten en sleutels wilt experimenteren, kunt u de Key Vault hergebruiken die in dit artikel is gemaakt.
Anders, wanneer u klaar bent met de resources die in dit artikel zijn gemaakt, gebruikt u de volgende opdracht om de resourcegroep en alle resources daarin te verwijderen:
az group delete --resource-group <resource-group>
Volgende stappen
- Overzicht van Azure Key Vault
- Gids voor Azure Key Vault-ontwikkelaars
- Overzicht van Key Vault-beveiliging
- Specifieke beveiligingsrichtlijnen voor geheimen
- Authenticeren met Key Vault