Bij het implementeren van een SQL-oplossing in Azure is het cruciaal om te begrijpen hoe de verschillende databaseplatformen kunnen worden ingezet om te voldoen aan de specifieke vereisten van een organisatie. Dit omvat zowel de technische als strategische overwegingen die nodig zijn om de juiste platformkeuze te maken, de schaalbaarheid en prestaties te optimaliseren, en tegelijkertijd de veiligheid van gegevens te waarborgen.

De eerste stap bij het plannen en implementeren van een gegevensplatformoplossing op Azure is het kiezen van het juiste type database-aanbod. Azure biedt verschillende opties, waaronder Azure SQL Database, SQL Managed Instances en SQL Server op Azure Virtual Machines. Elk van deze oplossingen heeft zijn eigen voordelen en nadelen, afhankelijk van de behoeften van de organisatie. Het is essentieel om een gedetailleerde beoordeling van de specifieke eisen te maken, zoals het type gegevens, de benodigde verwerkingscapaciteit, en de schaalbaarheid. Ook moet er rekening worden gehouden met de kosten en het onderhoud van de verschillende platforms.

Wanneer het gaat om schaalbaarheid, biedt Azure SQL Database geavanceerde mogelijkheden om databases automatisch op te schalen op basis van de vraag. Het is belangrijk om te weten hoe resources geconfigureerd kunnen worden om te voldoen aan de prestatiebehoeften van de organisatie zonder onnodige kosten te genereren. Bijvoorbeeld, de optie om tabelpartitionering en datacompressie te implementeren kan helpen bij het verbeteren van de prestaties, vooral wanneer de hoeveelheid gegevens aanzienlijk groeit.

In hybride omgevingen, waar zowel on-premise als cloudoplossingen samenwerken, kan de migratie naar Azure SQL-oplossingen complexer zijn. Dit vereist niet alleen het plannen van de migratiestrategie, maar ook het implementeren van tools zoals SQL Data Sync en het uitvoeren van post-migratie-validaties. Of je nu kiest voor een online of offline migratiestrategie, het is belangrijk om te begrijpen welke aanpak het beste past bij de specifieke situatie van de organisatie.

Daarnaast speelt beveiliging een cruciale rol in de implementatie van een Azure SQL-oplossing. Het gebruik van Microsoft Entra ID voor authenticatie en autorisatie biedt robuuste mechanismen om te zorgen dat alleen geautoriseerde gebruikers toegang hebben tot gevoelige gegevens. Het configureren van server- en database-firewallregels, het implementeren van Always Encrypted en het toepassen van dataclassificatiestrategieën zijn andere belangrijke stappen om te zorgen voor een veilige en conforme omgeving.

Ook het beheer van gegevens op zowel het netwerk als de database zelf vereist aandacht. Het implementeren van encryptie voor gegevens in rust en tijdens transport via mechanismen zoals Transparent Data Encryption (TDE) of Transport Layer Security (TLS) is essentieel voor de bescherming van gegevens tegen onbevoegde toegang. Verder moet er aandacht worden besteed aan compliance-controles zoals het configureren van audits en het implementeren van dynamische gegevensmaskering om gevoelige informatie te beschermen.

Het monitoren van prestaties is een ander essentieel aspect van het beheer van Azure SQL-oplossingen. Door gebruik te maken van tools zoals Query Store en SQL Insights, kunnen databasebeheerders prestaties analyseren en optimaliseren. Het is belangrijk om een operationele prestatiebasislijn vast te stellen, zodat afwijkingen snel kunnen worden geïdentificeerd en gecorrigeerd. Het instellen van indexonderhoudstaken en het optimaliseren van query-prestaties zijn cruciaal om de efficiëntie van de databasesystemen te waarborgen.

