Megosztás a következőn keresztül:


Alkalmazások, API-kulcsok és Azure Key Vault-titkos kódok

Az Azure Key Vault egy Azure-szolgáltatás, amely védi a titkosítási kulcsokat, titkos kulcsokat és tanúsítványokat. Központosított, biztonságos és magas rendelkezésre állású adattárat biztosít olyan bizalmas információkhoz, mint az API-kulcsok. Az API-kulcsok közvetlenül az alkalmazás forráskódjába való beágyazásának nem biztonságos gyakorlatának elkerülésére az alkalmazás konfigurálása az Azure Key Vaultban tárolt API-kulcsok biztonságos használatára.

Ebből a cikkből megtudhatja, hogyan hozhat létre Key Vault-példányt, adhat hozzá egy API-kulcsot titkos kulcsként ehhez a kulcstartóhoz, majd az ajánlott eljárásokkal konfigurálhatja a kulcstartót. Ezek az ajánlott eljárások közé tartozik a hozzáférés korlátozása szerepköralapú hozzáférés-vezérlés (RBAC) használatával, a figyelés engedélyezése és a hálózati hozzáférés korlátozása.

Azure Key Vault-példány létrehozása és védelme

Az Azure Key Vault lehetővé teszi a titkosítási kulcsok, titkos kódok és tanúsítványok biztonságos tárolását. Külön kulcstartókat kell üzembe helyeznie a különböző környezetekhez (fejlesztés, előkészítés, éles környezet) és alkalmazásokhoz.

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

Key Vault-példány létrehozásához az alábbi parancsot használhatja az Azure CLI-ből vagy az Azure Cloud Shellből:

  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.

API-kulcs hozzáadása az Azure Key Vaulthoz titkos kódként

Miután létrehozta az Azure Key Vault-példányt, hozzáadhat egy API-kulcsot titkos kulcsként ehhez az Azure Key Vault-példányhoz.

Az alábbiak az Azure CLI az keyvault titkos kulcskészlet parancsával ad hozzá egy MyApiKey nevű titkos kulcsot a kulcsvaulthoz, és beállítja, hogy a titkos kód 180 nap után lejárjon:

az keyvault secret set \
    --vault-name "<YourKeyVaultName>" \
    --name "MyApiKey" \
    --value "<YourSecretValue>"
    --expires "$(date -u -d '+180 days' +'%Y-%m-%dT%H:%M:%SZ')"

Az API-kulcsok rendszeres elforgatására kell törekednie. A szervezet biztonsági igényeitől függően dönthet úgy, hogy 180 naponta többször vagy ritkábban váltja a kulcsokat. Event Grid-előfizetést konfigurálhat a "SecretNearExpiry" eseményhez úgy, hogy értesítést kapjon a lejáró API-kulcs titkos kulcsairól.

A Key Vaulthoz való hozzáférés korlátozása az RBAC használatával

Korlátozhatja az Azure Key Vault-példányhoz való hozzáférést, hogy csak az alkalmazás identitása férhessen hozzá az Azure Key Vaulthoz.

Ehhez konfiguráljon egy szerepköralapú hozzáférés-vezérlési (RBAC) szerepkört az Azure CLI az role assignment create paranccsal:

az role assignment create --role "Key Vault Secrets User" \
  --assignee <object-id-of-app-or-user> \
  --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<key-vault-name>

A Key Vault naplózásának és riasztásának engedélyezése

Engedélyeznie kell a Key Vault-példány naplózását és riasztásait a gyanús tevékenységek észlelésének módszereként.

Az Azure Key Vault naplózásának és riasztásainak engedélyezéséhez használja az Azure CLI az monitor diagnosztikai beállítások létrehozási parancsát:

az monitor diagnostic-settings create \
    --name myDiagnosticSettings \
    --resource {key-vault-resource-id} \
    --logs '[{"category": "AuditEvent","enabled": true}]' \
    --workspace {log-analytics-workspace-id}

Ez a parancs létrehoz egy diagnosztikai beállítást myDiagnosticSettings, konfigurálja a megadott Azure Key Vaulthoz, engedélyezi a naplókategóriát, amely nyomon követi a AuditEvent biztonsággal és a hozzáféréssel kapcsolatos eseményeket, és elküldi a naplókat a megadott Log Analytics-munkaterületre figyeléshez, elemzéshez és riasztáshoz. Ez lehetővé teszi a hozzáférési minták monitorozását, a jogosulatlan hozzáférési kísérletek észlelését és a kritikus biztonsági események riasztásainak konfigurálását (például valaki a megfelelő engedélyek nélkül próbál hozzáférni egy titkos kódhoz).

