Bij het migreren van SQL Server-databases naar de cloud zijn er verschillende overwegingen die cruciaal zijn voor het succes van de migratie. Deze overwegingen omvatten de compatibiliteit van databases, de benodigde middelen, de downtime, de beveiliging en de keuze tussen offline of online migratiestrategieën. Het is belangrijk om een gedetailleerd plan op te stellen, rekening houdend met deze factoren, om te zorgen voor een naadloze overgang van on-premises SQL Servers naar Azure SQL-producten.

Allereerst is het essentieel om de vereisten van de migratie zorgvuldig te evalueren. Dit begint met het beoordelen van de compatibiliteit van de huidige SQL Server-omgeving met de verschillende Azure SQL-producten, zoals Azure SQL Database of Azure SQL Managed Instance. Azure SQL-producten draaien altijd op de meest recente versie van SQL Server en worden voortdurend bijgewerkt. Als een on-premises SQL Server een oudere versie vereist, is de enige optie om een virtuele machine (VM) in Azure te creëren met daarop de gewenste SQL Server-versie.

Een ander belangrijk aspect van de migratie is het beoordelen van de benodigde middelen. Bij het plannen van een migratie moeten SQL Server-beheerders bepalen welk Azure SQL-product het beste past bij de vereisten van hun on-premises SQL Server. Als een specifieke versie van SQL Server nodig is die niet beschikbaar is als Platform-as-a-Service (PaaS), zoals SQL Database of SQL Managed Instance, kan de Infrastructure-as-a-Service (IaaS)-optie een oplossing bieden. Hier kunnen beheerders een virtuele machine (VM) in Azure maken die aan de vereisten van de bestaande on-premises servers voldoet.

Bij het plannen van een migratie moeten beheerders ook de downtime in overweging nemen. Een offline migratie, waarbij de bronserver tijdelijk wordt uitgeschakeld om de gegevens over te dragen, kan langere tijd duren, afhankelijk van de grootte van de database en de snelheid van de verbinding. Als de applicaties die de SQL-databases gebruiken, niet kunnen functioneren zonder de gegevens, kan het nodig zijn om voor een online migratie te kiezen. Bij een online migratie blijven de databases beschikbaar voor query’s, maar dit kan de complexiteit verhogen, vooral wanneer er nieuwe updates tijdens de migratie worden toegepast.

Beveiliging is een andere cruciale factor die niet over het hoofd mag worden gezien. De beveiligingsmaatregelen die voor on-premises SQL-installaties van kracht zijn, moeten ook in de cloud gelden. Dit kan betekenen dat er bepaalde beperkingen zijn met betrekking tot waar en hoe de gegevens in de database worden opgeslagen, vooral als er contractuele verplichtingen of overheidsregelgeving van toepassing zijn. Het kan nodig zijn om de opslagstrategie in Azure aan te passen om te voldoen aan de vereisten van deze beveiligingsrichtlijnen.

Azure biedt verschillende hulpmiddelen om de migratie te vergemakkelijken, zoals Azure Migrate. Dit platform ondersteunt zowel offline als online migraties, en het biedt de mogelijkheid om een "lift and shift"-migratie uit te voeren, waarbij de bestaande on-premises SQL-architectuur wordt gedupliceerd in een Azure-VM met SQL Server. Deze aanpak kan de snelste en eenvoudigste manier lijken, maar Azure biedt ook PaaS-opties zoals Azure SQL DB en SQL MI, die mogelijk beter geschikt zijn voor bepaalde omgevingen en kostenbesparingen opleveren.

Daarnaast kan de Azure Data Migration Assistant (DMA) worden gebruikt om de SQL Server-databases te scannen en te controleren op compatibiliteit met Azure SQL-producten. Dit hulpmiddel helpt beheerders bij het identificeren van eventuele problemen die de migratie kunnen beïnvloeden. Zodra de scan is voltooid, kan het resultaat worden geüpload naar Azure Migrate, waar de beoordeling van de database beschikbaar wordt gesteld om de migratie te coördineren.