Naast prestaties moet ook de taakautomatisering in overweging worden genomen. Het gebruik van SQL Server Agent voor het beheren van onderhoudstaken en het automatiseren van implementaties via Azure Resource Manager of PowerShell maakt het eenvoudiger om reguliere taken efficiënt uit te voeren. Het beheren van geautomatiseerde taken helpt om menselijke fouten te verminderen en zorgt voor een betrouwbaarder systeembeheer.

Bij het plannen van een strategie voor hoge beschikbaarheid (HA) en disaster recovery (DR) moeten bedrijven rekening houden met hun vereisten voor Recovery Point Objective (RPO) en Recovery Time Objective (RTO). Het kiezen van een HA/DR-strategie is afhankelijk van de mate van beschikbaarheid en hersteltijd die een organisatie kan tolereren. Azure biedt verschillende opties, zoals geo-replicatie en back-upstrategieën, die kunnen helpen om de impact van onverwachte storingen te minimaliseren.

Tot slot is het belangrijk om de documentatie van Microsoft goed te raadplegen en de meest recente updates te volgen om te zorgen dat je altijd werkt met de nieuwste mogelijkheden en best practices. Azure evolueert continu, en wat vandaag de beste oplossing lijkt, kan morgen al verouderd zijn.

Hoe kan de toepassing van het principe van minimale rechten de beveiliging in SQL verbeteren?

In de wereld van SQL-beveiliging, net als bij netwerkbeveiliging in het algemeen, is het principe van minimale rechten een fundamenteel concept. Het houdt in dat gebruikers, applicaties en andere processen alleen de toegangsrechten krijgen die ze nodig hebben om hun taken uit te voeren, en niet meer. Het doel is om ervoor te zorgen dat individuen toegang krijgen tot hetgeen ze nodig hebben, zonder onnodig kwetsbaarheden te creëren voor beveiligingsobjecten (securables). De eenvoudigste – maar ook de minst veilige – beveiligingsoplossing zou zijn om iedereen toegang te geven tot alles. Daartegenover staat de meest veilige oplossing: niemand toegang geven tot iets. Het ideale compromis ligt ergens tussen deze twee uitersten.

Een praktische manier voor beheerders om het principe van minimale rechten toe te passen, is via rolgebaseerde toegangscontrole. Het rechtstreeks toekennen van machtigingen aan individuele gebruikers vergt meer werk en kan leiden tot verwarring bij beheerders, aangezien ze vaak het overzicht verliezen over welke machtigingen ze aan welke gebruikers hebben toegekend. Het gebruik van rollen maakt het voor beheerders gemakkelijker om machtigingen consistent toe te wijzen en het beheer ervan eenvoudiger te houden. De vooraf gedefinieerde rollen in producten zoals Azure SQL helpen beheerders bij het beoordelen van de behoeften van gebruikers en het toepassen van de juiste rechten voor de taken die ze moeten uitvoeren. Azure waarschuwt zelfs beheerders wanneer ze rollen met hoge bevoegdheden toekennen. Het toewijzen van de Owner-rol aan een gebruiker bijvoorbeeld, roept een waarschuwingsbericht op waarin de beheerder wordt gevraagd of een minder bevoorrechte rol voldoende zou zijn.

Een andere belangrijke overweging bij de toepassing van het principe van minimale rechten is het zorgvuldig kiezen van de juiste beveiligingsobjecten waartoe gebruikers toegang moeten krijgen om hun specifieke taken uit te voeren. Bijvoorbeeld in het geval van een applicatie die afhankelijk is van opgeslagen procedures: gebruikers hoeven alleen de EXECUTE-machtiging voor die procedures te hebben, maar niet voor de onderliggende tabellen die door deze procedures worden benaderd.

