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:
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.
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.