Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Dit artikel bevat informatie over aanbevolen procedures en richtlijnen waarmee u beveiliging voor SQL Server tot stand kunt brengen. Zie SQL Server-beveiligen voor een uitgebreide beoordeling van sql Server-beveiligingsfuncties.
Zie Azure SQL Database en SQL Managed Instance en SQL Server op virtuele Azure-machinesvoor specifieke best practices voor productbeveiliging.
Overzicht
Een gelaagde beveiligingsmethodologie biedt een diepgaande oplossing met behulp van meerdere beveiligingsmogelijkheden die zijn gericht op verschillende beveiligingsbereiken. De beveiligingsfuncties die beschikbaar zijn gesteld in SQL Server 2016 en verbeterd in latere releases, helpen beveiligingsrisico's tegen te gaan en goed beveiligde databasetoepassingen te bieden.
Azure voldoet aan verschillende branchevoorschriften en -standaarden waarmee u een compatibele oplossing kunt bouwen met SQL Server die wordt uitgevoerd op een virtuele machine. Zie Azure Trust Centervoor meer informatie over naleving van regelgeving met Azure.
Beveiliging op kolomniveau
Organisaties moeten vaak gegevens op kolomniveau beveiligen als gegevens met betrekking tot klanten, werknemers, handelsgeheimen, productgegevens, gezondheidszorg, financiële en andere gevoelige gegevens worden vaak opgeslagen in SQL Server-databases. Gevoelige kolommen omvatten vaak identificatie-/burgerservicenummers, mobiele telefoonnummers, voornaam, familienaam, identificatie van financiële accounts en andere gegevens die als persoonsgegevens kunnen worden beschouwd.
De methoden en functies die in deze sectie worden genoemd, verhogen het niveau van beveiliging op kolomniveau met minimale overhead en zonder dat er uitgebreide wijzigingen in de toepassingscode nodig zijn.
Gebruik Always Encrypted om gegevens in rust en bij gegevensoverdracht te versleutelen. Versleutelde gegevens worden alleen ontsleuteld door clientbibliotheken op het niveau van de toepassingsclient. Gebruik willekeurige versleuteling boven deterministische indien mogelijk. Always Encrypted met beveiligde enclaves kan de prestaties verbeteren voor vergelijkingsbewerkingen, zoals BETWEEN, IN, LIKE, DISTINCT, koppelingen en meer voor gerandomiseerde encryptiescenario's.
Gebruik DDM- (Dynamic Data Masking) om gegevens op kolomniveau te verdoezelen wanneer Always Encrypted geen beschikbare optie is. DDM-(Dynamic Data Masking) is niet compatibel met Always Encrypted. Gebruik Always Encrypted indien mogelijk via dynamische gegevensmaskering.
U kunt ook MACHTIGINGEN VERLENEN op kolomniveau voor een tabel, weergave of tabelwaardefunctie. Houd rekening met het volgende: alleen SELECT
, REFERENCES
en UPDATE
machtigingen kunnen worden verleend voor een kolom.
- Een DENY
op tabelniveau heeft geen prioriteit boven een GRANT
op kolomniveau.
Beveiliging op rijniveau
Row-Level Security (RLS) maakt het mogelijk om gebruikersuitvoeringscontext te gebruiken om de toegang tot rijen in een databasetabel te beheren. RLS zorgt ervoor dat gebruikers alleen de record kunnen zien die betrekking heeft op hen. Hierdoor beschikt u over beveiliging op recordniveau van uw toepassing zonder dat u belangrijke wijzigingen hoeft aan te brengen in uw toepassing.
De bedrijfslogica wordt ingekapseld binnen tabelwaardefuncties die worden beheerd door een beveiligingsbeleid waarmee de RLS-functionaliteit wordt in- en uitgeschakeld. Het beveiligingsbeleid bepaalt ook de FILTER
en BLOCK
predikaten die aan de tabellen zijn gebonden waartegen RLS werkt. Gebruik Row-Level Security (RLS) om de records te beperken die worden geretourneerd aan de gebruiker die de aanroep maakt. Gebruik SESSION_CONTEXT (T-SQL) voor gebruikers die verbinding maken met de database via een toepassing in de middelste laag waarin toepassingsgebruikers hetzelfde SQL Server-gebruikersaccount delen. Voor optimale prestaties en beheerbaarheid volgt u de best practices voor beveiliging Row-Level.
Tip
Gebruik Row-Level Security (RLS) samen met Always Encrypted of Dynamic Data Masking (DDM) om de beveiligingspostuur van uw organisatie te maximaliseren.
Bestandsversleuteling
TDE (Transparent Data Encryption) beveiligt de gegevens op bestandsniveau door versleuteling in rust aan de databasebestanden te bieden. Transparent Data Encryption (TDE) zorgt ervoor dat databasebestanden, back-upbestanden en tempdb
bestanden niet kunnen worden bijgevoegd en gelezen zonder dat de juiste certificaten databasebestanden ontsleutelen. Zonder TDE (Transparent Data Encryption) is het mogelijk dat een aanvaller de fysieke media (stations of back-uptapes) neemt en de database herstelt of koppelt om de inhoud te lezen. Transparent Data Encryption (TDE) wordt ondersteund om te werken met alle andere beveiligingsmogelijkheden in SQL Server. Transparent Data Encryption (TDE) biedt realtime I/O-versleuteling en ontsleuteling van de gegevens en logboekbestanden. TDE-versleuteling maakt gebruik van een DATABASEversleutelingssleutel (DEK) wordt opgeslagen in de gebruikersdatabase. De databaseversleutelingssleutel kan ook worden beveiligd met behulp van een certificaat, dat wordt beveiligd door de hoofdsleutel van de database van de master
-database.
Gebruik TDE om gegevens in rust, back-ups en tempdb
te beveiligen.
Controle en rapportage
Als u SQL Server-wiltcontroleren, maakt u een controlebeleid op server- of databaseniveau. Serverbeleid is van toepassing op alle bestaande en nieuw gemaakte databases op de server. Voor het gemak schakelt u controle op serverniveau in en staat u de controle op databaseniveau toe om de eigenschap op serverniveau voor alle databases over te nemen.
Controleer tabellen en kolommen met gevoelige gegevens waarop beveiligingsmaatregelen zijn toegepast. Als een tabel of kolom belangrijk genoeg is voor beveiliging door een beveiligingsmogelijkheid, moet deze worden beschouwd als belangrijk genoeg om te controleren. Het is vooral belangrijk om tabellen te controleren en regelmatig te controleren die gevoelige informatie bevatten, maar waar het niet mogelijk is om gewenste beveiligingsmaatregelen toe te passen vanwege een soort toepassings- of architectuurbeperking.
Identiteiten en verificatie
SQL Server ondersteunt twee verificatiemodi, Windows-verificatiemodus en 'SQL Server- en Windows-verificatiemodus' (gemengde modus).
Aanmeldingen zijn gescheiden van databasegebruikers. Wijs eerst aanmeldingen of Windows-groepen toe aan databasegebruikers of -rollen afzonderlijk. Verwijs vervolgens machtigingen aan gebruikers, serverfunctiesen/of databaserollen voor toegang tot databaseobjecten.
SQL Server ondersteunt de volgende typen aanmeldingen:
- Een lokaal Windows-gebruikersaccount of Active Directory-domeinaccount: SQL Server is afhankelijk van Windows om de Windows-gebruikersaccounts te verifiëren.
- Windows-groep: het verlenen van toegang tot een Windows-groep verleent toegang tot alle Aanmeldingen van Windows-gebruikers die lid zijn van de groep. Als u een gebruiker uit een groep verwijdert, worden de rechten verwijderd van de gebruiker die afkomstig is van de groep. Groepslidmaatschap is de voorkeursstrategie.
- SQL Server-aanmelding: SQL Server slaat de gebruikersnaam en een hash van het wachtwoord op in de
master
-database. -
ingesloten databasegebruikers SQL Server-verbindingen verifiëren op databaseniveau. Een ingesloten database is een database die is geïsoleerd van andere databases en van het exemplaar van SQL Server (en de
master
-database) die als host fungeert voor de database. SQL Server ondersteunt ingesloten databasegebruikers voor zowel Windows- als SQL Server-verificatie.
Met de volgende aanbevelingen en aanbevolen procedures kunt u uw identiteiten en verificatiemethoden beveiligen:
Gebruik strategieën voor beveiliging op basis van minimale bevoegdheden om beveiligingsbeheer te verbeteren.
- Het is standaard om Active Directory-gebruikers in AD-groepen te plaatsen, AD-groepen moeten bestaan in SQL Server-rollen en SQL Server-rollen moeten de minimale machtigingen krijgen die voor de toepassing zijn vereist.
Gebruik in Azure beveiliging met minimale bevoegdheden met behulp van op rollen gebaseerd toegangsbeheer (RBAC)
Kies Waar mogelijk Active Directory via SQL Server-verificatie en kies vooral Active Directory voor het opslaan van de beveiliging op toepassings- of databaseniveau.
- Als een gebruiker het bedrijf verlaat, is het eenvoudig om het account uit te schakelen.
- Het is ook eenvoudig om gebruikers uit groepen te verwijderen wanneer gebruikers rollen wijzigen of de organisatie verlaten. Groepsbeveiliging wordt beschouwd als een best practice.
Gebruik meervoudige verificatie voor accounts met toegang op computerniveau, inclusief accounts die RDP gebruiken om u aan te melden bij de computer. Dit helpt u te beschermen tegen diefstal of lekken van inloggegevens, omdat authenticatie op basis van één factor een zwakkere vorm van authenticatie is, waarbij inloggegevens het risico lopen gecompromitteerd te worden of per ongeluk weggegeven te worden.
Vereist sterke en complexe wachtwoorden die niet eenvoudig te raden zijn en niet worden gebruikt voor andere accounts of doeleinden. Werk regelmatig wachtwoorden bij en dwing Active Directory-beleid af.
Group-Managed Serviceaccounts (gMSA) bieden automatisch wachtwoordbeheer, vereenvoudigd beheer van Service Principal Names (SPN) en delegeren het beheer aan andere beheerders.
- Met gMSA beheert het Windows-besturingssysteem wachtwoorden voor het account in plaats van dat de beheerder het wachtwoord beheert.
- gMSA werkt de accountwachtwoorden automatisch bij zonder services opnieuw op te starten.
- gMSA vermindert het administratieve oppervlakniveau en verbetert de scheiding van taken.
Minimaliseer de rechten die zijn verleend aan het AD-account van de DBA; Overweeg een scheiding van taken die de toegang tot de virtuele machine beperken, de mogelijkheid om u aan te melden bij het besturingssysteem, de mogelijkheid om fouten en controlelogboeken te wijzigen, en de mogelijkheid om toepassingen en/of functies te installeren.
U kunt DBA-accounts verwijderen uit de rol sysadmin en CONTROL SERVER aan DBA-accounts verlenen in plaats van ze lid te maken van de rol sysadmin. De rol van systeembeheerder respecteert
DENY
niet terwijl CONTROL SERVER wel.
Gegevensherkomst en gegevensintegriteit
Het bewaren van historische gegevenswijzigingen in de loop van de tijd kan nuttig zijn om onbedoelde wijzigingen in de gegevens aan te pakken. Het kan ook handig zijn voor het controleren van toepassingswijzigingen en kan gegevenselementen herstellen wanneer een slechte actor gegevenswijzigingen introduceert die niet zijn geautoriseerd.
- Gebruik tijdelijke tabellen om recordversies in de loop van de tijd te behouden en om gegevens te zien zoals deze zich gedurende de levensduur van de record bevinden om een historisch overzicht te geven van de gegevens van uw toepassing.
- Tijdelijke tabellen kunnen op elk gewenst moment worden gebruikt om een versie van de huidige tabel op te geven.
Tools en evaluaties voor beveiligingsbeoordeling
De volgende configuratie- en evaluatiehulpprogramma's zijn gericht op oppervlaktebeveiliging, identificeren van mogelijkheden voor gegevensbeveiliging en bieden een best practice-evaluatie van de beveiliging van uw SQL Server-omgeving op exemplaarniveau.
- surface area-configuratie: u moet alleen de functies inschakelen die door uw omgeving zijn vereist, om het aantal functies te minimaliseren dat door een kwaadwillende gebruiker kan worden aangevallen.
- Evaluatie van beveiligingsproblemen voor SQL Server (SSMS) - SQL-evaluatie van beveiligingsproblemen is een hulpprogramma in SSMS v17.4+ waarmee potentiële databaseproblemen kunnen worden gedetecteerd, bijgehouden en hersteld. De evaluatie van beveiligingsproblemen is een waardevol hulpmiddel om de beveiliging van uw database te verbeteren en wordt uitgevoerd op databaseniveau, per database.
- SQL Data Discovery and Classification (SSMS): het is gebruikelijk dat DBA's servers en databases beheren en niet op de hoogte zijn van de gevoeligheid van de gegevens die zich in de database bevinden. Datadiscovery & Classificatie voegt de mogelijkheid toe om uw gegevens te ontdekken, classificeren, labelen en rapporteren over het gevoeligheidsniveau van uw gegevens. Data Discovery & Classification wordt ondersteund vanaf SSMS 17.5.
Veelvoorkomende SQL-bedreigingen
Het helpt u te weten wat enkele veelvoorkomende bedreigingen zijn die risico lopen op SQL Server:
-
SQL-injectie- SQL-injectie is een type aanval waarbij schadelijke code wordt ingevoegd in tekenreeksen die worden doorgegeven aan een exemplaar van SQL Server voor uitvoering.
- Het injectieproces werkt door een tekenreeks te beëindigen en een nieuwe opdracht toe te voegen. Omdat aan de ingevoegde opdracht mogelijk meer tekenreeksen zijn toegevoegd voordat deze wordt uitgevoerd, beëindigt de aanvaller de geïnjecteerde tekenreeks met een opmerkingsmarkering
--
. - SQL Server voert een syntactisch geldige query uit die wordt ontvangen.
- Het injectieproces werkt door een tekenreeks te beëindigen en een nieuwe opdracht toe te voegen. Omdat aan de ingevoegde opdracht mogelijk meer tekenreeksen zijn toegevoegd voordat deze wordt uitgevoerd, beëindigt de aanvaller de geïnjecteerde tekenreeks met een opmerkingsmarkering
- Houd rekening met Side-channel-aanvallen, malware & andere bedreigingen.
Risico's voor SQL-injectie
Houd rekening met de volgende items om het risico van een SQL-injectie te minimaliseren:
- Bekijk een SQL-proces waarmee SQL-instructies worden samengesteld voor beveiligingsproblemen met injectie.
- Maak dynamisch gegenereerde SQL-instructies op een geparameteriseerde manier.
- Ontwikkelaars en beveiligingsbeheerders moeten alle code controleren die
EXECUTE
,EXEC
ofsp_executesql
aanroept. - Geef de volgende invoertekens niet op:
-
;
: queryscheidingsteken -
'
: tekenreeksscheidingsteken -
--
: scheidingsteken voor opmerkingen met één regel. -
/* ... */
: scheidingstekens voor opmerkingen. -
xp_
: gecatalogiseerde uitgebreide opgeslagen procedures, zoalsxp_cmdshell
.- Het is niet raadzaam om
xp_cmdshell
te gebruiken in een SQL Server-omgeving. Gebruik in plaats daarvan SQLCLR of zoek naar andere alternatieven vanwege de risico's diexp_cmdshell
kunnen introduceren.
- Het is niet raadzaam om
-
- Valideer altijd gebruikersinvoer en saneer foutuitvoer om te voorkomen dat ze uitlekken en blootgesteld worden aan de aanvaller.
Zij-kanaal risico's
Houd rekening met het volgende om het risico van een side-channel-aanval te minimaliseren:
- Zorg ervoor dat de meest recente patches voor toepassingen en besturingssystemen worden toegepast.
- Zorg ervoor dat voor hybride workloads de meest recente firmwarepatches worden toegepast op on-premises hardware.
- In Azure kunt u voor zeer gevoelige toepassingen en workloads extra beveiliging toevoegen tegen side-channel-aanvallen met geïsoleerde virtuele machines, toegewezen hosts of met behulp van confidential compute virtuele machines zoals de DC-serie en virtuele machines die gebruikmaken van 3e generatie AMD EPYC-processors.
Infrastructuurbedreigingen
Houd rekening met de volgende veelvoorkomende infrastructuurbedreigingen:
- brute force toegang: de aanvaller probeert zich te verifiëren met meerdere wachtwoorden op verschillende accounts totdat een correct wachtwoord is gevonden.
- Wachtwoord kraken / wachtwoordspray - aanvallers proberen één zorgvuldig ontworpen wachtwoord tegen alle bekende gebruikersaccounts (één wachtwoord voor veel accounts). Als de initiële wachtwoordspray mislukt, proberen ze het opnieuw, waarbij ze een ander zorgvuldig samengesteld wachtwoord gebruiken, waarbij normaal gesproken een bepaalde tijd wordt gewacht tussen pogingen om detectie te voorkomen.
- Ransomware-aanvallen is een type gerichte aanval waarbij malware wordt gebruikt om gegevens en bestanden te versleutelen, waardoor toegang tot belangrijke inhoud wordt voorkomen. De aanvallers proberen vervolgens geld af te trekken van slachtoffers, meestal in de vorm van cryptovaluta, in ruil voor de ontsleutelingssleutel. De meeste ransomware-infecties beginnen met e-mailberichten met bijlagen die proberen ransomware te installeren, of websites die exploit kits hosten die proberen beveiligingsproblemen in webbrowsers en andere software te gebruiken om ransomware te installeren.
Wachtwoordrisico's
Omdat u niet wilt dat aanvallers gemakkelijk accountnamen of wachtwoorden raden, helpen de volgende stappen het risico op het detecteren van wachtwoorden te verminderen:
- Maak een uniek lokaal beheerdersaccount zonder de naam Administrator.
- Gebruik complexe sterke wachtwoorden voor al uw accounts. Zie Een sterk wachtwoord maken artikel voor meer informatie over het maken van een sterk wachtwoord.
- Standaard selecteert Azure Windows-verificatie tijdens de installatie van de virtuele SQL Server-machine. Daarom is de SA-aanmelding uitgeschakeld en wordt er een wachtwoord toegewezen door de setup. U wordt aangeraden de SA- aanmelding niet te gebruiken of in te schakelen. Als u een SQL-aanmelding moet hebben, gebruikt u een van de volgende strategieën:
Maak een SQL-account met een unieke naam met sysadmin lidmaatschap. U kunt dit doen vanuit de portal door SQL Authentication- in te schakelen tijdens het inrichten.
Tip
Als u SQL-verificatie niet inschakelt tijdens het inrichten, moet u de verificatiemodus handmatig wijzigen in SQL Server- en Windows-verificatiemodus. Zie Serververificatiemodus wijzigenvoor meer informatie.
Als u het SA login moet gebruiken, schakelt u het inloggen na het inrichten in en wijst u een nieuw sterk wachtwoord toe.
Ransomware-risico's
Houd rekening met het volgende om ransomware-risico's te minimaliseren:
- De beste strategie om te beschermen tegen ransomware is om bijzondere aandacht te besteden aan RDP- en SSH-beveiligingsproblemen. Houd ook rekening met de volgende aanbevelingen:
- Firewalls gebruiken en poorten vergrendelen
- Zorg ervoor dat de meest recente besturingssysteem- en toepassingsbeveiligingsupdates worden toegepast
- Gebruik groep beheerde service-accounts (gMSA) van
- Toegang tot de virtuele machines beperken
- Vereis Just-in-time (JIT) toegang en Azure Bastion
- Surface Area Security verbeteren door te voorkomen dat u hulpprogramma's installeert, waaronder sysinternals en SSMS op de lokale computer
- Vermijd het installeren van Windows-onderdelen, -rollen en het inschakelen van services die niet vereist zijn
- Daarnaast moet er een normale volledige back-up gepland zijn die afzonderlijk is beveiligd van een gemeenschappelijk beheerdersaccount, zodat kopieën van de databases niet kunnen worden verwijderd.