Oktatóanyag: Az Azure Key Vault használata virtuális géppel a Pythonban
Az Azure Key Vault segít megvédeni a kulcsokat, titkos kulcsokat és tanúsítványokat, például az API-kulcsokat és az adatbázis-kapcsolati sztring.
Ebben az oktatóanyagban beállít egy Python-alkalmazást, amely az Azure Key Vaultból származó információkat az Azure-erőforrások felügyelt identitásainak használatával olvassa be. Az alábbiak végrehajtásának módját ismerheti meg:
- Kulcstartó létrehozása
- Titkos kulcs tárolása a Key Vaultban
- Azure Linux rendszerű virtuális gép létrehozása
- Felügyelt identitás engedélyezése a virtuális géphez
- Adja meg a konzolalkalmazáshoz szükséges engedélyeket az adatok Key Vaultból való beolvasásához
- Titkos kulcs lekérése a Key Vaultból
Mielőtt hozzákezdene, olvassa el a Key Vault alapfogalmait.
Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot.
Előfeltételek
Windows, Mac és Linux esetén:
- Git
- Ez az oktatóanyag megköveteli az Azure CLI helyi futtatását. Az Azure CLI 2.0.4-es vagy újabb verziójával kell rendelkeznie. A verzió azonosításához futtassa a következőt:
az --version
. Ha telepíteni vagy frissíteni szeretné a parancssori felületet: Az Azure CLI 2.0 telepítése.
Jelentkezzen be az Azure-ba
Ha az Azure-ba az Azure CLI használatával szeretne bejelentkezni, írja be a következőt:
az login
Erőforráscsoport és kulcstartó létrehozása
Ez a rövid útmutató egy előre létrehozott Azure Key Vaultot használ. Kulcstartót az Azure CLI rövid útmutatójában, az Azure PowerShell gyorsútmutatójában vagy az Azure Portal rövid útmutatójában ismertetett lépések követésével hozhat létre.
Másik lehetőségként futtathatja ezeket az Azure CLI- vagy Azure PowerShell-parancsokat.
Fontos
Minden kulcstartónak egyedi névvel kell rendelkeznie. Cserélje le <az egyedi-keyvault-nevét> a kulcstartó nevére az alábbi példákban.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Kulcstartó feltöltése titkos kóddal
Hozzunk létre egy mySecret nevű titkos kulcsot, amelynek értéke siker!. A titkos kód lehet jelszó, SQL-kapcsolati sztring vagy bármilyen más információ, amelyet biztonságosan és az alkalmazás számára elérhetővé kell tenni.
Ha titkos kulcsot szeretne hozzáadni az újonnan létrehozott kulcstartóhoz, használja a következő parancsot:
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"
Virtuális gép létrehozása
Hozzon létre egy myVM nevű virtuális gépet az alábbi módszerek egyikével:
Linux | Windows |
---|---|
Azure CLI | Azure CLI |
PowerShell | PowerShell |
Azure Portalra | Az Azure Portal |
Linux rendszerű virtuális gép Azure CLI-vel való létrehozásához használja az az vm create parancsot. Az alábbi példa egy azureuser nevű felhasználói fiókot ad hozzá. A --generate-ssh-keys
paraméter automatikusan létrehoz egy SSH-kulcsot, és az alapértelmezett kulcshelyre helyezi (~/.ssh).
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Jegyezze fel a kimenet értékét publicIpAddress
.
Identitás hozzárendelése a virtuális géphez
Hozzon létre egy rendszer által hozzárendelt identitást a virtuális géphez az Azure CLI az vm identity assign paranccsal:
az vm identity assign --name "myVM" --resource-group "myResourceGroup"
Figyelje meg a rendszer által hozzárendelt identitást, amely az alábbi kódban jelenik meg. Az előző parancs kimenete a következő:
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Engedélyek hozzárendelése a virtuálisgép-identitáshoz
Ha szerepköralapú hozzáférés-vezérléssel (RBAC) szeretne engedélyt adni az alkalmazásnak a kulcstartóhoz, rendeljen hozzá egy szerepkört az az role assignment create Azure CLI paranccsal.
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>"
Cserélje le <app-id>
a , <subscription-id>
és <resource-group-name>
<your-unique-keyvault-name>
a tényleges értékeket. <app-id>
A regisztrált alkalmazás (ügyfél) azonosítója a Microsoft Entrában.
Bejelentkezés a virtuális gépre
A virtuális gépre való bejelentkezéshez kövesse a Connectben található utasításokat, és jelentkezzen be egy Linux vagy Connect rendszert futtató Azure-beli virtuális gépre, és jelentkezzen be egy Windows rendszerű Azure-beli virtuális gépre.
Linux rendszerű virtuális gépre való bejelentkezéshez használja az ssh parancsot a <virtuális gép létrehozása lépésben megadott nyilvánosIpAddress> paranccsal:
ssh azureuser@<PublicIpAddress>
Python-kódtárak telepítése a virtuális gépre
A virtuális gépen telepítse a Python-szkriptben használt két Python-kódtárat: azure-keyvault-secrets
és azure.identity
.
Linux rendszerű virtuális gépeken például az alábbiakat pip3
telepítheti:
pip3 install azure-keyvault-secrets
pip3 install azure.identity
Python-példaszkript létrehozása és szerkesztése
A virtuális gépen hozzon létre egy Python-fájlt sample.py néven. Szerkessze a fájlt úgy, hogy az tartalmazza a következő kódot, és cserélje le <az egyedi-keyvault-nevét> a kulcstartó nevére:
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}'")
A Python-mintaalkalmazás futtatása
Végül futtassa a sample.py. Ha minden jól ment, akkor a titkos kód értékét kell visszaadnia:
python3 sample.py
The value of secret 'mySecret' in '<your-unique-keyvault-name>' is: 'Success!'
Az erőforrások eltávolítása
Ha már nincs rájuk szükség, törölje a virtuális gépet és a kulcstartót. Gyorsan elvégezhető annak az erőforráscsoportnak a törlésével, amelyhez tartoznak:
az group delete -g myResourceGroup