Wanneer het gaat om het oplossen van problemen met authenticatie en autorisatie, komen beheerders vaak voor verschillende uitdagingen te staan. De oorzaken van mislukte authenticaties zijn meestal administratief van aard, zoals vergeten of onjuiste wachtwoorden. Bij installaties die gebruik maken van multifactor-authenticatie (MFA), kunnen administratieve problemen zich bovendien versterken, aangezien gebruikers moeten wennen aan de nieuwe procedures. Zodra administratieve factoren als oorzaak van mislukte authenticatie kunnen worden uitgesloten, kunnen beheerders zich richten op andere mogelijke oorzaken.

In sommige gevallen kunnen tijdelijke communicatieproblemen of verwerkingsfouten in Azure de authenticatie- en autorisatieprocessen beïnvloeden. Deze vertragingen duren meestal slechts enkele seconden, maar kunnen soms optreden door internetonderbrekingen, die zich op elk moment kunnen voordoen tussen de gebruiker en de Azure-cloudservice. Wanneer een herhaald "login failed"-foutbericht wordt weergegeven, kunnen beheerders beginnen met het oplossen van het probleem door te controleren of de login niet is uitgeschakeld. Dit kan eenvoudig worden gedaan via de sys.sql_logins-catalogusweergave in de masterdatabase. Als de waarde van de kolom is_disabled op "True" staat, betekent dit dat de login is uitgeschakeld. Beheerders kunnen deze login vervolgens opnieuw inschakelen met een T-SQL-opdracht, zoals:

sql
ALTER LOGIN testuser ENABLE;

Als de login niet bestaat in de sys.sql_logins-weergave, kan de beheerder deze aanmaken met de CREATE LOGIN-opdracht en vervolgens een overeenkomstige databasegebruiker aanmaken met de CREATE USER-opdracht.

In sommige gevallen kunnen vertragingen of overbelasting van Azure-diensten zelf leiden tot authenticatieproblemen. Diensten zoals Azure SQL Database kunnen worden geschaald op basis van veranderende werklast, en tijdelijke serverherconfiguraties of migraties kunnen authenticatieprocessen tijdelijk verstoren. Dit kan leiden tot foutmeldingen zoals "Cannot open database... The service is currently busy" of zelfs tot de onmogelijkheid om aanvragen te verwerken vanwege onvoldoende middelen.

Een andere veelvoorkomende oorzaak van problemen bij authenticatie is het gebruik van een onjuiste verbindingsreeks. Dit komt vaak voor wanneer een nieuwe database is gemaakt of een bestaande database is bijgewerkt, en gebruikers hun verbindingsproces moeten aanpassen. De correcte verbindingsreeks kan worden gecontroleerd via het Azure-portaal, waar op de pagina 'Connection Strings' de verbindingen voor verschillende authenticatiemechanismen, zoals Microsoft Entra of SQL-authenticatie, worden weergegeven.

De juiste configuratie van de authenticatiemodus is ook cruciaal voor een veilige omgeving. Tijdens de installatie van een SQL-product wordt de authenticatiemodus bepaald, die bepaalt of SQL zijn interne SQL-authenticatie gebruikt of Microsoft Entra voor verificatie. Beheerders kunnen deze modus te allen tijde wijzigen via de grafische interface op de Microsoft Entra ID-pagina in het Azure-portaal. Via SQL Server Management Studio (SSMS) kunnen beheerders de serverinstellingen wijzigen door naar de eigenschappen van de SQL-server te gaan en de tabbladbeveiliging te openen.

Het beheer van authenticatie- en autorisatie-instellingen via T-SQL biedt beheerders flexibele mogelijkheden om toegang te regelen en te controleren. Als een beheerder bijvoorbeeld besluit om de standaard sa-login opnieuw in te schakelen, kan dit eenvoudig worden gedaan met de volgende T-SQL-opdrachten:

sql
ALTER LOGIN sa ENABLE;
ALTER LOGIN sa WITH PASSWORD = 'Pa$$w0rd';

Verder kan de authentificatiemodus van de server worden aangepast met behulp van de Windows-registerinstellingen via T-SQL-opdrachten, bijvoorbeeld:

