Sdílet prostřednictvím


Aplikace, klíče rozhraní API a tajné kódy služby Azure Key Vault

Azure Key Vault je služba Azure, která chrání kryptografické klíče, tajné kódy a certifikáty. Poskytuje centralizované, zabezpečené a vysoce dostupné úložiště pro citlivé informace, jako jsou klíče rozhraní API. Jednou z metod, jak se vyhnout nezabezpečeným postupům vkládání klíčů rozhraní API přímo do zdrojového kódu vaší aplikace, je nakonfigurovat aplikaci tak, aby bezpečně pracovala s klíči rozhraní API uloženými ve službě Azure Key Vault.

V tomto článku se dozvíte, jak vytvořit instanci služby Key Vault, přidat klíč rozhraní API jako tajný klíč do tohoto trezoru klíčů a pak nakonfigurovat trezor klíčů pomocí osvědčených postupů. Mezi tyto osvědčené postupy patří omezení přístupu pomocí řízení přístupu na základě role (RBAC), povolení monitorování a omezení síťového přístupu.

Vytvoření a zabezpečení instance služby Azure Key Vault

Azure Key Vault umožňuje bezpečně ukládat kryptografické klíče, tajné kódy a certifikáty. Měli byste nasadit samostatné trezory klíčů pro různá prostředí (vývoj, příprava, produkční prostředí) a aplikace.

Vytvoření skupiny prostředků a instance trezoru klíčů

K vytvoření instance trezoru klíčů můžete použít následující příkaz z Azure CLI nebo Azure Cloud Shellu:

  1. az group create Pomocí příkazu vytvořte skupinu prostředků:

    az group create --name myResourceGroup --location eastus
    

    Pokud chcete, můžete změnit "eastus" na nejbližší místo.

  2. Slouží az keyvault create k vytvoření trezoru klíčů:

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

    Nahraďte <your-unique-keyvault-name> ho jedinečným názvem ve všech Azure. Obvykle používáte svůj osobní název nebo název společnosti spolu s dalšími čísly a identifikátory.

Přidání klíče rozhraní API do služby Azure Key Vault jako tajného kódu

Po vytvoření instance služby Azure Key Vault můžete do této instance služby Azure Key Vault přidat klíč rozhraní API jako tajný klíč.

Následující příkaz azure CLI az keyvault secret set přidá do služby keyvault tajný klíč s názvem MyApiKey a nastaví vypršení platnosti tajného kódu po 180 dnech:

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

Klíče rozhraní API byste měli pravidelně obměňovat. V závislosti na potřebách zabezpečení vaší organizace se můžete rozhodnout obměňovat klíče více nebo méně často než každých 180 dnů. Odběr služby Event Grid pro událost SecretNearExpiry můžete nakonfigurovat jako metodu příjmu oznámení o vypršení platnosti tajných kódů klíčů rozhraní API.

Omezení přístupu ke službě Key Vault pomocí RBAC

Přístup k instanci služby Azure Key Vault můžete omezit tak, aby k Azure Key Vaultu měli přístup jenom identita aplikace.

Postup konfigurace role řízení přístupu na základě role (RBAC) pomocí příkazu Az role assignment create v Azure CLI:

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>

Povolení protokolování a upozornění služby Key Vault

Protokolování a výstrahy v instanci služby Key Vault byste měli povolit jako metodu detekce potenciálně podezřelé aktivity.

Pokud chcete povolit protokolování a upozornění služby Azure Key Vault, použijte příkaz Azure CLI az monitor diagnostic-settings create :

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

Tento příkaz vytvoří nastavení diagnostiky s názvem myDiagnosticSettings, nakonfiguruje ho pro zadanou službu Azure Key Vault, povolí AuditEvent kategorii protokolu, která sleduje události související se zabezpečením a přístupem a odesílá protokoly do zadaného pracovního prostoru služby Log Analytics pro účely monitorování, analýzy a upozorňování. To umožňuje monitorovat vzory přístupu, zjišťovat pokusy o neoprávněný přístup a konfigurovat výstrahy pro kritické události zabezpečení (například někdo se pokusí získat přístup k tajnému kódu bez správných oprávnění).

Spuštěním příkazu az monitor scheduled-query create v azure CLI můžete monitorovat protokoly v zadaném pracovním prostoru služby Log Analytics pro pokusy o neoprávněný přístup k tajným kódům služby Azure Key Vault a aktivovat výstrahu, pokud se zjistí nějaký odpovídající pokus o neoprávněný přístup:

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'"

Omezení síťového přístupu ke službě Key Vault

Měli byste omezit síťový přístup ke službě Azure Key Vault, aby trezor přijímal pouze požadavky ze známých síťových umístění. Existují dvě obecné metody, které můžete použít k tomuto:

  • Azure Private Link. Tím se ve vaší virtuální síti vytvoří privátní koncový bod, který vaší aplikaci umožní připojit se ke službě Azure Key Vault bez procházení veřejného internetu. Tato možnost je nejbezpečnější, protože provoz zůstává ve vaší síti, ale vyžaduje vytvoření privátního koncového bodu a konfiguraci DNS.
  • Pravidla brány firewall Nastavení brány firewall služby Azure Key Vault, které se nachází v části Sítě, můžete nakonfigurovat se seznamem povolených rozsahů IP adres. Tuto metodu můžete použít také k povolení přístupu k existujícím virtuálním sítím, ale to vyžaduje povolení koncového bodu služby pro Microsoft.KeyVault ve vybrané podsíti.

Privátní koncový bod můžete vytvořit pomocí příkazu azure CLI az network private-endpoint create :

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

Azure Key Vault vynucuje https pro veškerou komunikaci. Tím zajistíte, že vaše klíče rozhraní API a další citlivá data se budou šifrovat během přenosu a chránit je před odposloucháváním a útoky typu man-in-the-middle.

Interakce se službou Azure Key Vault pomocí Pythonu

Pokud chcete pracovat se službou Azure Key Vault pomocí Pythonu, nainstalujte knihovnu identit Azure pro MICROSOFT Entra ID a knihovnu tajných kódů služby Azure Key Vault:

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

Ke správě tajných kódů můžete použít klientskou knihovnu Azure Identity a Azure Key Vault:

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

V tomto ukázkovém kódu:

  • DefaultAzureCredential: Tato třída se pokouší ověřit pomocí různých metod (proměnných prostředí, spravovaných identit atd.), aby byla vhodná pro různá prostředí Azure.
  • SecretClient: Tato třída poskytuje metody pro interakci s tajnými kódy ve službě Key Vault.
  • get_secret(): Načte tajný klíč ze služby Key Vault.

Další kroky