Rövid útmutató: Azure Key Vault titkos ügyfélkódtár Pythonhoz

Ismerkedés a Python Azure Key Vault titkos ügyfélkódtárával. Az alábbi lépések végrehajtásával telepítheti a csomagot, és kipróbálhatja az alapműveletek példakódját. A Key Vault titkos kulcsok tárolására való használatával elkerülheti a titkos kódok tárolását a kódban, ami növeli az alkalmazás biztonságát.

API-referenciadokumentáció Kódtár forráskódcsomagja | (Python-csomagindex) |

Előfeltételek

Ez a rövid útmutató feltételezi, hogy Az Azure CLI-t vagy az Azure PowerShellt linuxos terminálablakban futtatja.

A helyi környezet beállítása

Ez a rövid útmutató az Azure Identity Library és az Azure CLI vagy az Azure PowerShell használatával hitelesíti a felhasználót az Azure Servicesben. A fejlesztők a Visual Studio vagy a Visual Studio Code használatával is hitelesíthetik a hívásaikat. További információ : Az ügyfél hitelesítése az Azure Identity ügyfélkódtárával.

Bejelentkezés az Azure-ba

  1. Futtassa a következő parancsot: az login.

    az login
    

    Ha a parancssori felület meg tudja nyitni az alapértelmezett böngészőt, az meg fogja tenni, és betölt egy Azure-bejelentkezési lapot.

    Ellenkező esetben nyisson meg egy böngészőlapot, https://aka.ms/devicelogin és adja meg a terminálban megjelenő engedélyezési kódot.

  2. A böngészőben jelentkezzen be fiókja hitelesítő adataival.

A csomagok telepítése

  1. Egy terminálban vagy parancssorban hozzon létre egy megfelelő projektmappát, majd hozzon létre és aktiváljon egy Python virtuális környezetet a Python virtuális környezetek használata című témakörben leírtak szerint.

  2. Telepítse a Microsoft Entra identitástárat:

    pip install azure-identity
    
  3. Telepítse a Key Vault titkos kulcstárát:

    pip install azure-keyvault-secrets
    

Erőforráscsoport és kulcstartó létrehozása

  1. az group create A parancs használatával hozzon létre egy erőforráscsoportot:

    az group create --name myResourceGroup --location eastus
    

    Tetszés szerint módosíthatja az "eastus" értékét az Önhöz közelebbi helyre.

  2. A kulcstartó létrehozásához használható az keyvault create :

    az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
    

    Cserélje le <your-unique-keyvault-name> az azure-beli egyedi névre. A személyes vagy céges nevét általában más számokkal és azonosítókkal együtt használja.

A KEY_VAULT_NAME környezeti változó beállítása

A szkript a környezeti változóhoz KEY_VAULT_NAME rendelt értéket fogja használni a kulcstartó neveként. Ezért ezt az értéket a következő paranccsal kell beállítania:

export KEY_VAULT_NAME=<your-unique-keyvault-name>

Hozzáférés biztosítása a kulcstartóhoz

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 <az alkalmazásazonosítót>, <az előfizetés-azonosítót>, <az erőforráscsoport nevét> és <az egyedi-kulcsvault-nevét> a tényleges értékekre. <Az app-id> a regisztrált alkalmazás (ügyfél) azonosítója az Azure AD-ben.

A mintakód létrehozása

A Pythonhoz készült Azure Key Vault titkos ügyfélkódtár lehetővé teszi a titkos kódok kezelését. Az alábbi kódminta bemutatja, hogyan hozhat létre egy ügyfelet, állíthat be egy titkos kulcsot, lekérhet egy titkos kulcsot, és törölheti a titkos kulcsokat.

Hozzon létre egy kv_secrets.py nevű fájlt, amely tartalmazza ezt a kódot.

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.")

A kód futtatása

Győződjön meg arról, hogy az előző szakaszban szereplő kód egy kv_secrets.py nevű fájlban található. Ezután futtassa a kódot a következő paranccsal:

python kv_secrets.py
  • Ha engedélyekkel kapcsolatos hibákba ütközik, győződjön meg arról, hogy futtatta a parancsot vagy Set-AzKeyVaultAccessPolicy a az keyvault set-policy parancsot.
  • Ha újrafuttatja a kódot ugyanazzal a titkos kódnévvel, a következő hibaüzenet jelenhet meg: "(Ütközés) A titkos kód <neve> jelenleg törölt, de helyreállítható állapotban van." Használjon másik titkos nevet.

Kód részletei

Ügyfél hitelesítése és létrehozása

A legtöbb Azure-szolgáltatáshoz irányuló alkalmazáskéréseket engedélyezni kell. Az Azure Identity ügyfélkódtár által biztosított DefaultAzureCredential osztály használata ajánlott módszer az Azure-szolgáltatások jelszó nélküli kapcsolatainak implementálásához a kódban. DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust kell használni futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi és éles környezetben) környezetspecifikus kód implementálása nélkül.

Ebben a rövid útmutatóban DefaultAzureCredential az Azure CLI-be bejelentkezett helyi fejlesztő felhasználó hitelesítő adataival hitelesíti a Key Vaultot. Az alkalmazás Azure-ban való üzembe helyezésekor ugyanaz DefaultAzureCredential a kód automatikusan felderítheti és használhat egy App Service-hez, virtuális géphez vagy más szolgáltatáshoz hozzárendelt felügyelt identitást. További információ: Felügyelt identitás áttekintése.

A példakódban a kulcstartó neve a változó értékével KVUri lesz kibontva a következő formátumban: "https://< your-key-vault-name.vault.azure.net>".

credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)

Titkos kód mentése

Miután beszerezte a kulcstartóhoz tartozó ügyfélobjektumot, tárolhat egy titkos kulcsot a set_secret metódussal:

client.set_secret(secretName, secretValue)

A hívás set_secret meghívja az Azure REST API-t a kulcstartóhoz.

Amikor az Azure kezeli a kérést, hitelesíti a hívó identitását (a szolgáltatásnevet) az ügyfélnek megadott hitelesítő objektummal.

Titkos kód lekérése

A Key Vault titkos kódjának olvasásához használja a get_secret metódust:

retrieved_secret = client.get_secret(secretName)

A titkos kód értéke a következőben retrieved_secret.valuetalálható: .

A titkos kulcsokat az Azure CLI az keyvault secret show parancsával vagy a Get-AzKeyVaultSecret Azure PowerShell-parancsmaggal is lekérheti.

Titkos kulcs törlése

Titkos kód törléséhez használja a begin_delete_secret metódust:

poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()

A begin_delete_secret metódus aszinkron, és egy poller objektumot ad vissza. A poller metódusának meghívása result megvárja a befejezését.

Ellenőrizheti, hogy a titkos kulcs el lett-e távolítva az Azure CLI-paranccsal az az keyvault secret show-val vagy a Get-AzKeyVaultSecret Azure PowerShell-parancsmaggal.

A törlés után a titkos kódok egy ideig törölt, de helyreállítható állapotban maradnak. Ha ismét futtatja a kódot, használjon másik titkos nevet.

Az erőforrások eltávolítása

Ha tanúsítványokkal és kulcsokkal is kísérletezni szeretne, újra felhasználhatja a cikkben létrehozott Key Vaultot.

Ellenkező esetben, ha végzett a cikkben létrehozott erőforrásokkal, az alábbi paranccsal törölje az erőforráscsoportot és az összes benne foglalt erőforrást:

az group delete --resource-group myResourceGroup

Következő lépések