sql
EXEC xp_instance_regwrite 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\MSSQLServer\MSSQLServer', 'LoginMode', REG_DWORD, 1;

Na het wijzigen van de modus kan de beheerder besluiten de sa-login opnieuw uit te schakelen, aangezien deze login vaak een mogelijk doelwit is voor aanvallen:

sql
ALTER LOGIN sa DISABLE;

Het begrijpen van de balans tussen beveiliging en toegangsbeheer is essentieel voor het implementeren van effectieve beveiligingsmaatregelen in SQL-omgevingen. Beheerders moeten zorgvuldig afwegen welke rechten gebruikers daadwerkelijk nodig hebben en zorgen voor een gedetailleerd overzicht van wie toegang heeft tot wat, zodat de risico's van misbruik of ongeautoriseerde toegang worden geminimaliseerd.

Hoe Always Encrypted en Beveiligde Enclaves Werken in Azure SQL Database

In Azure SQL Database is Always Encrypted een technologie die ervoor zorgt dat gevoelige gegevens, zoals creditcardnummers, altijd versleuteld blijven, zelfs tijdens bewerkingen of queries die op de gegevens worden uitgevoerd. Dit wordt bereikt door een encryptiesleutel te gebruiken die alleen beschikbaar is voor geautoriseerde applicaties of gebruikers. Voor elke geselecteerde kolom moet de beheerder een van de beschikbare versleutelingsopties kiezen: gevarieerde encryptie of deterministische encryptie.

Gevarieerde encryptie is veiliger dan deterministische encryptie, omdat dezelfde waarde altijd anders wordt versleuteld. Hierdoor kunnen dezelfde gegevens niet op dezelfde manier worden herkend bij verschillende queries, wat extra bescherming biedt tegen aanvallen. Het nadeel is echter dat het gebruik van gevarieerde encryptie queries bemoeilijkt, omdat de versleutelde waarden variëren en moeilijk te vergelijken zijn. Deterministische encryptie daarentegen zorgt ervoor dat dezelfde waarde altijd hetzelfde versleutelde resultaat oplevert, wat het mogelijk maakt om bewerkingen uit te voeren of te vergelijken. Deze aanpak is echter minder veilig omdat het eenvoudiger is om gegevens te vergelijken en er potentieel kwetsbaarheden kunnen optreden.

Bijvoorbeeld, de tabel Sales.CreditCard kan een kolom CardNumber bevatten, die klantcreditcardnummers opslaat. In dit geval kan deterministische encryptie worden toegepast, omdat de applicatie toegang tot deze waarde moet hebben voor bewerkingen. De kolommen ExpMonth en ExpYear, die de vervaldatum van de kaart bevatten, kunnen echter gevarieerde encryptie gebruiken, aangezien de waarden kort zijn en relatief eenvoudig te raden zijn.

Always Encrypted maakt gebruik van een hoofdversleutelsleutel om een unieke kolomversleutelsleutel voor elke geselecteerde kolom te genereren. Dit zorgt ervoor dat de versleuteling op een veilige en consistente manier kan worden uitgevoerd. De wizard voor Always Encrypted biedt een configuratiepagina waar beheerders kunnen aangeven waar de hoofdversleutelsleutel moet worden opgeslagen, bijvoorbeeld in de Windows-certificaatopslag of in een Azure Key Vault. De efficiëntie van encryptie- en decryptie-operaties wordt verhoogd door de Secure Enclaves, een beschermde geheugenzone die alleen toegankelijk is voor geautoriseerde code. Dit maakt versleuteling en decryptie sneller, omdat deze processen binnen de enclave zelf plaatsvinden, zonder dat gegevens de enclave hoeven te verlaten.