Het is van groot belang om te begrijpen dat de keuze tussen online en offline migratie niet alleen afhangt van de benodigde downtime, maar ook van de complexiteit van de infrastructuur en de verwachte kosten. Migraties die de beschikbaarheid van de database niet kunnen beïnvloeden, vereisen doorgaans een meer gedetailleerde planning en complexere strategieën, maar kunnen uiteindelijk helpen bij het minimaliseren van de impact op de bedrijfsvoering.

Ten slotte moeten beheerders rekening houden met de mogelijkheid om de on-premises servers tijdelijk in een hybride infrastructuur te draaien, terwijl de migratie plaatsvindt. Dit zorgt ervoor dat zowel de on-premises als de Azure-omgevingen samenwerken totdat de migratie is voltooid en de on-premises servers uiteindelijk kunnen worden uitgeschakeld.

Hoe Beheer je Beveiligingsprincipalen en Gebruikers in SQL Server?

In een on-premises SQL Server-installatie die gebruikmaakt van Active Directory voor authenticatie, moeten beheerders eerst de Active Directory-infrastructuur opzetten door een Windows Server te installeren en deze de rol van Active Directory Domain Services toe te wijzen om een domeincontroller te maken. Domeincontrollers slaan gebruikersaccountinformatie op en bieden authenticatie- en autorisatiediensten voor Windows-besturingssystemen en applicaties, waaronder SQL Server.

Wanneer SQL Server wordt geïnstalleerd, biedt de Configuratiepagina van de Database-engine in de Setup Wizard de optie om Windows-authenticatiemodus of Mixed Mode te kiezen. Windows-authenticatiemodus schakelt de native SQL Server-authenticatiemethode uit, terwijl Mixed Mode beide modi ondersteunt. Er is geen optie om alleen SQL Server-authenticatie te gebruiken, aangezien gebruikers altijd moeten inloggen op Windows, zelfs als ze geen toegang tot SQL Server of zijn databases nodig hebben.

Het is belangrijk te begrijpen dat een Windows-netwerk niet vereist is om Active Directory voor authenticatie te gebruiken, noch vereist SQL Server het gebruik van Active Directory. Hoewel het niet wordt aanbevolen, is het mogelijk om gebruikersaccounts op een individueel Windows-computer te creëren in plaats van op een centrale domeincontroller, en Windows-gebruikers lokaal te authenticeren. De installatie- en configuratieinterfaces van SQL Server verwijzen dus naar Windows-authenticatie en niet naar Active Directory.

Bij het installeren van SQL Server op een Windows-computer die is gekoppeld aan een Active Directory-domein, wordt de beheerder gevraagd een Active Directory-gebruiker toe te voegen bij het aanmaken van een SQL Server-beheerder.

Gebruikers aanmaken vanuit Microsoft Entra-identiteiten

Microsoft Entra-identiteiten stellen gebruikers in staat in te loggen op Azure en toegang te krijgen tot zijn services. Maar om een login voor SQL Database of SQL Managed Instance te maken vanuit een Entra-identiteit, moet een beheerder toegang hebben tot de masterdatabase en de T-SQL CREATE LOGIN-opdracht gebruiken. De syntax is als volgt:

sql
USE master
GO CREATE LOGIN [username@contoso.com] FROM EXTERNAL PROVIDER; GO

De clausule FROM EXTERNAL PROVIDER geeft aan dat de opdracht een SQL-login zal maken vanuit de Entra-identiteit van de gebruiker in het contoso.com-domein. Als een SQL-login niet direct overeenkomt met de Entra-weergavenaam, kan de beheerder de clausule WITH OBJECT_ID gebruiken om de object-ID voor de Entra-identiteit op te geven.

Een voorbeeld hiervan is:

sql
CREATE LOGIN [username@contoso.com] FROM EXTERNAL PROVIDER WITH OBJECT_ID='4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx';

Beveiligingsprincipalen configureren

In SQL is een beveiligingsprincipe elke entiteit die toegang kan aanvragen tot SQL Server-bronnen en waaraan beheerders de benodigde machtigingen kunnen toekennen. De bronnen die door de beveiligingsprincipalen worden benaderd, worden ‘securables’ genoemd, en SQL verdeelt de securables in drie afzonderlijke scopes: server, database en schema. Er zijn beveiligingsprincipalen in SQL op serverniveau en op databasenniveau.

In SQL zijn de termen “login” en “user” niet uitwisselbaar. Beide zijn beveiligingsprincipalen, maar een login is een identiteit op serverniveau, terwijl een user een identiteit op databasenniveau is. Dit onderscheid is cruciaal voor het beheer van beveiliging en toegang tot SQL-databases.

Logins aanmaken

Zoals eerder aangegeven, kunnen beheerders de T-SQL-opdracht CREATE LOGIN gebruiken om nieuwe logins op serverniveau aan te maken. Beheerders kunnen logins aanmaken voor SQL Server-authenticatie door een gebruikersnaam en wachtwoord op te geven, zoals in het volgende voorbeeld:

sql
CREATE LOGIN testuser WITH PASSWORD = ‘Pa$$w0rd’;

Gebruikers aanmaken

Op databasenniveau is de gebruiker het belangrijkste beveiligingsprincipe. Een login verleent toegang tot de server, maar om daadwerkelijk met een database op die server te werken, moet de persoon een databasegebruiker-identiteit hebben en moet de login aan die gebruiker worden gekoppeld. Beheerders kunnen de CREATE USER-opdracht in T-SQL gebruiken om databasegebruiker-identiteiten aan te maken, maar dit moet vanuit de context van de database gebeuren.

Als een identiteit al bestaat als login, kunnen beheerders de CREATE USER-opdracht gebruiken met de argumenten FROM LOGIN om een nieuwe gebruikersidentiteit aan te maken en deze aan de opgegeven login te koppelen:

sql
CREATE USER testuser FROM LOGIN testuser;

Het gebruik van rollen

Rollen zijn een veelgebruikte methode voor het beheren van beveiliging in veel netwerkomgevingen. Beheerders creëren identiteiten die ‘rollen’ worden genoemd en wijzen machtigingen aan deze rollen toe. In wezen werken rollen zoals beveiligingsgroepen: door gebruikers aan een rol toe te wijzen, erven ze alle machtigingen die aan die rol zijn gekoppeld. Dit vereenvoudigt het beheer van machtigingen voor beheerders, aangezien ze niet machtigingen aan individuele gebruikers hoeven toe te wijzen, maar deze eenmaal aan een rol kunnen toewijzen en gebruikers later kunnen toevoegen of verwijderen.

SQL ondersteunt het maken van rollen op zowel server- als databasenniveau, afhankelijk van het SQL-product dat wordt gebruikt. Alle Azure SQL-producten ondersteunen databasrollen, maar alleen SQL Server en Azure SQL Managed Instance ondersteunen serverrollen.

Beheerders kunnen een aangepaste rol maken door verbinding te maken met een SQL-database en de CREATE ROLE-opdracht in T-SQL uit te voeren. De GRANT-opdracht wordt vervolgens gebruikt om machtigingen aan de nieuwe rol toe te wijzen, en de ALTER ROLE-opdracht voegt een bestaande databasegebruiker toe als lid van de rol.

Een typisch commando zou er als volgt uitzien:

sql
CREATE ROLE [dbusers]
GO GRANT SELECT, EXECUTE ON SCHEMA::Production TO [dbusers] GO ALTER ROLE [dbusers] ADD MEMBER [testuser] GO

