Geheimen en certificaten beheren met Azure Key Vault
14-08-2024
Dit technische en educatieve artikel is bedoeld om beveiligingsanalisten, IT-beheerders en systeemingenieurs te begeleiden bij het gebruik van Azure Key Vault om geheimen (zoals wachtwoorden, API-sleutels, verbindingsreeksen) en certificaten (SSL/TLS) veilig te beheren. Azure Key Vault is een cloudservice die een gecentraliseerde en veilige oplossing biedt voor het opslaan en openen van deze kritieke items, waardoor het niet meer nodig is om ze rechtstreeks in code of configuratiebestanden in te sluiten, wat een slechte beveiligingspraktijk is [1].
Introductie
Bij de ontwikkeling en werking van moderne applicaties is het beheren van geheimen en certificaten een constante uitdaging. Databasereferenties, API-sleutels voor services van derden, coderingssleutels en SSL/TLS-certificaten zijn gevoelige activa die, als ze worden aangetast, tot ernstige datalekken kunnen leiden. Het onveilig opslaan ervan, zoals in platte tekstbestanden, omgevingsvariabelen of rechtstreeks in de broncode, vormt een aanzienlijk risico. Azure Key Vault is ontworpen om deze problemen op te lossen door een veilige, op hardware gebaseerde repository (HSM) te bieden om deze assets te beschermen, de toegang strak te controleren en het levenscyclusbeheer te vereenvoudigen [2].
Deze handleiding behandelt het maken van een Azure Key Vault, het toevoegen en ophalen van geheimen en certificaten, het configureren van toegangsbeleid en de integratie met andere Azure-services zoals Azure App Service. Er worden stapsgewijze instructies, voorbeeld Azure CLI-opdrachten en validatiemethoden gegeven, zodat de lezer een veilig beheer van geheimen en certificaten kan implementeren, waardoor de beveiligingspostuur van hun applicaties en cloudinfrastructuur wordt versterkt.
Waarom is Azure Key Vault cruciaal?
- Beveiligde opslag: Beschermt geheimen en encryptiesleutels met behulp van FIPS 140-2 Niveau 2 gevalideerde hardwarebeveiligingsmodules (HSM's).
- Gecentraliseerd toegangscontrole: Hiermee kunt u toegangsmachtigingen voor geheimen en certificaten op gedetailleerd niveau beheren met behulp van op rollen gebaseerd toegangscontrole (RBAC) van Azure of Key Vault-toegangsbeleid.
- Levenscyclusbeheer: vergemakkelijkt de rotatie van geheimen en certificaten, automatische vervaldatum en melding van gebeurtenissen.
- Risicoreductie: Elimineert de noodzaak om inloggegevens op te slaan in code- of configuratiebestanden, waardoor het risico op lekkage wordt geminimaliseerd.
- Monitoring en auditing: registreert alle bewerkingen die worden uitgevoerd in Key Vault en biedt audittrails voor nalevings- en beveiligingsonderzoeken.
- Vereenvoudigde integratie: Kan eenvoudig worden geïntegreerd met andere Azure-services, zoals Azure App Service, Azure Functions, Azure Virtual Machines en Azure DevOps.
Vereisten
Om Azure Key Vault te gebruiken, hebt u de volgende items nodig:
- Actief Azure-abonnement: een Azure-abonnement om resources te maken en te beheren.
- Beheerderstoegang: een account met de rol 'Eigenaar' of 'Bijdrager' in het Azure-abonnement, of een aangepaste rol met machtigingen om sleutelkluizen te maken en te beheren.
- Azure CLI of Azure PowerShell: geïnstalleerde en geconfigureerde opdrachtregelprogramma's voor interactie met Azure.
- Optioneel: Visual Studio Code: voor ontwikkelings- en integratietests.
Stap voor stap: geheimen en certificaten beheren met Azure Key Vault
Laten we een Key Vault maken, een geheim en certificaat toevoegen en de toegang configureren.
1. Een Azure Key Vault maken
Laten we een Key Vault maken met behulp van de Azure CLI. U kunt ook de Azure-portal gebruiken.
- Open uw terminal of PowerShell en log in op Azure:
bash az-login -
Maak een resourcegroep (als u er nog geen heeft):
bash az group create --name RG-KeyVault-Artigos --location eastus -
Maak de Azure Key Vault. Kies een globaal unieke naam voor uw Key Vault.
bash az keyvault create --name kv-artigos-seguranca-01 --resource-group RG-KeyVault-Artigos --location eastus --enabled-for-template-implementatie true--enabled-for-template-deployment true: Hiermee kan Key Vault worden gebruikt voor sjabloonimplementaties, handig voor automatisering.
2. Een geheim toevoegen aan Key Vault
Laten we een databasewachtwoord als geheim toevoegende.
-
Voeg een geheim toe met de naam 'DatabasePassword' met een voorbeeldwaarde:
bash az sleutelkluis geheime set --kluisnaam kv-artigos-seguranca-01 --naam DatabasePassword --waarde "S3cur3P@ssw0rd!" -
Haal het geheim op om te controleren of het correct is opgeslagen:
bash az keyvault secret show --kluisnaam kv-artigos-seguranca-01 --naam DatabasePassword --querywaarde -o tsv
3. Een certificaat toevoegen aan Key Vault
Laten we een zelfondertekend certificaat toevoegen voor demonstratiedoeleinden. In productie zou u certificaten van een vertrouwde CA gebruiken.
-
Maak een zelfondertekend certificaat in Key Vault:
bash az keyvault certificaat create --vault-naam kv-artigos-seguranca-01 --name MyWebAppCert --policy "$(az keyvault certificaat get-default-policy)" -
Certificaatgegevens controleren:
bash az keyvault certificaat show --vault-naam kv-artigos-seguranca-01 --naam MyWebAppCert
4. Toegangsbeleid configureren
Om toepassingen of gebruikers toegang te geven tot geheimen en certificaten, moet u het toegangsbeleid configureren. Laten we Azure op rollen gebaseerd toegangsbeheer (RBAC) gebruiken.
- Zorg ervoor dat u de
Object-IDkrijgt van de applicatie of gebruiker die toegang nodig heeft. Voor een toepassing (Service Principal) kunt u deze verkrijgen nadat u deze bij Azure AD heeft geregistreerd. Voor een gebruiker gebruikt uaz ad user show --id <user-principal-name> --query id -o tsv. - Wijs een rol toe aan uw Key Vault. Als u bijvoorbeeld wilt toestaan dat een toepassing geheimen leest:
bash # Voorbeeld: Wijs de rol 'Key Vault Secrets User' toe aan een Service Principal az roltoewijzing create --role "Key Vault Secrets User" --assignee-object-id <Object Application/User ID> --scope /subscriptions/<Your Subscription ID>/resourceGroups/RG-KeyVault-Artigos/providers/Microsoft.KeyVault/vaults/kv-artigos-seguranca-01- Tip: Voor certificaten kunt u de functie 'Key Vault Certificate User' gebruiken.
5. Integreren met een Azure App Service (voorbeeld)
Laten we demonstreren hoe een toepassing een geheim uit Key Vault kan gebruiken.
- Maak een Azure App Service (als u er nog geen heeft):
bash az appservice plan create --name AppServicePlan-Artigos --resource-group RG-KeyVault-Artigos --sku B1 --is-linux az webapp create --resource-group RG-KeyVault-Artigos --plan AppServicePlan-Artigos --name webapp-artigos-seguranca-01 -
Schakel beheerde identiteit in voor de App Service. Hierdoor kan App Service zich verifiëren bij Azure Key Vault zonder expliciete referenties.
bash az webapp identiteit toewijzen --resource-group RG-KeyVault-Artigos --name webapp-artigos-seguranca-01 -
Verleen de door App Service beheerde identiteit toestemming om toegang te krijgen tot het geheim in Key Vault. Gebruik de
principalIddie u in de vorige stap hebt verkregen.bash az keyvault set-policy --name kv-artigos-seguranca-01 --object-id <principalManaged IdentityId> --secret-permissions get list- Tip: als u RBAC wilt gebruiken, wijst u de rol 'Key Vault Secrets User' toe aan de 'principalId' van de beheerde identiteit.
-
Configureer een geheime referentie in de App Service. Hierdoor heeft de toepassing toegang tot het geheim als een omgevingsvariabele.
bash az webapp config appsettings set --resource-group RG-KeyVault-Artigos --name webapp-artigos-seguranca-01 --settings DatabasePassword="@Microsoft.KeyVault(SecretUri=https://kv-artigos-seguranca-01.vault.azure.net/secrets/DatabasePassword/)" -
Nu kan uw toepassing (bijvoorbeeld ASP.NET Core, Node.js) het 'DatabasePassword'-geheim lezen als een normale omgevingsvariabele, en Azure App Service zorgt ervoor dat het op een veilige manier wordt opgehaald uit Key Vault.
Validatie en testen
Bij het valideren van geheim- en certificaatbeheer moet worden gecontroleerd of alleen toegang wordt verleend aan geautoriseerde entiteiten en of geheimen correct kunnen worden opgehaald.
1. Toegang tot geheimen testen via Azure CLI
-
Probeer toegang te krijgen tot het geheim met een account dat geen rechten heeft:
bash az login # Meld u aan met een account zonder machtigingen az keyvault secret show --kluisnaam kv-artigos-seguranca-01 --naam DatabasePassword --querywaarde -o tsv- Verwacht resultaat: de opdracht zou moeten mislukken met de fout
AuthorizationFailed.
- Verwacht resultaat: de opdracht zou moeten mislukken met de fout
-
Probeer toegang te krijgen tot het geheim met een account dat machtigingen heeft (bijvoorbeeld het account dat Key V heeft gemaaktault of de door App Service beheerde identiteit als u test vanuit de toepassing).
bash az login # Meld u aan met een account met machtigingen az keyvault secret show --kluisnaam kv-artigos-seguranca-01 --naam DatabasePassword --querywaarde -o tsv- Verwacht resultaat: de opdracht moet de geheime waarde retourneren.
2. Certificaattoegang testen
- Controleer of het certificaat kan worden vermeld en opgehaald door een geautoriseerde entiteit.
bash az keyvault-certificaatlijst --kluisnaam kv-artigos-seguranca-01 az keyvault certificaat show --vault-naam kv-artigos-seguranca-01 --naam MyWebAppCert- Verwacht resultaat: opdrachten moeten certificaatgegevens retourneren.
3. Key Vault-auditlogboeken controleren
Alle bewerkingen in Key Vault worden geregistreerd en kunnen worden gecontroleerd.
- Navigeer in de Azure-portal naar uw Key Vault (
kv-articles-seguranca-01). - Selecteer Activiteitenlogboeken in het linkernavigatievenster.
- U ziet een logboek van alle uitgevoerde handelingen, inclusief het aanmaken van geheimen, certificaten en toegangspogingen.
Beveiligingstips en best practices
- Privilege van de minste bevoegdheden: Verleen alleen noodzakelijke machtigingen (ophalen, weergeven, instellen, verwijderen) voor geheimen en certificaten. Vermijd het verlenen van overmatige machtigingen.
- Regelmatige rotatie van geheimen: Implementeer een proces om geheimen en certificaten regelmatig te rouleren om het risico op compromissen te verminderen.
- Beheerde identiteiten: gebruik waar mogelijk beheerde identiteiten voor Azure-resources (beheerde identiteiten) om u te verifiëren bij Key Vault, waardoor u de referenties in uw code niet meer hoeft te beheren.
- Gedetailleerd toegangsbeleid: gebruik Key Vault of Azure RBAC-toegangsbeleid om te bepalen wie toegang heeft tot wat. Geef de voorkeur aan RBAC voor een fijnere controle.
- Bewaking en waarschuwingen: configureer waarschuwingen voor verdachte activiteiten in Key Vault, zoals mislukte toegangspogingen of geheime verwijderingen.
- Beveiliging voor zacht verwijderen en opschonen: Schakel de beveiliging voor zacht verwijderen en opschonen in Key Vault in om onbedoeld of kwaadwillig verlies van geheimen en certificaten te voorkomen.
- Regelmatige back-up: Hoewel Key Vault maximaal beschikbaar is, kunt u overwegen een back-up van uw geheimen en certificaten te maken, vooral voor scenario's voor herstel na noodgevallen.
- Aflopende geheimen: stel vervaldatums in voor geheimen en certificaten om rotatie te forceren en het gebruik van oude inloggegevens te voorkomen.
Algemene probleemoplossing
- Autorisatiefout (403 verboden): Controleer het Key Vault-toegangsbeleid of de RBAC-roltoewijzingen voor de entiteit die toegang probeert te krijgen. Zorg ervoor dat de juiste
Object IDofprincipalIdwordt gebruikt. - Geheim/certificaat niet gevonden: controleer de naam van het geheim/certificaat en de Key Vault-naam. Zorg ervoor dat het geheim/certificaat bestaat en niet is verwijderd of verlopen.
- Problemen met beheerde identiteiten: controleer of de beheerde identiteit is ingeschakeld voor de Azure-bron en of de juiste machtigingen zijn verleend in Key Vault.
- Latentie bij het ophalen van geheimen: In sommige gevallen kan er een kleine latentie optreden bij het ophalen van geheimen. Zorg ervoor dat uw toepassing dit asynchroon afhandelt.
- Verbindingsfouten: Controleer de netwerkinstellingen van uw applicatie of virtuele machine. Zorg ervoor dat er geen firewalls of netwerkbeveiligingsgroepen zijn die de toegang tot Key Vault blokkeren.
Conclusie
Azure Key Vault is een essentiële service voor elke organisatie die haar meest gevoelige digitale activa in de cloud wil beschermen. Door het beheer van geheimen en certificaten te centraliseren in een veilige, zeer beschikbare repository, vereenvoudigt het de naleving, vermindert het risico op datalekken en verbetert het uw algehele beveiligingspositie. Door de effectieve implementatie van Azure Key Vault, gecombineerd met best practices op het gebied van beveiliging en automatisering, kunnen ontwikkelaars en operators zich concentreren op innovatie, wetende dat hun inloggegevens en sleutels beschermd zijn. Met deze praktische gids kunnen beveiligingsprofessionals Azure Key Vault gebruiken om geheimen en certificaten veilig en efficiënt te beheren, waardoor de integriteit en vertrouwelijkheid van hun applicaties en gegevens in Azure wordt gewaarborgd.
Referenties:
[1]Microsoft Leer. Wat is Azure Key Vault?. Beschikbaar op: https://learn.microsoft.com/pt-br/azure/key-vault/general/overview [2] Microsoft Leer. Best practices voor het beheren van geheimen in Azure Key Vault. Beschikbaar op: https://learn.microsoft.com/pt-br/azure/key-vault/secrets/secrets-best-practices [3] Microsoft Leer. Over Azure Key Vault-certificaten. Beschikbaar op: https://learn.microsoft.com/pt-br/azure/key-vault/certificates/about-certificates