Een van de belangrijkste uitdagingen van Always Encrypted is dat gegevens altijd versleuteld blijven, zelfs wanneer de SQL Server queries uitvoert die toegang nodig hebben tot deze versleutelde gegevens. Dit bemoeilijkt het uitvoeren van bepaalde bewerkingen op de gegevens. Om dit probleem op te lossen, biedt SQL Server de functie Secure Enclaves, een beveiligde geheugenzone die alleen toegankelijk is voor vertrouwde code en die de SQL Server zelf niet kan benaderen. Deze enclaves kunnen worden geïmplementeerd op basis van virtuele machinebeveiliging (VBS) of Intel Software Guard Extensions (SGX), afhankelijk van de gekozen Azure-instellingen. De enclave zelf bevat zowel de code als de data in onversleutelde vorm, maar de gegevens blijven buiten bereik van onbevoegde processen, zelfs van de SQL Server zelf.

Wanneer een database in Azure SQL Database wordt aangemaakt, zijn de secure enclaves standaard uitgeschakeld. Beheerders kunnen deze echter inschakelen door een schuifregelaar in de Azure Portal in te schakelen. De gebruikmaking van secure enclaves is niet beperkt tot nieuwe databases; ze kunnen ook ingeschakeld worden voor bestaande databases met behulp van T-SQL-commando's. Dit voegt een extra laag van bescherming toe aan de Always Encrypted-functionaliteit en maakt het mogelijk om versleutelde gegevens te verwerken zonder dat ze de beveiligde enclave hoeven te verlaten.

Naast de versleuteling van gegevens, biedt Azure SQL Database ook de mogelijkheid om verbindingen te beveiligen door gebruik te maken van Transport Layer Security (TLS). TLS versleutelt de communicatie tussen de clientapplicatie en de SQL Server, wat cruciaal is voor het beveiligen van gegevens die tijdens de overdracht over het netwerk worden verzonden. Beheerders kunnen de minimale versie van TLS instellen die de server accepteert, waardoor de verbindingen nog veiliger worden. TLS 1.3 is de nieuwste versie en biedt verbeterde prestaties en beveiliging, terwijl oudere versies van TLS, zoals 1.0 en 1.1, inmiddels als verouderd worden beschouwd en vaak niet meer ondersteund worden.

Naast deze beveiligingsmaatregelen biedt Azure SQL Database de mogelijkheid om een privéverbinding naar de database te maken. Dit kan via een privé-eindpunt, dat een IP-adres binnen een virtueel netwerk vertegenwoordigt, waardoor de communicatie tussen de applicatie en de database niet via het openbare internet verloopt. Dit verhoogt de algehele veiligheid, omdat de gegevens niet via een openbaar netwerk worden verzonden.

Het is belangrijk voor beheerders en ontwikkelaars om te begrijpen dat de keuze van encryptietype en de configuratie van secure enclaves niet alleen een kwestie is van het verbeteren van de beveiliging, maar ook invloed heeft op de prestaties en de mogelijkheden van applicaties. Gevarieerde encryptie biedt de hoogste beveiliging, maar kan complexere query's en bewerkingen vereisen, terwijl deterministische encryptie eenvoudiger is voor de applicatie, maar meer risico's met zich meebrengt. Secure enclaves bieden een efficiënte oplossing voor het verwerken van versleutelde gegevens, maar vereisen specifieke configuratie en een dieper begrip van de beveiligingsmodellen van Azure.

Hoe kan de uitvoering van SQL-query's geoptimaliseerd worden met behulp van intelligente inzichten en indexonderhoud?

In de context van SQL-databasebeheer is het van cruciaal belang dat beheerders de uitvoering van queries nauwlettend volgen en de prestaties van hun systemen voortdurend monitoren. Dit kan onder andere door gebruik te maken van functies zoals Intelligent Insights en het onderhouden van de indexen die in de database worden gebruikt. Beide benaderingen dragen bij aan het verbeteren van de efficiëntie en het snel oplossen van prestatieproblemen.