In SQL-databases bestaan er voorgeconfigureerde rollen die sets van machtigingen bevatten waarmee beheerders standaardtaken aan specifieke gebruikers kunnen delegeren. Deze voorgeconfigureerde rollen kunnen niet worden gewijzigd, maar beheerders kunnen aangepaste rollen creëren.

Wat nog belangrijk is om te begrijpen

Bij het werken met beveiliging in SQL Server is het cruciaal om de noodzaak van een goede rolstructuur en het beheer van logins en gebruikers niet te onderschatten. Elke organisatie heeft specifieke behoeften, en de juiste configuratie van beveiligingsprincipalen kan de algehele efficiëntie en veiligheid van je SQL-omgeving aanzienlijk verbeteren. Het is niet alleen belangrijk om de technische stappen te begrijpen, maar ook de implicaties van verkeerde configuratie. Het gebruik van verkeerde authenticatiemechanismen of het verkeerd toewijzen van machtigingen kan leiden tot ernstige beveiligingsproblemen. Het beheren van rollen en machtigingen in een organisatie is een doorlopend proces, en het is van essentieel belang dat beheerders regelmatig de configuratie herzien en bijwerken om aan de veranderende behoeften en bedreigingen te voldoen.

Hoe configureer je HA/DR voor hybride implementaties in Azure?

Hybride implementaties in Azure bieden een breed scala aan mogelijkheden voor organisaties die hun IT-omgevingen zowel on-premises als in de cloud willen integreren. Een van de belangrijkste overwegingen bij het beheren van databases in hybride omgevingen is het waarborgen van de beschikbaarheid en veerkracht van systemen, vooral bij gebruik van hoogbeschikbaarheid (HA) en disaster recovery (DR) oplossingen. In deze context is het van essentieel belang om te begrijpen hoe je deze oplossingen effectief kunt configureren voor zowel lokale als cloudgebaseerde SQL Server-omgevingen.

Het bepalen van de vereisten voor een adequaat herstelpunt (RPO) en hersteldoelpunt (RTO) is de eerste stap. Deze twee parameters zijn cruciaal bij het plannen van HA/DR-oplossingen, omdat ze bepalen hoe snel een systeem kan herstellen na een storing en hoeveel gegevens mogelijk verloren gaan. Een goede inschatting van RPO en RTO helpt bij het kiezen van de juiste infrastructuur en tools, zodat de applicatie en database snel weer operationeel kunnen zijn zonder significante verliezen van cruciale gegevens.

Binnen Azure kunnen specifieke oplossingen voor HA en DR helpen bij het implementeren van redundante configuraties en het automatiseren van failover-processen. Azure biedt verschillende services die het mogelijk maken om SQL Server-instanties te repliceren naar de cloud en te zorgen voor een continue beschikbaarheid van gegevens. Active geo-replication, bijvoorbeeld, stelt SQL Database in staat om gegevens in verschillende regio's te repliceren, waardoor de veerkracht van een database aanzienlijk wordt verhoogd. Dit is van bijzonder belang wanneer je werkt in een hybride infrastructuur waarbij sommige systemen on-premises blijven, maar belangrijk is dat gegevens continu toegankelijk blijven, ongeacht waar ze zich bevinden.

