Bestuur van geheime en sertifikate met Azure Key Vault
14/08/2024
Hierdie tegniese en opvoedkundige artikel het ten doel om sekuriteitsontleders, IT-administrateurs en stelselingenieurs te lei in die gebruik van Azure Key Vault om geheime (soos wagwoorde, API-sleutels, verbindingstringe) en sertifikate (SSL/TLS) veilig te bestuur. Azure Key Vault is 'n wolkdiens wat 'n gesentraliseerde en veilige oplossing bied vir die berging en toegang tot hierdie kritieke items, wat die behoefte uitskakel om dit direk in kode- of konfigurasielêers in te sluit, wat 'n swak sekuriteitspraktyk is [1].
Inleiding
In die ontwikkeling en bedryf van moderne toepassings is die bestuur van geheime en sertifikate 'n konstante uitdaging. Databasisgeloofsbriewe, derdepartydiens-API-sleutels, enkripsiesleutels en SSL/TLS-sertifikate is sensitiewe bates wat, indien gekompromitteer, tot ernstige data-oortredings kan lei. Om dit onveilig te stoor, soos in gewone tekslêers, omgewingsveranderlikes, of direk in bronkode, hou 'n beduidende risiko in. Azure Key Vault is ontwerp om hierdie probleme op te los deur 'n veilige hardeware-gebaseerde bewaarplek (HSM) te verskaf om hierdie bates te beskerm, toegang streng beheer en lewensiklusbestuur te vereenvoudig [2].
Hierdie hoe-om-gids sal dek die skep van 'n Azure Key Vault, die byvoeging en herwinning van geheime en sertifikate, die opstel van toegangsbeleide en integrasie met ander Azure-dienste soos Azure App Service. Stap-vir-stap instruksies, voorbeeld Azure CLI-opdragte en valideringsmetodes sal verskaf word sodat die leser veilige bestuur van geheime en sertifikate kan implementeer, wat die sekuriteitsposisie van hul toepassings en wolkinfrastruktuur versterk.
Hoekom is Azure Key Vault van kardinale belang?
- Veilige berging: Beskerm geheime en enkripsiesleutels deur FIPS 140-2 Vlak 2-gevalideerde hardeware-sekuriteitsmodules (HSM'e) te gebruik.
- Gesentraliseerde toegangsbeheer: Laat jou toe om toegangstoestemmings tot geheime en sertifikate op 'n korrelvlak te bestuur deur Azure-rolgebaseerde toegangsbeheer (RBAC) of Key Vault-toegangsbeleide te gebruik.
- Lewensiklusbestuur: Fasiliteer geheime en sertifikaatrotasie, outomatiese vervaldatum en gebeurteniskennisgewing.
- Risikovermindering: Elimineer die behoefte om geloofsbriewe in kode- of konfigurasielêers te stoor, wat die risiko van lekkasie tot die minimum beperk.
- Monitering en oudit: Teken alle bewerkings op wat in Key Vault uitgevoer word, en verskaf ouditroetes vir nakoming en sekuriteitsondersoeke.
- Vereenvoudigde integrasie: Integreer maklik met ander Azure-dienste, soos Azure App Service, Azure Functions, Azure Virtual Machines en Azure DevOps.
Voorvereistes
Om Azure Key Vault te gebruik, benodig u die volgende items:
- Aktiewe Azure-intekening: 'n Azure-intekening om hulpbronne te skep en te bestuur.
- Administratiewe toegang: 'n Rekening met die 'Eienaar' of 'Bydraer'-rol in die Azure-intekening, of 'n pasgemaakte rol met toestemmings om Sleutelkluise te skep en te bestuur.
- Azure CLI of Azure PowerShell: Geïnstalleerde en gekonfigureerde opdragreëlnutsgoed om met Azure te kommunikeer.
- Opsioneel: Visual Studio-kode: Vir ontwikkeling en integrasietoetsing.
Stap vir stap: Bestuur geheime en sertifikate met Azure Key Vault
Kom ons skep 'n sleutelkluis, voeg 'n geheim en sertifikaat by en stel toegang op.
1. Skep 'n Azure Key Vault
Kom ons skep 'n sleutelkluis met die Azure CLI. U kan ook die Azure-portaal gebruik.
- Maak jou terminaal of PowerShell oop en meld aan by Azure:
bash az aanmeld -
Skep 'n hulpbrongroep (as jy nie reeds een het nie):
bash az-groep skep --naam RG-KeyVault-Artigos --ligging eastus -
Skep die Azure Key Vault. Kies 'n wêreldwye unieke naam vir jou sleutelkluis.
bash az keyvault skep --naam kv-artigos-seguranca-01 --hulpbrongroep RG-KeyVault-Artigos --ligging eastus --enabled-vir-template-ontplooiing waar--enabled-for-template-deployment true: Laat Sleutelkluis gebruik word vir sjabloon-ontplooiings, nuttig vir outomatisering.
2. Voeg 'n geheim by sleutelkluis
Kom ons voeg 'n databasiswagwoord as 'n geheim bydie.
-
Voeg 'n geheim genaamd 'DatabaseWagwoord' by met 'n voorbeeldwaarde:
bash az sleutelkluis geheime stel --kluisnaam kv-artigos-seguranca-01 --naam DatabasisWagwoord --waarde "S3cur3P@ssw0rd!" -
Haal die geheim op om te verifieer dat dit korrek gestoor is:
bash az sleutelkluis geheime wys --kluisnaam kv-artigos-seguranca-01 --naam DatabasisWagwoord --navraagwaarde -o tsv
3. Voeg 'n sertifikaat by sleutelkluis
Kom ons voeg 'n selfgetekende sertifikaat by vir demonstrasiedoeleindes. In produksie sal jy sertifikate van 'n betroubare CA gebruik.
-
Skep 'n selfondertekende sertifikaat in Key Vault:
bash az sleutelkluis sertifikaat skep --kluisnaam kv-artigos-seguranca-01 --naam MyWebAppCert --beleid "$(az sleutelkluis sertifikaat kry-verstek-beleid)" -
Gaan sertifikaatbesonderhede na:
bash az sleutelkluis sertifikaat wys --kluisnaam kv-artigos-seguranca-01 --naam MyWebAppCert
4. Opstel van toegangsbeleide
Om toepassings of gebruikers toe te laat om toegang tot geheime en sertifikate te kry, moet jy toegangsbeleide opstel. Kom ons gebruik Azure-rolgebaseerde toegangsbeheer (RBAC).
- Kry die
Object IDvan die toepassing of gebruiker wat toegang sal benodig. Vir 'n toepassing (Dienshoof), kan jy dit kry nadat jy dit by Azure AD geregistreer het. Vir 'n gebruiker, gebruikaz ad user show --id <user-principal-name> --query id -o tsv. - Ken 'n rol aan jou Sleutelkluis toe. Byvoorbeeld, om 'n toepassing toe te laat om geheime te lees:
bash # Voorbeeld: Ken die rol 'Key Vault Secrets User' toe aan 'n dienshoof az rolopdrag skep --rol "Key Vault Secrets User" --assignee-object-id <Object Application/User ID> --scope /subscriptions/<Your Subscriptions ID>/resourceGroups/RG-KeyVault-Artigos/providers/Microsoft.KeyVault/vaults/kvancatigos-01se- Wenk: Vir sertifikate kan jy die
Key Vault Certificate User-funksie gebruik.
- Wenk: Vir sertifikate kan jy die
5. Integreer met 'n Azure App Service (Voorbeeld)
Kom ons demonstreer hoe 'n toepassing 'n geheim van Key Vault kan verbruik.
- Skep 'n Azure App Service (as jy nie reeds een het nie):
bash az appservice plan create --name AppServicePlan-Artigos --resource-group RG-KeyVault-Artigos --sku B1 --is-linux az webapp create --hulpbrongroep RG-KeyVault-Artigos --plan AppServicePlan-Artigos --naam webapp-artigos-seguranca-01 -
Aktiveer bestuurde identiteit vir die Toepassingsdiens. Dit laat App Service toe om na Azure Key Vault te staaf sonder eksplisiete geloofsbriewe.
bash az webapp-identiteit toeken --hulpbrongroep RG-KeyVault-Artigos --naam webapp-artigos-seguranca-01 -
Gee die App Service-bestuurde identiteit toestemming om toegang tot die geheim in Key Vault te kry. Gebruik die
principalIdwat in die vorige stap verkry is.bash az keyvault stel-beleid --naam kv-artigos-seguranca-01 --object-id <principalManaged IdentityId> --secret-permissions kry lys- Wenk: Om RBAC te gebruik, ken die
Key Vault Secrets User-rol toe aan dieprincipalIdvan die bestuurde identiteit.
- Wenk: Om RBAC te gebruik, ken die
-
Stel 'n geheime verwysing in die Toepassingsdiens op. Dit laat die toepassing toe om toegang tot die geheim te kry as 'n omgewingsveranderlike.
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/secret"basePss/Data/secret" -
Nou kan jou toepassing (bv. ASP.NET Core, Node.js) die
DatabasePassword-geheim lees as 'n normale omgewingsveranderlike, en Azure App Service sal sorg dat dit op 'n veilige manier van Key Vault afgehaal word.
Bekragtiging en toetsing
Die validering van geheime en sertifikaatbestuur behels die verifiëring dat toegang slegs aan gemagtigde entiteite verleen word en dat geheime korrek herwin kan word.
1. Toets toegang tot geheime via Azure CLI
-
Probeer om toegang tot die geheim te kry met 'n rekening wat nie toestemmings het nie:
bash az login # Meld aan met 'n rekening sonder toestemmings az sleutelkluis geheime wys --kluisnaam kv-artigos-seguranca-01 --naam DatabasisWagwoord --navraagwaarde -o tsv- Verwagte resultaat: Die opdrag behoort te misluk met 'n
AuthorizationFailed-fout.
- Verwagte resultaat: Die opdrag behoort te misluk met 'n
-
Probeer om toegang tot die geheim te kry met 'n rekening wat toestemmings het (bv. die rekening wat Sleutel V geskep hetault of die App Service-bestuurde identiteit as jy van binne die toepassing toets).
bash az login # Meld aan met 'n rekening met toestemmings az sleutelkluis geheime wys --kluisnaam kv-artigos-seguranca-01 --naam DatabasisWagwoord --navraagwaarde -o tsv- Verwagte resultaat: Die opdrag moet die geheime waarde terugstuur.
2. Toets Sertifikaat Toegang
- Verifieer dat die sertifikaat deur 'n gemagtigde entiteit gelys en herwin kan word.
bash az sleutelkluis sertifikaatlys --kluisnaam kv-artigos-seguranca-01 az sleutelkluis sertifikaat wys --kluisnaam kv-artigos-seguranca-01 --naam MyWebAppCert- Verwagte resultaat: Opdragte moet sertifikaatbesonderhede terugstuur.
3. Kontroleer Sleutelkluis-ouditlogboeke
Alle bedrywighede in Key Vault word aangeteken en kan geoudit word.
- In die Azure-portaal, navigeer na jou Sleutelkluis (
kv-articles-seguranca-01). - Kies Aktiwiteitloglêers in die linkernavigasiepaneel.
- Jy sal 'n log sien van alle bewerkings wat uitgevoer is, insluitend die skep van geheime, sertifikate en toegangspogings.
Sekuriteitswenke en beste praktyke
- Beginsel van die minste voorreg: Gee slegs die nodige toestemmings (kry, lys, stel, verwyder) aan geheime en sertifikate. Vermy die verlening van oormatige toestemmings.
- Gereelde rotasie van geheime: Implementeer 'n proses om geheime en sertifikate gereeld te roteer om die risiko van kompromie te verminder.
- Managed Identities: Gebruik Managed Identities vir Azure-hulpbronne (Managed Identities) waar moontlik om na Key Vault te staaf, wat die behoefte om geloofsbriewe in jou kode te bestuur uitskakel.
- Korreltoegangsbeleide: Gebruik Key Vault- of Azure RBAC-toegangsbeleide om te beheer wie toegang het waartoe. Verkies RBAC vir fyner beheer.
- Monitering en waarskuwings: Stel waarskuwings op vir verdagte aktiwiteit in Sleutelkluis, soos mislukte toegangspogings of geheime uitvee.
- ** Sagte uitvee en suiwer beskerming **: Aktiveer sagte uitvee en suiwer beskerming in Key Vault om toevallige of kwaadwillige verlies van geheime en sertifikate te voorkom.
- Gereelde rugsteun: Alhoewel Sleutelkluis hoogs beskikbaar is, oorweeg dit om jou geheime en sertifikate te rugsteun, veral vir rampherstel-scenario's.
- Verval van geheime: Stel vervaldatums vir geheime en sertifikate om rotasie af te dwing en die gebruik van ou geloofsbriewe te vermy.
Algemene probleemoplossing
- Magtigingsfout (403 Verbode): Gaan die Key Vault-toegangsbeleide of RBAC-roltoewysings na vir die entiteit wat toegang probeer verkry. Maak seker dat die korrekte
Object IDofprincipalIdgebruik word. - Geheim/Sertifikaat nie gevind nie: Gaan die geheime/sertifikaatnaam en die Sleutelkluis-naam na. Maak seker dat die geheim/sertifikaat bestaan en nie uitgevee of verval is nie.
- Probleme met bestuurde identiteite: Verifieer dat bestuurde identiteit vir die Azure-hulpbron geaktiveer is en dat die korrekte toestemmings in Key Vault verleen is.
- Latency in Geheime Herwinning: In sommige gevalle kan daar 'n klein vertraging in die herwinning van geheime wees. Maak seker dat jou aansoek dit asinchronies hanteer.
- Verbindingsfoute: Gaan die netwerkinstellings van jou toepassing of virtuele masjien na. Maak seker dat daar geen brandmure of netwerksekuriteitsgroepe is wat toegang tot Key Vault blokkeer nie.
Gevolgtrekking
Azure Key Vault is 'n kritieke diens vir enige organisasie wat sy mees sensitiewe digitale bates in die wolk wil beskerm. Deur die bestuur van geheime en sertifikate in 'n veilige, hoogs beskikbare bewaarplek te sentraliseer, vereenvoudig dit voldoening, verminder die risiko van data-oortredings en verbeter u algehele sekuriteitsposisie. Effektiewe implementering van Azure Key Vault, gekombineer met sekuriteit en outomatisering beste praktyke, laat ontwikkelaars en operateurs toe om op innovasie te fokus, met die wete dat hul geloofsbriewe en sleutels beskerm word. Met hierdie praktiese gids sal sekuriteitspersoneel Azure Key Vault kan gebruik om geheime en sertifikate veilig en doeltreffend te bestuur, wat die integriteit en vertroulikheid van hul toepassings en data in Azure verseker.
Verwysings:
[1]Microsoft Learn. Wat is Azure Key Vault?. Beskikbaar by: https://learn.microsoft.com/pt-br/azure/key-vault/general/overview [2] Microsoft Learn. Beste praktyke vir die bestuur van geheime in Azure Key Vault. Beskikbaar by: https://learn.microsoft.com/pt-br/azure/key-vault/secrets/secrets-best-practices [3] Microsoft Learn. Oor Azure Key Vault-sertifikate. Beskikbaar by: https://learn.microsoft.com/pt-br/azure/key-vault/certificates/about-certificates