Een van de tools die beschikbaar is in Azure SQL Database en Azure SQL Managed Instance is Intelligent Insights, een hulpmiddel dat gebruik maakt van kunstmatige intelligentie om activiteiten binnen de SQL-database te monitoren. Het detecteert potentiële oorzaken van prestatievermindering, analyseert de problemen om de worteloorzaken vast te stellen, en biedt aanbevelingen voor verbetering. Deze inzichten kunnen cruciale informatie bieden over de werkbelasting van de database, zoals langzame queries, foutmeldingen, wachttijden, time-outs en andere aanwijzingen voor mogelijke problemen.

Wat Intelligent Insights onderscheidt, is zijn vermogen om patronen te herkennen die wijzen op prestatieverlies, zoals:

  • Het bereiken van de resource-limieten van de database, wat de prestaties negatief beïnvloedt.

  • Een toename in de werkbelasting van de database, wat kan leiden tot vertragingen.

  • Geheugenproblemen, waarbij de database lang moet wachten op extra geheugen, wat de snelheid beïnvloedt.

  • Locking-problemen, waarbij queries te veel data vergrendelen en zo de prestaties verminderen.

  • Ontbrekende indexen, die vaak leiden tot verminderde zoekprestaties.

  • Verhoogde wachttijden door resourcebeperkingen, wat de algehele responsiviteit vertraagt.

  • Problemen met de client die gegevens niet snel genoeg van de server kan ontvangen.

  • Daling van het prijsniveau of een wijziging in het abonnement kan resulteren in een afname van beschikbare middelen, wat de prestaties beïnvloedt.

Wanneer dergelijke problemen worden gedetecteerd, genereert Intelligent Insights een diagnostisch logbestand, genaamd SQLInsights, waarin vaak de oorzaak van het probleem wordt vermeld, evenals aanbevelingen voor de beheerder over hoe de prestaties kunnen worden verbeterd.

Naast het gebruik van intelligente hulpmiddelen om problemen te monitoren, moeten beheerders ook indexonderhoud uitvoeren om de algehele prestaties van de database te verbeteren. Een van de belangrijkste redenen voor prestatievermindering in SQL-databases is indexfragmentatie. Bij elke wijziging (invoegen, bijwerken of verwijderen) die in de database wordt uitgevoerd, kunnen de indexen die aan de gegevens zijn gekoppeld, fragmenteren. Dit vermindert de algehele prestaties doordat de server extra I/O-bewerkingen moet uitvoeren om de benodigde gegevens te vinden.

Wanneer gegevens in een rowstore-database worden toegevoegd, kunnen de bestaande pagina’s die de gegevens bevatten vol raken, wat kan leiden tot een splitsing van de pagina’s. Dit verlaagt de dichtheid van de pagina en verhoogt de benodigde leesbewerkingen. Hoe lager de dichtheid van de pagina, hoe meer pagina's de server moet doorzoeken, wat de snelheid en efficiëntie beïnvloedt.

Om dit probleem aan te pakken, kunnen beheerders de fragmentatieniveaus van de indexen controleren door gebruik te maken van SQL Server Management Studio (SSMS) of door middel van T-SQL-query's. In SSMS kan dit eenvoudig worden bekeken door de indexen van een tabel te openen en de eigenschappen van de fragmentatie in te zien. Via T-SQL kan dezelfde informatie worden verkregen door te query'en naar de sys.dm_db_index_physical_stats DMV, waarbij de avg_fragmentation_in_percent en avg_page_space_used_in_percent waarden de mate van fragmentatie en de dichtheid van de pagina's weergeven.

SQL Server biedt twee belangrijke methoden voor indexonderhoud om fragmentatie te verminderen en de prestaties te verbeteren:

  1. Reorganiseren: Dit is een online bewerking die de indexpagina’s herschikt en compacter maakt. Het verbruikt minder middelen dan een rebuild, en het wordt aanbevolen wanneer de fragmentatie tussen de 5 en 30 procent ligt.

  2. Heropbouwen: Dit is een online of offline bewerking die de index volledig verwijdert en opnieuw creëert. Dit wordt aanbevolen wanneer de fragmentatie meer dan 30 procent bedraagt, maar het verbruikt meer middelen en kan langere vergrendelingstijden veroorzaken.