Voor een grotere schaal van hoogbeschikbaarheid kunnen Azure Virtual Machines (VM's) worden gebruikt om altijd ingeschakelde SQL Server-instanties te draaien. Het configureren van een Always On Availability Group op Azure VMs maakt het mogelijk om een robuustere en flexibele oplossing te implementeren, waarbij meerdere kopieën van de database actief kunnen zijn in verschillende datacenters. Dit biedt niet alleen een manier om de beschikbaarheid van een SQL Server-instance te garanderen, maar het biedt ook de mogelijkheid om een snelle failover te realiseren bij een storing.

Naast replicatie en availability groups, biedt Azure ook mogelijkheden voor het configureren van failover-groepen en het beheren van quorumopties binnen een Windows Server Failover Cluster. Dit is een van de cruciale aspecten bij het waarborgen van de stabiliteit van een hybride omgeving. Het goed afstemmen van de quoruminstellingen voorkomt dat er onvoorziene conflicten optreden tussen de verschillende replicaties, vooral wanneer meerdere datacenters of locaties betrokken zijn.

Als het gaat om back-up en herstel, moeten organisaties ook rekening houden met hoe ze hun database-back-ups effectief beheren en uitvoeren. Dit gaat verder dan eenvoudige back-upstrategieën en richt zich op het vermogen om back-ups te herstellen tot een specifiek punt in de tijd. Dit is van groot belang in een hybride omgeving, waar back-ups mogelijk verspreid zijn over zowel on-premises als cloudopslag. Het uitvoeren van back-ups via T-SQL biedt administrateurs de flexibiliteit om back-ups op maat te maken en herstelacties direct vanuit de commandoregel uit te voeren.

Naast de basismaatregelen voor databasebeschikbaarheid moeten organisaties ook uitgebreide tests uitvoeren om de effectiviteit van hun HA/DR-oplossingen te verifiëren. Het is van essentieel belang dat bedrijven regelmatig failover-scenario's testen om te zorgen dat de processen goed werken wanneer een echte storing zich voordoet. Dit helpt niet alleen bij het valideren van de configuratie, maar zorgt er ook voor dat de betrokken teams goed voorbereid zijn en effectief kunnen reageren op storingen.

Bij het testen van een HA/DR-oplossing moeten alle mogelijke storing-scenario's worden overwogen. Dit omvat niet alleen het testen van netwerkstoringen of hardware-uitval, maar ook het testen van de prestaties onder verhoogde belasting, en het controleren van de tijd die nodig is om systemen volledig te herstellen. Het plannen van herstelstrategieën moet daarbij niet alleen gericht zijn op het herstel van gegevens, maar ook op het minimaliseren van de downtime voor gebruikers en applicaties.

Bij de keuze van een geschikte oplossing voor database-back-up en herstel binnen Azure, moeten organisaties niet alleen kijken naar de beschikbare tools en functionaliteiten van Azure SQL Database en SQL Server, maar ook naar de bredere architectuur van hun IT-omgeving. Het is belangrijk dat de back-up- en herstelstrategieën naadloos aansluiten op andere bedrijfskritische systemen en dat ze rekening houden met zowel on-premises als cloud-gebaseerde componenten.

De implementatie van HA/DR-oplossingen voor hybride implementaties in Azure vereist een holistische benadering die verder gaat dan het simpelweg inschakelen van enkele cloudservices. Het vergt gedegen planning, voortdurende monitoring en periodieke tests om ervoor te zorgen dat de systemen altijd beschikbaar zijn en snel kunnen herstellen van storingen. Het is van groot belang dat organisaties zich bewust zijn van de verschillende tools en configuraties die beschikbaar zijn binnen Azure en dat ze zorgvuldig overwegen hoe deze het beste kunnen worden afgestemd op de specifieke behoeften van hun hybride omgeving.

Hoe werkt het back-up- en herstelproces in Azure SQL en welke opties zijn er voor hoge beschikbaarheid?

Binnen Azure SQL Database en Azure SQL Managed Instance kunnen beheerders het herstelmodel van een database aanpassen via de opties in het eigenschappenvenster van de database. Door bijvoorbeeld het herstelmodel te wijzigen van SIMPLE naar FULL, wordt een extra type back-up mogelijk: de transaction log-back-up. Dit type back-up maakt het mogelijk om het herstel uit te voeren tot een specifiek tijdstip, iets wat met alleen volledige back-ups niet mogelijk is. Transaction log-back-ups kunnen frequent worden uitgevoerd, soms om de dertig seconden, wat een zeer fijnmazige terugzetmogelijkheid biedt. Wanneer een herstelopdracht wordt aangemaakt in SQL Server Management Studio (SSMS), kan via de Restore to-optie gekozen worden uit meerdere beschikbare back-ups. De back-up-tijdlijn toont overzichtelijk alle beschikbare back-ups, waardoor een beheerder eenvoudig kan bepalen tot welk moment hersteld kan worden.

In de Azure-portal wordt het herstellen van een database op een vergelijkbare wijze ondersteund. Via de wizard ‘Create SQL Database – Restore database’ kan een nieuwe database worden aangemaakt en gekozen worden tot welk tijdstip deze moet worden teruggezet. Azure ondersteunt daarnaast automatische back-ups met een korte bewaartermijn van 1 tot 35 dagen, maar ook een lange-termijn retentie (LTR) tot 10 jaar, wat cruciaal is voor compliance en wettelijke vereisten. Via het beleidsconfiguratiescherm kunnen beheerders deze retentie-instellingen per database aanpassen en daarmee de bewaartermijnen voor wekelijkse, maandelijkse en jaarlijkse back-ups vastleggen.

Naast het gebruik van grafische tools kunnen back-ups en hersteloperaties ook handmatig worden uitgevoerd met T-SQL-commando’s, zoals BACKUP DATABASE en RESTORE DATABASE. Dit maakt flexibele en programmeerbare beheerprocessen mogelijk, bijvoorbeeld voor geautomatiseerde scripts of integratie met andere beheersystemen. Back-ups kunnen worden opgeslagen op lokale schijven, maar ook direct naar Azure Blob Storage door een URL op te geven, waarbij authenticatie met behulp van een shared access signature (SAS) vereist is.

Wanneer een database wordt teruggezet vanuit cloudopslag, moet de beheerder in SSMS de juiste opslaglocatie selecteren en zich authenticeren met Azure, zodat de juiste bestanden beschikbaar zijn. Het is belangrijk om te beseffen dat een SQL Server die op een Azure Virtual Machine draait, een geïsoleerde omgeving is. De server zelf weet niets van de Azure-omgeving eromheen, waardoor aparte beveiligingsmaatregelen nodig zijn voor de SQL Server en de Azure Blob Storage.

Naast back-up en herstel is hoge beschikbaarheid (HA) en disaster recovery (DR) een fundamenteel onderdeel van databasebeheer in Azure. Azure biedt hiervoor diverse oplossingen, van actieve geo-replicatie waarbij een secundaire database replica in een andere regio wordt onderhouden, tot Always On availability groups die databases beschermen tegen storingen door failovermechanismen. Active geo-replicatie zorgt ervoor dat, zelfs bij grote regionale calamiteiten, de database continuïteit behouden blijft doordat de secundaire replica de primaire kan overnemen. Hoewel geo-replicatie beschikbaar is voor Azure SQL Database, biedt Azure SQL Managed Instance in plaats daarvan auto failover-groepen als HA-oplossing.

Bij het configureren van deze hoge beschikbaarheidsopties is het essentieel om te begrijpen dat het beheer van failover en replicatie niet alleen een technische handeling is, maar ook een strategische keuze die invloed heeft op de bedrijfscontinuïteit en de naleving van regelgeving. Het juist instellen van failovergroepen, quorumopties en log shipping vereist diepgaande kennis van zowel de onderliggende infrastructuur als de operationele impact.

Belangrijk is dat het kiezen van een back-upstrategie niet alleen draait om het voorkomen van dataverlies, maar ook om het waarborgen van bedrijfskritische processen, het minimaliseren van downtime en het voldoen aan wettelijke bewaarplichten. Voor een effectieve implementatie moeten beheerders daarom ook rekening houden met de beveiliging van back-upbestanden, zowel lokaal als in de cloud, en met de juiste authenticatie- en toegangscontrolemechanismen. Alleen dan kan worden gegarandeerd dat back-ups betrouwbaar zijn en op elk gewenst moment ingezet kunnen worden.