Az Azure CLI az monitor ütemezett lekérdezés létrehozása parancs futtatásával figyelheti a naplókat a megadott Log Analytics-munkaterületen az Azure Key Vault titkos kulcsainak jogosulatlan hozzáférési kísérleteihez, és riasztást aktiválhat, ha a rendszer észleli a megfelelő jogosulatlan hozzáférési kísérleteket:

az monitor scheduled-query create \
    --name "Suspicious Access Alert" \
    --resource-group myResourceGroup \
    --scopes {log-analytics-workspace-resource-id} \
    --condition "AzureDiagnostics | where ResourceType == 'VAULTS' | where OperationName == 'SecretGet' | where ResultSignature == 'Unauthorized'"

A Key Vaulthoz való hálózati hozzáférés korlátozása

Korlátoznia kell az Azure Key Vaulthoz való hálózati hozzáférést, hogy a tároló csak ismert hálózati helyekről érkező kéréseket fogadjon el. Ehhez két általános módszert használhat:

  • Azure Private Link. Ez létrehoz egy privát végpontot a virtuális hálózaton belül, amely lehetővé teszi, hogy az alkalmazás a nyilvános internet bejárása nélkül csatlakozzon az Azure Key Vaulthoz. Ez a beállítás a legbiztonságosabb, mivel a forgalom a hálózaton belül marad, de magánvégpont létrehozását és a DNS konfigurálását igényli.
  • Tűzfalszabályok. A Hálózatok területen található Azure Key Vault tűzfalbeállításait konfigurálhatja az engedélyezett IP-tartományok listájával. Ezzel a módszerrel is engedélyezheti a meglévő virtuális hálózatokhoz való hozzáférést, de ehhez engedélyeznie kell egy szolgáltatásvégpontot a Microsoft.KeyVault számára a kijelölt alhálózaton.

Privát végpontot az Azure CLI az network private-endpoint create paranccsal hozhat létre :

az network private-endpoint create \
    --name myPrivateEndpoint \
    --resource-group myResourceGroup \
    --vnet-name myVNet \
    --subnet mySubnet \
    --private-connection-resource-id /subscriptions/{subscription}/resourceGroups/{rg}/providers/Microsoft.KeyVault/vaults/{key-vault-name} \
    --group-id vault \
    --connection-name myConnection

You can create firewall rules on the Azure Key Vault instance using the Azure CLI [az keyvault network-rule add](/cli/azure/keyvault/network-rule#az-keyvault-network-rule-add) command, substituting the appropriate key vault names, resource groups, subnet, and subnet mask information:

```azurecli
az keyvault network-rule add \
    --name {key-vault-name} \
    --resource-group myResourceGroup \
    --ip-address {trusted-ip-address}/32

Az Azure Key Vault minden kommunikációhoz kényszeríti a HTTPS-t. Ez biztosítja, hogy az API-kulcsok és más bizalmas adatok átvitel közben titkosítva legyenek, így védve őket a lehallgatástól és a közbeékelt támadásoktól.

Az Azure Key Vault használata a Python használatával

Az Azure Key Vault Pythonnal való használatához telepítse a Microsoft Entra ID azure-identitástárát és az Azure Key Vault titkos kódtárát:

pip install azure-identity
pip install azure-keyvault-secrets

Az Azure Identity és az Azure Key Vault titkos kulcstárával programozott módon kezelheti a titkos kulcsokat:

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

key_vault_name = "<your-key-vault-name>"
KVUri = f"https://{key_vault_name}.vault.azure.net"
secret_name = "<your-secret-name>"

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

retrieved_secret = client.get_secret(secret_name)

# Now you can use the API key:

api_key = retrieved_secret.value
print(f"The API key is: {api_key}")

Ebben a mintakódban:

  • DefaultAzureCredential: Ez az osztály különböző módszerekkel (környezeti változók, felügyelt identitások stb.) próbál hitelesíteni, így alkalmassá válik a különböző Azure-környezetek számára.
  • SecretClient: Ez az osztály metódusokat biztosít a Key Vault titkos kulcsaival való interakcióhoz.
  • get_secret(): Lekéri a titkos kulcsot a Key Vaultból.

Következő lépések