Beheerders kunnen ervoor kiezen om de indexen te reorganiseren of opnieuw op te bouwen via SSMS of met behulp van T-SQL-commando’s zoals ALTER INDEX REORGANIZE of ALTER INDEX REBUILD.

Het is belangrijk om deze bewerkingen zorgvuldig uit te voeren, want ondoordacht reorganiseren of opnieuw opbouwen kan de prestaties niet altijd verbeteren en kan aanzienlijke overhead kosten. Het is dan ook cruciaal dat beheerders deze taken alleen uitvoeren wanneer dit goed gedocumenteerd is en wanneer het daadwerkelijk nodig is.

Naast deze technieken zijn er andere beheertaken die bijdragen aan een optimale databaseconfiguratie. Het uitvoeren van statistiekenonderhoud, het implementeren van automatische tuning voor de database en het gebruiken van de Resource Governor zijn enkele van de manieren waarop beheerders de prestaties kunnen afstemmen en schaling kunnen ondersteunen.

Bijvoorbeeld, het gebruik van intelligent query processing (IQP) is een krachtige manier om de database te helpen zich aan te passen aan veranderende werklasten en complexere query's te verwerken zonder dat de prestaties in gevaar komen. Het gebruik van automatische tuning kan bovendien helpen om veel voorkomende problemen zoals verkeerd geschreven query's of suboptimale indexen automatisch te detecteren en aan te pakken.

Het monitoren van de gezondheid van de SQL-server is een doorlopend proces dat voortdurende aandacht vereist. Het vereist niet alleen dat er gereageerd wordt op de symptomen van prestatieproblemen, maar ook dat er proactief wordt gewerkt aan het optimaliseren van de infrastructuur. Beheerders moeten voortdurend leren en zich aanpassen aan de veranderende behoeften van hun databases om een soepele werking te waarborgen.

Hoe maak je een Azure SQL Database of Managed Instance aan?

In het Microsoft Azure-portaal kunnen gebruikers verschillende SQL-databaseopties kiezen voor de implementatie van hun databases in de cloud. Wanneer men de optie 'Create' aanklikt in het Azure SQL-gedeelte, wordt een pagina geopend waarop drie primaire implementatieopties beschikbaar zijn: SQL-databases, SQL Managed Instances en SQL Virtuele Machines. De keuze voor een van deze opties bepaalt hoe de database wordt geconfigureerd en beheerd, evenals de resources die eraan gekoppeld zullen worden.

Wanneer men kiest voor de optie "SQL-databases", wordt er een nieuw tabblad geopend waarin de gebruiker verschillende configuraties kan aanpassen, zoals de keuze voor een elastische pool, een Azure Arc-instance of een virtuele machine-afbeelding. Na het selecteren van de gewenste configuratie kan de gebruiker op "Create" klikken om de database te creëren. In dit proces kunnen echter slechts een beperkt aantal instellingen handmatig geconfigureerd worden voordat de daadwerkelijke database wordt aangemaakt.

Basisinstellingen voor een SQL-database

Op het tabblad 'Basics' van het aanmaakproces zijn er een aantal essentiële instellingen die de gebruiker moet configureren. Allereerst is het belangrijk om de juiste Azure-abonnement te selecteren, aangezien dit de plaats is waar de database gehost en gefactureerd zal worden. Vervolgens moet een resourcegroep worden gekozen of aangemaakt. Een resourcegroep fungeert als een container voor gerelateerde Azure-resources die dezelfde machtigingen en beleidsregels delen. Daarnaast dient de naam van de database te worden opgegeven, evenals het logische server waarop de database draait. Dit logische server is geen traditionele server zoals op on-premises systemen, maar een beheerde service die de toegang tot de database regelt.

