💼 Management Samenvatting
SSL enforcement voor Azure Database for PostgreSQL dwingt versleutelde client-verbindingen af via TLS, waardoor man-in-the-middle-aanvallen en credential-interceptie tijdens database-communicatie worden voorkomen. Deze maatregel is essentieel voor het beschermen van gevoelige data in transit en verplicht onder PCI-DSS en de AVG.
Onversleutelde database-verbindingen vormen een kritiek beveiligingsrisico voor PostgreSQL-databases. Wanneer clients zonder SSL/TLS-versleuteling verbinden, worden database-credentials inclusief gebruikersnamen en wachtwoorden in plaintext over het netwerk verzonden, wat password sniffing via network monitoring tools mogelijk maakt. Query-data en resultsets zijn leesbaar tijdens transit, wat betekent dat gevoelige bedrijfsinformatie of persoonsgegevens kunnen worden onderschept door aanvallers die netwerkverkeer monitoren. Man-in-the-middle (MITM) aanvallen worden mogelijk waarbij aanvallers zich tussen client en server positioneren om verkeer te onderscheppen, lezen en zelfs manipuleren, wat tot data corruption of ongeautoriseerde wijzigingen kan leiden. Deze risico's zijn vooral acuut op publieke netwerken zoals WiFi-hotspots, maar ook binnen bedrijfsnetwerken waar insider threats of gecompromitteerde systemen aanwezig kunnen zijn. Daarnaast ontstaan compliance-overtredingen met vrijwel alle moderne security frameworks: de AVG vereist passende technische maatregelen waaronder versleuteling van persoonsgegevens in transit, PCI-DSS v4.0 Requirement 4.1 mandateert versleuteling van cardholder data tijdens transmissie, ISO 27001 controle A.10.1.1 eist cryptografische maatregelen voor data in transit, en NIS2 Artikel 21 verplicht versleuteling van gevoelige communicatie. SSL enforcement lost al deze problemen op door ervoor te zorgen dat ALLE client-verbindingen verplicht TLS-versleuteld zijn zonder mogelijkheid voor fallback naar onversleuteld, onversleutelde verbindingspogingen automatisch worden geweigerd door de database server, credentials en query-data volledig beschermd zijn tijdens transit, en compliance wordt gewaarborgd met alle relevante security frameworks.
Connection:
Connect-AzAccountRequired Modules: Az.PostgreSql
Implementatie
Deze maatregel configureert SSL enforcement voor Azure Database for PostgreSQL servers waarbij de ssl_enforcement server-parameter wordt ingeschakeld op 'ON'. Deze configuratie kan worden uitgevoerd via Azure Portal onder Connection security settings of via PowerShell voor geautomatiseerde deployment. Wanneer SSL enforcement actief is, weigert de PostgreSQL server alle verbindingspogingen die geen SSL/TLS-versleuteling gebruiken, wat betekent dat clients verplicht SSL connection strings moeten gebruiken met minimaal sslmode=require. Voor productie-omgevingen wordt sterk aanbevolen om sslmode=verify-full te gebruiken, wat niet alleen versleuteling afdwingt maar ook het server-certificaat valideert om te beschermen tegen MITM-aanvallen waar een aanvaller een rogue server opzet. Het server-certificaat kan worden gedownload van Azure en gedistribueerd naar clients voor certificaat-validatie. Na het inschakelen van SSL enforcement moeten alle applicatie connection strings worden bijgewerkt om SSL te specificeren, bijvoorbeeld: 'host=myserver.postgres.database.azure.com port=5432 dbname=mydb user=myuser password=mypass sslmode=require'. De minimum TLS versie moet worden ingesteld op 1.2 of hoger om kwetsbare oudere TLS-versies te blokkeren. Na implementatie moet connectivity grondig worden getest om te verifiëren dat alle applicaties succesvol via SSL verbinden. Connection failures waarbij clients proberen zonder SSL te verbinden, worden gelogd en kunnen worden gemonitord voor troubleshooting of security incident-detectie. Deze implementatie is kosteloos (geen extra Azure-kosten), kan binnen 1-2 uur worden geïmplementeerd, en is een non-negotiable security control voor alle productie PostgreSQL-databases die gevoelige data bevatten.
- Azure Portal → Azure Database for PostgreSQL servers → Selecteer specifieke server.
- Klik in linker menu onder Settings op 'Connection security'.
- Zet 'Enforce SSL connection' op 'ENABLED' (standaard vaak DISABLED voor oudere servers).
- Stel 'Minimum TLS version' in op '1.2' (aanbevolen standaard 2025, blokkeert vulnerable TLS 1.0/1.1).
- Klik 'Save' - wijziging is instant actief. Bestaande non-SSL connections worden onmiddellijk verbroken. Plan dit tijdens maintenance window.
- Identificeer alle applicaties die PostgreSQL benaderen: productie-apps, development, CI/CD, admin tools.
- Update connection strings met SSL parameter: Basis: postgresql://user:pass@server.postgres.database.azure.com:5432/db?sslmode=require, Met CA verification (aanbevolen): sslmode=verify-ca&sslrootcert=/path/to/cert.pem, Maximum security (productie): sslmode=verify-full&sslrootcert=/path/to/cert.pem.
- Download Azure PostgreSQL root certificate via Microsoft Learn documentation: BaltimoreCyberTrustRoot.crt.pem of DigiCertGlobalRootG2.crt.pem.
- Update connection strings in: Application config files, Environment variables, CI/CD pipeline variables, Infrastructure-as-Code templates.
- SSL mode advies: Development/test = sslmode=require acceptable, Production = sslmode=verify-full MANDATORY.
- Test elke applicatie: Start app, monitor logs voor connection errors, verify database queries, check end-to-end functionality.
- Test via psql: psql 'postgresql://user@server.postgres.database.azure.com:5432/db?sslmode=require'
- Common errors: 'SSL required' = add sslmode parameter, 'certificate verify failed' = download correct cert en update sslrootcert path, 'CN mismatch' = use FQDN niet IP.
- Rollback plan (emergency only): Temporarily disable SSL, fix connections binnen 24 uur, re-enable SSL.
Vereisten
- Azure Database voor PostgreSQL server
- PostgreSQL client drivers met SSL support
- Applicatie connection strings updaten (sslmode=require)
- PowerShell Az.PostgreSql module
- Test database connections na SSL enforcement
Implementatie
Gebruik PowerShell-script postgresql-ssl-afgedwongen.ps1 (functie Invoke-Remediation) – Schakelt SSL enforcement in voor alle PostgreSQL servers.
**FASE 1: SSL Enforcement Inschakelen op PostgreSQL Server (Duur: 10 minuten)**
- Azure Portal → Azure Database for PostgreSQL servers → Selecteer specifieke server.
- Klik in linker menu onder Settings op 'Connection security'.
- Zet 'Enforce SSL connection' op 'ENABLED' (standaard vaak DISABLED voor oudere servers).
- Stel 'Minimum TLS version' in op '1.2' (aanbevolen standaard 2025, blokkeert vulnerable TLS 1.0/1.1).
- Klik 'Save' - wijziging is instant actief. Bestaande non-SSL connections worden onmiddellijk verbroken. Plan dit tijdens maintenance window.
**FASE 2: Applicatie Connection Strings Updaten (Duur: 30-60 minuten)**
- Identificeer alle applicaties die PostgreSQL benaderen: productie-apps, development, CI/CD, admin tools.
- Update connection strings met SSL parameter: Basis: postgresql://user:pass@server.postgres.database.azure.com:5432/db?sslmode=require, Met CA verification (aanbevolen): sslmode=verify-ca&sslrootcert=/path/to/cert.pem, Maximum security (productie): sslmode=verify-full&sslrootcert=/path/to/cert.pem.
- Download Azure PostgreSQL root certificate via Microsoft Learn documentation: BaltimoreCyberTrustRoot.crt.pem of DigiCertGlobalRootG2.crt.pem.
- Update connection strings in: Application config files, Environment variables, CI/CD pipeline variables, Infrastructure-as-Code templates.
- SSL mode advies: Development/test = sslmode=require acceptable, Production = sslmode=verify-full MANDATORY.
**FASE 3: Connectivity Testing (Duur: 30 minuten)**
- Test elke applicatie: Start app, monitor logs voor connection errors, verify database queries, check end-to-end functionality.
- Test via psql: psql 'postgresql://user@server.postgres.database.azure.com:5432/db?sslmode=require'
- Common errors: 'SSL required' = add sslmode parameter, 'certificate verify failed' = download correct cert en update sslrootcert path, 'CN mismatch' = use FQDN niet IP.
- Rollback plan (emergency only): Temporarily disable SSL, fix connections binnen 24 uur, re-enable SSL.
⏱️ **Totale Implementatietijd**: 1-2 uur (SSL enable 10 min, connection strings 30-60 min, testing 30 min).
💰 **Kosten**: SSL Enforcement is gratis - geen extra Azure-kosten. Performance impact < 1 procent. Totale kosten: €0.
Monitoring
Gebruik PowerShell-script postgresql-ssl-enforced.ps1 (functie Invoke-Monitoring) – Controleren.
Het monitoren van SSL-naleving voor Azure Database for PostgreSQL vormt een kritiek onderdeel van de continue beveiligingsbewaking. Na implementatie van SSL enforcement is het essentieel om te verifiëren dat alle database-verbindingen daadwerkelijk versleuteld zijn en dat de configuratie niet onbedoeld wordt gewijzigd. Een effectief monitoringprogramma voorkomt configuratiedrift, detecteert beveiligingsincidenten vroegtijdig en biedt auditbewijs voor compliance-verificatie.
PostgreSQL server metrics bieden waardevolle inzichten in de SSL-verbindingsstatus. Azure Monitor verzamelt automatisch metrische gegevens over database-verbindingen, waaronder het aantal mislukte verbindingspogingen. Wanneer SSL enforcement actief is, worden alle verbindingspogingen zonder SSL/TLS-versleuteling automatisch geweigerd door de database server. Deze mislukte verbindingen worden gelogd als connection failures met specifieke SSL-gerelateerde foutcodes. Door deze metrics regelmatig te analyseren, kunnen beheerders problemen met client-applicaties identificeren die nog niet zijn bijgewerkt om SSL te gebruiken. Een plotselinge toename van connection failures na het inschakelen van SSL enforcement wijst meestal op applicaties die nog oude connection strings zonder SSL-parameters gebruiken. Deze metrics moeten worden geconfigureerd met alertregels die waarschuwen wanneer het aantal mislukte verbindingen een drempelwaarde overschrijdt, wat kan duiden op een wijdverbreid probleem met SSL-configuratie in de applicatielaag.
Application logs vormen een tweede belangrijke bron van monitoringinformatie. Moderne applicaties loggen doorgaans SSL-handshake-informatie en verbindingsstatussen. Door applicatielogs te monitoren op SSL-gerelateerde berichten, kunnen beheerders verifiëren dat applicaties succesvol SSL-verbindingen tot stand brengen. Logberichten zoals 'SSL connection established' of 'TLS handshake completed' bevestigen dat versleuteling actief is. Daarentegen wijzen foutmeldingen zoals 'SSL required' of 'connection refused: SSL required' op applicaties die nog niet correct zijn geconfigureerd. Het is aanbevolen om een gecentraliseerd logbeheersysteem te gebruiken, zoals Azure Log Analytics of een SIEM-oplossing, om logs van alle applicaties die PostgreSQL gebruiken te verzamelen en te analyseren. Dit maakt het mogelijk om een volledig beeld te krijgen van SSL-naleving binnen het gehele applicatielandschap.
Configuration drift detection is cruciaal voor het behouden van SSL enforcement. Ondanks dat SSL enforcement eenmaal is ingeschakeld, bestaat het risico dat configuratie-instellingen onbedoeld worden gewijzigd, bijvoorbeeld tijdens server-updates, migraties of door onjuiste PowerShell-scripts. Azure Policy kan worden gebruikt om automatisch te controleren of SSL enforcement nog steeds actief is op alle PostgreSQL servers. Wanneer een server wordt gedetecteerd waarbij SSL enforcement is uitgeschakeld, moet onmiddellijk een alert worden gegenereerd naar het security team. Deze alerts moeten worden geconfigureerd met hoge prioriteit, omdat een enkele server zonder SSL enforcement een significant beveiligingsrisico vormt. Automatische remediatie kan worden geïmplementeerd om SSL enforcement automatisch opnieuw in te schakelen wanneer configuratiedrift wordt gedetecteerd, hoewel dit altijd gepaard moet gaan met een onderzoek naar de oorzaak van de wijziging.
Periodieke verificatie van alle applicaties die PostgreSQL gebruiken is essentieel voor het waarborgen van continue SSL-naleving. Hoewel initiële implementatie alle connection strings zou moeten bijwerken, kunnen nieuwe applicaties worden toegevoegd of bestaande applicaties worden bijgewerkt zonder juiste SSL-configuratie. Een maandelijks auditproces moet worden geïmplementeerd waarbij alle applicaties worden gecontroleerd op correcte SSL-configuratie in hun connection strings. Dit kan worden geautomatiseerd door connection strings te scannen in configuratiebestanden, environment variables en Infrastructure-as-Code templates. Applicaties die connection strings zonder SSL-parameters gebruiken, moeten worden geïdentificeerd en bijgewerkt. Daarnaast moeten netwerkverkeeranalyses worden uitgevoerd om te verifiëren dat alle database-communicatie daadwerkelijk versleuteld is. Tools zoals Azure Network Watcher kunnen worden gebruikt om netwerkverkeer te analyseren en te bevestigen dat alle PostgreSQL-verbindingen TLS-versleuteling gebruiken.
TLS-versie monitoring is een belangrijk aspect van SSL-naleving. Hoewel SSL enforcement versleuteling afdwingt, is het ook essentieel om te verifiëren dat alleen veilige TLS-versies worden gebruikt. Oudere TLS-versies zoals TLS 1.0 en TLS 1.1 bevatten bekende beveiligingskwetsbaarheden en moeten worden geblokkeerd. De minimum TLS-versie moet worden ingesteld op 1.2 of hoger, en idealiter op 1.3 voor maximale beveiliging. Monitoring moet verifiëren dat deze instelling correct is geconfigureerd en niet wordt gewijzigd. Azure Monitor kan worden gebruikt om TLS-handshake-informatie te verzamelen, inclusief de TLS-versie die wordt gebruikt voor elke verbinding. Verbindingen die oudere TLS-versies gebruiken, moeten worden geïdentificeerd en geblokkeerd.
Certificaatvalidatie monitoring is cruciaal voor het detecteren van man-in-the-middle-aanvallen. Wanneer applicaties sslmode=verify-full gebruiken, valideren ze niet alleen versleuteling maar ook het servercertificaat. Monitoring moet verifiëren dat certificaatvalidatie correct werkt en dat certificaatfouten worden gedetecteerd en gelogd. Certificaatfouten kunnen wijzen op MITM-aanvallen waarbij een aanvaller probeert een valse server te presenteren. Alle certificaatvalidatiefouten moeten worden onderzocht als potentiële beveiligingsincidenten. Daarnaast moeten certificaatvervaldatums worden gemonitord om te voorkomen dat certificaten verlopen en verbindingen worden verbroken.
Performance monitoring is belangrijk om te verifiëren dat SSL enforcement geen negatieve impact heeft op databaseprestaties. Hoewel moderne TLS-implementaties zeer efficiënt zijn, moet de performance impact worden gemonitord om te verifiëren dat deze binnen acceptabele grenzen blijft. Azure Monitor biedt metrics over queryprestaties, verbindingstijden en doorvoer. Deze metrics moeten worden vergeleken voor en na het inschakelen van SSL enforcement om te verifiëren dat de performance impact minimaal is. Eventuele significante performance degradatie moet worden onderzocht, hoewel dit zeldzaam is bij moderne TLS-implementaties.
Compliance reporting vereist gedetailleerde monitoringgegevens voor auditdoeleinden. Alle monitoringdata moet worden opgeslagen met een bewaartermijn van minimaal zeven jaar voor compliance-verificatie. Reports moeten worden gegenereerd die aantonen dat SSL enforcement actief is, dat alle verbindingen versleuteld zijn, en dat configuratiedrift wordt gedetecteerd en gecorrigeerd. Deze reports zijn essentieel voor audits van frameworks zoals PCI-DSS, AVG, ISO 27001 en NIS2. Automatische reportgeneratie moet worden geïmplementeerd om maandelijks compliance-status te documenteren.
Compliance en Auditing
SSL enforcement voor Azure Database for PostgreSQL is een verplichte beveiligingsmaatregel die wordt vereist door vrijwel alle moderne cybersecurity frameworks en compliance-standaarden. Het niet implementeren van SSL enforcement resulteert in directe compliance-overtredingen en auditfalen voor organisaties die onder deze frameworks vallen. Deze sectie beschrijft de specifieke vereisten per framework en de auditbewijzen die moeten worden verzameld om compliance aan te tonen.
De CIS Azure Foundations Benchmark v3.0.0 bevat specifieke controles voor databasebeveiliging, waaronder control 4.3.1 die expliciet vereist dat 'Enforce SSL connection' is ingeschakeld voor PostgreSQL Database Servers. Deze controle is geclassificeerd als Level 1, wat betekent dat het een fundamentele beveiligingsmaatregel is die moet worden geïmplementeerd in alle omgevingen. Tijdens een CIS-audit zullen auditors de Azure Portal-configuratie controleren of PowerShell-scripts uitvoeren om te verifiëren dat SSL enforcement actief is. Auditbewijs moet screenshots of geautomatiseerde scriptoutput bevatten die aantonen dat de ssl_enforcement parameter is ingesteld op 'ON' voor alle PostgreSQL servers. Daarnaast moeten connection strings worden gecontroleerd om te verifiëren dat applicaties SSL-parameters gebruiken. Organisaties die deze controle niet implementeren, zullen falen op de CIS Azure Foundations Benchmark audit, wat kan leiden tot verlies van certificeringen of contractuele verplichtingen met klanten die CIS-compliance vereisen.
ISO 27001:2022 bevat meerdere controles die SSL enforcement vereisen voor database-verbindingen. Controle A.10.1.1 (Cryptographic controls) vereist dat organisaties cryptografische controles implementeren om de vertrouwelijkheid, authenticiteit en integriteit van informatie te beschermen. Versleuteling van data in transit is een fundamenteel onderdeel van deze controle. Controle A.13.1.1 (Network controls) vereist dat netwerkbeveiligingscontroles worden geïmplementeerd om netwerkdiensten te beschermen. SSL/TLS-versleuteling voor database-verbindingen valt onder beide controles. Tijdens een ISO 27001-audit zullen auditors de implementatie van cryptografische controles beoordelen en verifiëren dat database-communicatie versleuteld is. Auditbewijs moet documentatie bevatten van de SSL-configuratie, testresultaten die aantonen dat onversleutelde verbindingen worden geweigerd, en monitoringlogs die bevestigen dat alle verbindingen versleuteld zijn. Het niet implementeren van SSL enforcement resulteert in een non-conformity finding voor ISO 27001, wat kan leiden tot verlies van certificering of het niet behalen van hercertificering.
De NIS2-richtlijn (Network and Information Systems Directive 2) is van toepassing op essentiële en belangrijke entiteiten in de Europese Unie, inclusief Nederlandse overheidsorganisaties en kritieke sectoren. Artikel 21 van NIS2 vereist dat essentiële en belangrijke entiteiten passende technische en organisatorische maatregelen nemen om de beveiliging van netwerk- en informatiesystemen te waarborgen. Versleuteling van gevoelige communicatie, inclusief database-verbindingen, is een expliciete vereiste onder dit artikel. Nederlandse organisaties die onder NIS2 vallen, moeten kunnen aantonen dat alle database-verbindingen versleuteld zijn. Auditbewijs moet configuratiedocumentatie bevatten, monitoringrapporten die aantonen dat SSL enforcement actief is, en incident response procedures voor het detecteren en reageren op configuratiedrift. Het niet naleven van NIS2-vereisten kan leiden tot boetes en verplichte beveiligingsmaatregelen opgelegd door de Autoriteit Persoonsgegevens of andere toezichthouders.
De Algemene Verordening Gegevensbescherming (AVG/GDPR) vereist onder Artikel 32 (Security of processing) dat organisaties passende technische en organisatorische maatregelen nemen om persoonsgegevens te beschermen. Versleuteling van persoonsgegevens tijdens transmissie is een expliciet genoemd voorbeeld van een passende technische maatregel. Wanneer PostgreSQL-databases persoonsgegevens bevatten, is SSL enforcement niet alleen aanbevolen maar verplicht onder de AVG. Het niet implementeren van SSL enforcement voor databases met persoonsgegevens kan worden beschouwd als een schending van Artikel 32, wat kan leiden tot boetes tot 4% van de wereldwijde jaaromzet of €20 miljoen, afhankelijk van wat hoger is. Auditbewijs voor AVG-compliance moet aantonen dat alle verbindingen naar databases met persoonsgegevens versleuteld zijn, dat configuratie wordt gemonitord om configuratiedrift te detecteren, en dat incident response procedures aanwezig zijn. Daarnaast moeten Data Protection Impact Assessments (DPIA's) SSL enforcement documenteren als een beveiligingsmaatregel voor databases met persoonsgegevens.
PCI-DSS v4.0 Requirement 4.1 vereist expliciet dat cardholder data tijdens transmissie over openbare netwerken wordt versleuteld met sterke cryptografie. Hoewel deze vereiste primair gericht is op netwerkverkeer tussen systemen, wordt database-communicatie ook beschouwd als transmissie van cardholder data wanneer databases creditcardinformatie bevatten. Organisaties die PCI-DSS-naleving moeten aantonen, moeten SSL enforcement implementeren voor alle PostgreSQL-databases die cardholder data bevatten. Tijdens een PCI-DSS-audit zullen Qualified Security Assessors (QSA's) de databaseconfiguratie controleren en netwerkverkeer analyseren om te verifiëren dat versleuteling actief is. Auditbewijs moet configuratiescreenshots bevatten, netwerkverkeeranalyses die aantonen dat data versleuteld is, en documentatie van SSL-certificaatbeheer. Het niet implementeren van SSL enforcement resulteert in een failed requirement voor PCI-DSS, wat kan leiden tot verlies van de mogelijkheid om creditcardbetalingen te verwerken en aanzienlijke boetes van creditcardmaatschappijen.
De BIO Baseline Informatiebeveiliging Overheid is de Nederlandse beveiligingsstandaard voor overheidsorganisaties. Thema 13 (Netwerkbeveiliging) bevat specifieke controles voor versleuteling van netwerkverkeer. Controle 13.01.02 vereist dat netwerkverkeer wordt versleuteld wanneer dit gevoelige informatie bevat. Database-verbindingen die persoonsgegevens, bedrijfsgevoelige informatie of andere gevoelige data bevatten, vallen onder deze controle. Nederlandse overheidsorganisaties moeten SSL enforcement implementeren voor alle PostgreSQL-databases om te voldoen aan BIO-vereisten. Auditbewijs moet configuratiedocumentatie bevatten, testresultaten die aantonen dat onversleutelde verbindingen worden geweigerd, en monitoringrapporten die bevestigen dat alle verbindingen versleuteld zijn. Het niet naleven van BIO-vereisten kan leiden tot negatieve auditbevindingen en verplichte herstelmaatregelen.
Auditbewijs verzameling is essentieel voor het aantonen van compliance met alle relevante frameworks. Organisaties moeten systematisch bewijs verzamelen dat SSL enforcement actief is en dat alle verbindingen versleuteld zijn. Dit bewijs moet worden opgeslagen met een bewaartermijn die overeenkomt met de langste vereiste bewaartermijn van alle toepasselijke frameworks, typisch minimaal zeven jaar. Auditbewijs moet configuratiescreenshots of geautomatiseerde scriptoutput bevatten die aantonen dat SSL enforcement is ingeschakeld, connection string audits die verifiëren dat alle applicaties SSL-parameters gebruiken, monitoringlogs die bevestigen dat alle verbindingen versleuteld zijn, en incident response documentatie voor configuratiedrift events. Automatische compliance reporting kan worden geïmplementeerd om maandelijks compliance-status te documenteren en auditbewijs te genereren zonder handmatige inspanning.
Compliance monitoring en reporting moeten worden geïntegreerd in de dagelijkse beveiligingsoperaties. Automatische compliance checks moeten worden geconfigureerd om regelmatig te verifiëren dat SSL enforcement actief is en dat configuratiedrift wordt gedetecteerd. Compliance dashboards moeten real-time status tonen van SSL-naleving voor alle PostgreSQL servers, waardoor beheerders snel kunnen identificeren wanneer compliance-vereisten niet worden nageleefd. Wanneer non-compliance wordt gedetecteerd, moeten automatische alerts worden gegenereerd naar het security team en compliance officers. Incident response procedures moeten worden gedocumenteerd voor het snel herstellen van compliance wanneer configuratiedrift wordt gedetecteerd. Deze geïntegreerde aanpak zorgt ervoor dat organisaties continu voldoen aan compliance-vereisten en klaar zijn voor audits op elk moment.
Remediatie
Gebruik PowerShell-script postgresql-ssl-enforced.ps1 (functie Invoke-Remediation) – Herstellen.
Remediatie van SSL enforcement voor Azure Database for PostgreSQL omvat het identificeren van servers waar SSL enforcement niet actief is en het systematisch inschakelen van deze beveiligingsmaatregel. Het remediatieproces moet worden uitgevoerd met zorgvuldige planning om te voorkomen dat bestaande applicaties worden verstoord. Deze sectie beschrijft de stapsgewijze aanpak voor het herstellen van SSL enforcement op PostgreSQL servers die momenteel onversleutelde verbindingen toestaan.
De eerste stap in het remediatieproces is het identificeren van alle PostgreSQL servers waar SSL enforcement niet actief is. Dit kan worden gedaan via Azure Portal door handmatig elke server te controleren, maar voor organisaties met meerdere servers is geautomatiseerde detectie efficiënter. PowerShell-scripts kunnen worden gebruikt om alle PostgreSQL servers in een abonnement of resourcegroep te scannen en te identificeren waar de ssl_enforcement parameter is ingesteld op 'OFF' of 'DISABLED'. Azure Policy kan worden geconfigureerd om automatisch servers te identificeren die niet voldoen aan SSL enforcement-vereisten. Deze policy kan worden ingesteld om continu te monitoren en alerts te genereren wanneer nieuwe servers worden gemaakt zonder SSL enforcement of wanneer bestaande servers worden gewijzigd om SSL enforcement uit te schakelen.
Voordat SSL enforcement wordt ingeschakeld, moet een grondige inventarisatie worden uitgevoerd van alle applicaties die verbinding maken met de PostgreSQL server. Dit omvat productie-applicaties, development-omgevingen, CI/CD-pipelines, administratieve tools en monitoring-systemen. Elke applicatie moet worden gecontroleerd op het gebruik van connection strings zonder SSL-parameters. Connection strings kunnen worden gevonden in configuratiebestanden, environment variables, secrets management systems zoals Azure Key Vault, Infrastructure-as-Code templates zoals ARM templates of Terraform, en applicatiecode zelf. Deze inventarisatie is cruciaal omdat het inschakelen van SSL enforcement onmiddellijk alle verbindingen zonder SSL zal verbreken, wat kan leiden tot applicatiestoringen als connection strings niet eerst worden bijgewerkt.
Na inventarisatie moeten alle connection strings worden bijgewerkt om SSL-parameters toe te voegen. De minimale vereiste is het toevoegen van sslmode=require aan elke connection string. Voor productie-omgevingen wordt sterk aanbevolen om sslmode=verify-full te gebruiken, wat niet alleen versleuteling afdwingt maar ook certificaatvalidatie uitvoert. Wanneer verify-ca of verify-full wordt gebruikt, moet het Azure PostgreSQL root certificate worden gedownload en gedistribueerd naar alle clients. Connection strings moeten worden bijgewerkt in alle locaties waar ze worden gebruikt: configuratiebestanden moeten worden gewijzigd en opnieuw gedeployed, environment variables moeten worden bijgewerkt in alle omgevingen, secrets in Azure Key Vault of andere secrets management systems moeten worden bijgewerkt, en Infrastructure-as-Code templates moeten worden gewijzigd en opnieuw toegepast. Het is belangrijk om een change management proces te volgen waarbij wijzigingen worden getest in development-omgevingen voordat ze worden toegepast in productie.
Het inschakelen van SSL enforcement moet worden uitgevoerd tijdens een gepland onderhoudsvenster om de impact op productie-applicaties te minimaliseren. Hoewel SSL enforcement onmiddellijk actief wordt na het opslaan van de configuratie, kunnen bestaande verbindingen worden verbroken als applicaties nog niet zijn bijgewerkt. Het is aanbevolen om eerst alle applicaties bij te werken en te testen voordat SSL enforcement wordt ingeschakeld op de server. Wanneer dit niet mogelijk is, moet SSL enforcement worden ingeschakeld tijdens een onderhoudsvenster wanneer applicaties kunnen worden herstart met bijgewerkte connection strings. De configuratie kan worden gewijzigd via Azure Portal door naar de PostgreSQL server te navigeren, 'Connection security' te selecteren in het linkermenu, 'Enforce SSL connection' in te schakelen, en de minimum TLS-versie in te stellen op 1.2 of hoger. Na het opslaan van de wijziging is SSL enforcement onmiddellijk actief.
Na het inschakelen van SSL enforcement moet uitgebreide testing worden uitgevoerd om te verifiëren dat alle applicaties succesvol kunnen verbinden. Elke applicatie moet worden getest door deze te starten en te verifiëren dat database-verbindingen succesvol tot stand komen. Applicatielogs moeten worden gecontroleerd op SSL-gerelateerde foutmeldingen. Database-queries moeten worden uitgevoerd om te verifiëren dat end-to-end functionaliteit werkt. Command-line tools zoals psql kunnen worden gebruikt om handmatig verbindingen te testen met verschillende SSL-modes. Wanneer fouten worden gedetecteerd, moeten connection strings worden gecorrigeerd en opnieuw worden getest. Common errors omvatten 'SSL required' wat aangeeft dat sslmode parameter ontbreekt, 'certificate verify failed' wat aangeeft dat het certificaatpad incorrect is of het certificaat ontbreekt, en 'CN mismatch' wat aangeeft dat de hostname niet overeenkomt met het certificaat.
In noodsituaties waarbij kritieke applicaties niet kunnen verbinden na het inschakelen van SSL enforcement, kan een tijdelijke rollback worden uitgevoerd door SSL enforcement tijdelijk uit te schakelen. Dit moet echter alleen worden gedaan in noodsituaties en moet gepaard gaan met een plan om connection strings binnen 24 uur te corrigeren en SSL enforcement opnieuw in te schakelen. Rollback moet worden beschouwd als een security incident en moet worden gedocumenteerd met een incident report. Het security team moet onmiddellijk worden geïnformeerd wanneer rollback wordt uitgevoerd. Na rollback moet een root cause analysis worden uitgevoerd om te identificeren waarom applicaties niet konden verbinden, en connection strings moeten worden gecorrigeerd voordat SSL enforcement opnieuw wordt ingeschakeld.
Geautomatiseerde remediatie kan worden geïmplementeerd om SSL enforcement automatisch in te schakelen wanneer servers worden gedetecteerd zonder deze configuratie. Azure Policy kan worden geconfigureerd met een remediatie-taak die automatisch SSL enforcement inschakelt wanneer een server wordt gedetecteerd die niet voldoet aan de policy. Deze geautomatiseerde aanpak zorgt ervoor dat nieuwe servers automatisch worden geconfigureerd met SSL enforcement en dat configuratiedrift snel wordt gecorrigeerd. Echter, geautomatiseerde remediatie moet worden gebruikt met voorzichtigheid omdat het onmiddellijk verbindingen kan verbreken als applicaties niet correct zijn geconfigureerd. Het is aanbevolen om geautomatiseerde remediatie te combineren met monitoring en alerting zodat het security team onmiddellijk wordt geïnformeerd wanneer remediatie wordt uitgevoerd.
Documentatie van het remediatieproces is essentieel voor compliance en auditdoeleinden. Alle stappen die worden uitgevoerd tijdens remediatie moeten worden gedocumenteerd, inclusief welke servers zijn geïdentificeerd, welke applicaties zijn bijgewerkt, wanneer SSL enforcement is ingeschakeld, en welke tests zijn uitgevoerd. Deze documentatie moet worden opgeslagen als auditbewijs en moet beschikbaar zijn voor compliance-audits. Incident reports moeten worden gegenereerd wanneer rollback wordt uitgevoerd of wanneer applicaties worden verstoord tijdens remediatie. Deze documentatie helpt ook bij toekomstige remediatie-inspanningen door lessons learned vast te leggen en best practices te identificeren.
Compliance & Frameworks
- CIS M365: Control 4.3.1 (L1) - CIS Azure Foundations v3.0.0 - 4.3.1: zorg ervoor dat 'dwing af SSL connection' is ingeschakeld voor PostgreSQL Database Server
- BIO: 13.01.02 - BIO Baseline Informatiebeveiliging Overheid - Thema 13: Netwerkbeveiliging - Versleuteling van netwerkverkeer
- ISO 27001:2022: A.10.1.1, A.13.1.1 - Cryptografische controles en netwerkbeveiliging
- NIS2: Artikel - versleuteling in transit voor database connecties
Automation
Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).
Risico zonder implementatie
Management Samenvatting
SSL Enforcement voor Azure PostgreSQL dwingt TLS-versleuteling af voor ALLE database-verbindingen door onversleutelde connections automatisch te weigeren, wat data-in-transit encryption garandeert. Implementatie: Azure Portal → PostgreSQL server → Connection security → Enforce SSL connection → ON, stel Minimum TLS version op 1.2 (modern standaard, blokkeert vulnerable TLS 1.0/1.1), en update applicatie connection strings met sslmode=require parameter (bijvoorbeeld: postgresql://user:pass@server.postgres.database.azure.com:5432/db?sslmode=require). SSL modes: sslmode=require (versleuteld maar certificate validation disabled - minimum acceptable), sslmode=verify-ca (verify server certificate tegen CA - aanbevolen), sslmode=verify-full (verify certificate + hostname match - maximum security voor productie). Client-side wijzigingen: update alle connection strings in application code, environment variables en CI/CD pipelines, download Azure PostgreSQL root certificate voor verify-ca/verify-full modes (beschikbaar via Microsoft Learn documentation), test database connectivity uitgebreid na SSL enable om broken applications te detecteren voordat productie-impact. Deze maatregel is absoluut verplicht voor ALLE Azure PostgreSQL servers zonder uitzonderingen (productie, development, test - credentials zijn altijd gevoelig), mandatory voor compliance met PCI-DSS 4.1, AVG Artikel 32, ISO 27001 A.10.1.1, CIS 4.3.1, NIS2 Artikel 21, en considered fundamental database security baseline door NIST, SANS, OWASP. Implementatie-effort: 1-2 uur (SSL enable op server 5 min, connection string updates in alle apps 30-60 min, testing 30 min), geen extra Azure-kosten (SSL is gratis included), instant actief na enable. Doorlopende inspanning: nul - eenmaal enabled blijft SSL permanent enforced. Return on investment komt van: eliminated credential theft via network sniffing, prevented data exfiltration via MITM attacks, compliance audit success voor alle frameworks, en zero implementation costs bij critical security value.
- Implementatietijd: 2 uur
- FTE required: 0.02 FTE