Veeam configureren met minimale rechten op SQL Server

Veeam is de onbetwiste marktleider als het gaat om back-up en replicatie. Ook GTS-Online maakt daarom gebruik van o.a. Veeam Back-up & Replication voor het cloudplatform voor de Online Werkplek Op Maat. We willen echter wel voorkomen dat het Veeam service account dat gebruikt wordt voor de back-up op alle Microsoft SQL (MSSQL) servers van onze klanten sysadmin-rechten heeft. Daarom deze blog: hoe kun je gemakkelijk en geautomatiseerd voor Veeam de minimaal benodigde rechten configureren op een SQL-server.

GTS-Online probeert altijd haar omgeving up-to-date te houden met de laatste technieken en ontwikkelingen. Afgelopen maanden zijn we dan ook druk bezig geweest met de implementatie van Veeam Back-up & Replication. Dit is ter vervanging van DPM (Microsoft Data Protection Manager) wat we de afgelopen jaren hebben gebruikt, maar minder goed aansluit bij onze huidige wensen en eisen en die van onze klanten.

Back-up aanpassen doe je niet zomaar

Het aanpassen van de back-up software is altijd een uitdaging. Zeker bij het overstappen naar een ander pakket, zoals in ons geval. Je moet wel zorg dragen dat het oude pakket blijft draaien, zonder het nieuwe in de weg te zitten. Je wilt ook afscheid nemen van de “rotzooi” en weer schoon beginnen, zonder de retentietijd en functionaliteit te verliezen. De impact is ook groot omdat de software in vrijwel de gehele omgeving lees- en soms zelfs schrijfrechten nodig heeft. In het geval van Veeam gaat dit met een service account dat de juiste permissies toegewezen moet krijgen. Vaak zien we dat gekozen wordt voor de “makkelijke” oplossing, namelijk het service account administrator te maken op alle betrokken servers en applicaties. Dit is echter een groot beveiligingsrisico gezien de rechten dat dit account heeft over de gehele omgeving.

Rechten minimaliseren voor Veeam

GTS-Online heeft daarom besloten om de rechten van het service account te minimaliseren. Veeam heeft een uitgebreid knowledge base artikel over de minimale rechten die Veeam, en daarmee het service account, nodig heeft. De juiste permissies configureren in het besturingssyteem van de verschillende servers was heel gemakkelijk te regelen door gebruik te maken van Group Policy. Het instellen van de minimale rechten voor SQL-databases was echter niet zo makkelijk te automatiseren.

We zijn na diverse testen uitgekomen op een zelf geschreven T-SQL script. Dit script voorziet het service account van Veeam op alle databases binnen een Microsoft SQL-server van het de minimale rechten. Het enige wat nog wel handmatig moet worden uitgevoerd is het T-SQL script zelf op alle SQL-instances in de omgeving.

T-SCRIPT uitgelegd

Het script zal ik stapsgewijs doornemen. Alle stukken code bij elkaar maakt het complete script wat op iedere SQL-instance uitgevoerd kan worden. Doordat dynamisch alle beschikbare databases worden opgehaald hoeven deze niet gespecificeerd te worden. Bij het gebruik van onderstaande T-SQL script is het natuurlijk wel van belang om het juiste domein en de gebruikersnaam aan te passen.

Per SQL instance moet een login aanwezig zijn. Deze maken we aan met de volgende commando’s en wordt daarmee gekoppeld aan het Windows (Active Directory) account:

--Create domain login
USE [master]
Domain
CREATE LOGIN [Domain\VeeamServiceAccount] FROM WINDOWS

Vervolgens moet op alle databases de rechten gezet worden. Een uitzondering daarop zijn de system databases master, model, msdb en tempdb waar we later specifieke rechten op zullen configureren.

--Set permissions for [Domain\VeeamServiceAccount] on ALL user databases
USE [master]
Domain
DECLARE @command varchar(1000) 
SELECT @command = 'USE [?]; if ''?'' in (''master'',''model'',''msdb'',''tempdb'') return;
       CREATE USER [Domain\VeeamServiceAccount] FOR LOGIN [Domain\VeeamServiceAccount];
       EXEC sp_addrolemember N''db_backupoperator'', N''Domain\VeeamServiceAccount'';
       EXEC sp_addrolemember N''db_denydatareader'', N''Domain\VeeamServiceAccount'';
	   '
exec sp_MSforeachdb @command

Voor alle system databases zullen per stuk aparte rollen en/of permissies worden ingesteld:

--Set permissions for [Domain\VeeamServiceAccount] on system databases
USE [master]
Domain
CREATE USER [Domain\VeeamServiceAccount] FOR LOGIN [Domain\VeeamServiceAccount]
EXEC sp_addrolemember 'db_backupoperator', [Domain\VeeamServiceAccount]
EXEC sp_addrolemember 'db_datareader', [Domain\VeeamServiceAccount]
GRANT VIEW ANY DEFINITION TO [Domain\VeeamServiceAccount]
GRANT VIEW SERVER STATE TO [Domain\VeeamServiceAccount]

USE [model]
Domain
CREATE USER [Domain\VeeamServiceAccount] FOR LOGIN [Domain\VeeamServiceAccount]
EXEC sp_addrolemember 'db_backupoperator', [Domain\VeeamServiceAccount]
EXEC sp_addrolemember 'db_datareader', [Domain\VeeamServiceAccount]

USE [msdb]
Domain
CREATE USER [Domain\VeeamServiceAccount] FOR LOGIN [Domain\VeeamServiceAccount]
EXEC sp_addrolemember 'db_backupoperator', [Domain\VeeamServiceAccount]
EXEC sp_addrolemember 'db_datareader', [Domain\VeeamServiceAccount]
EXEC sp_addrolemember 'db_datawriter', [Domain\VeeamServiceAccount]

Met bovenstaande script zul je een heel eind kunnen komen om de rechten zo strak mogelijk in te richten. Mocht je toch nog wat hulp nodig hebben? Stuur even een berichtje naar onze engineers, ze helpen je graag op weg!



Wilt u graag een afspraak maken? Dat kan!

Wij ontvangen u met plezier of komen graag bij u op locatie.

[contact-form-7 id="605" title="Contactformulier 1"]
Heeft u een vraag?

Vul onderstaand formulier in en wij nemen zo snel mogelijk contact op!

[contact-form-7 id="606" title="Mail icoon popup"]
X