Naast deze basisinstellingen kunnen gebruikers nog andere geavanceerde opties configureren, zoals de keuze voor compute + storage en de back-up opslagreduntie. Dit bepaalt hoe de database wordt geschaald qua opslagcapaciteit en welke soort redundantie er wordt toegepast op de back-ups van de database.

Verschil tussen een SQL-database en een SQL Managed Instance

Het belangrijkste onderscheid tussen de verschillende opties voor SQL-implementaties is dat bij een SQL Managed Instance gebruikers volledige toegang krijgen tot de SQL Server-instantie, wat niet het geval is bij de standaard SQL-database. Dit maakt de Managed Instance ideaal voor organisaties die hun on-premises SQL Server-instellingen naar de cloud willen migreren. De Managed Instance is vrijwel identiek aan een on-premises SQL Server, inclusief de mogelijkheid om gebruik te maken van geavanceerde functies zoals Service Broker en SQL Server Agent, die niet beschikbaar zijn in een standaard SQL-database.

De procedure voor het aanmaken van een Managed Instance is grotendeels vergelijkbaar met die van een SQL-database. Echter, bij de Managed Instance wordt de gebruiker gevraagd om een virtueel netwerk/subnet te configureren voor de beheerde instantie. Dit maakt het mogelijk om netwerkconfiguraties zoals openbare endpoints en versies van TLS-encryptie voor binnenkomende verbindingen in te stellen. Deze opties kunnen niet worden ingesteld bij een standaard SQL-database.

Automatisering van de implementatie

Het handmatig creëren van databases en managed instances via het Azure-portaal is relatief eenvoudig, maar kan tijdrovend zijn wanneer er meerdere implementaties nodig zijn, bijvoorbeeld bij grootschalige migraties naar de cloud. Gelukkig biedt Azure verschillende geautomatiseerde methoden, zoals Azure Resource Manager (ARM)-sjablonen, Azure CLI en PowerShell-commando's, die het proces aanzienlijk kunnen versnellen en fouten kunnen voorkomen. Deze methoden stellen gebruikers in staat om meerdere SQL-installaties gelijktijdig te creëren, zonder handmatige tussenkomst, waardoor het risico op inconsistenties in de configuratie wordt verkleind.

Een belangrijk aspect van het gebruik van deze geautomatiseerde methoden is dat Azure eerst authenticatie en autorisatie uitvoert via de Azure Resource Manager. Dit zorgt ervoor dat alleen geautoriseerde gebruikers wijzigingen kunnen aanbrengen en dat de implementaties consistent zijn. Het gebruik van ARM-sjablonen of scripts biedt aanzienlijke voordelen bij het beheren van grotere implementaties van SQL-instanties in de cloud, doordat ze kunnen worden hergebruikt en geoptimaliseerd voor verschillende omgevingen.

Wat verder belangrijk is om te begrijpen

Bij het werken met Azure SQL-databases is het essentieel om het verschil tussen een "logische server" en een fysiek geïnstalleerde server te begrijpen. Een logische server in Azure is geen traditionele VM of fysieke server die door de gebruiker zelf wordt beheerd, maar een abstracte laag die het beheer van de database en de toegang daartoe mogelijk maakt. Dit zorgt voor een hoge mate van automatisering en schaalbaarheid, maar het betekent ook dat sommige configuraties, zoals serverbeheertaken, niet handmatig uitgevoerd kunnen worden zoals bij on-premises systemen.

Daarnaast is het belangrijk te realiseren dat, hoewel veel van de beheer- en onderhoudstaken van de database (zoals patching en back-ups) automatisch worden uitgevoerd, de gebruiker nog steeds verantwoordelijk is voor het correct configureren van netwerkbeveiliging, toegangscontrole en back-upinstellingen om de veiligheid en beschikbaarheid van de database te waarborgen.