Business Central serviceaccount inrichten

Business Central serviceaccount inrichten
Business Central serviceaccount inrichten

Je kunt het Business Central serviceaccount eenvoudig via een script inrichten.

Business Central-clients gebruiken het Business Central serviceaccount om verbinding te maken met een instance van de Business Central Server. Vervolgens gebruikt de server dit account om toegang te krijgen tot de Business Central-database. Tijdens de installatie van Business Central Server wordt een Active Directory-account opgegeven om de serverreferenties vast te leggen. Standaard draait de Business Central Server onder het Netwerkservice-account. Dit is een vooraf gedefinieerd lokaal account dat minimale rechten heeft op de lokale machine. Deze fungeert als identiteit van de computer binnen het netwerk.

Het wordt aanbevolen om in plaats daarvan een speciaal domeingebruikersaccount aan te maken voor het uitvoeren van de Business Central Server. Het Netwerkservice-account wordt namelijk als minder veilig beschouwd, omdat het gedeeld kan worden met andere netwerkservices. Gebruikers met rechten op dit account hebben automatisch ook toegang tot alle services die hiermee draaien. Door een specifiek domeingebruikersaccount in te stellen, kan bovendien hetzelfde account worden gebruikt voor SQL Server, ongeacht of SQL Server zich op dezelfde machine bevindt. In deze blog post gaan we uit van het domaingebruikersaccount voor het inrichten van het Business Central serviceaccount.

Wanneer u ervoor kiest om het Netwerkservice-account te blijven gebruiken, is er geen specifieke configuratie vereist. Wel is het belangrijk om te controleren of dit account over de juiste databasebevoegdheden beschikt in SQL Server, zoals beschreven in de documentatie over de vereiste databasebevoegdheden voor het serviceaccount.

Het account machtigen om aan te melden als een service

Afhankelijk van verschillende factoren kan het account al de mogelijkheid hebben om zich aan te melden als een service. Bijvoorbeeld: als u eerder SQL Server hebt geïnstalleerd en deze hebt geconfigureerd om onder hetzelfde account te draaien, heeft SQL Server het account mogelijk al aangepast om aan te melden als een service. Wanneer deze machtiging ontbreekt, kunnen Business Central Server-instanties mogelijk niet starten.

U kunt het aanmelden als een service inschakelen via de console Lokale beveiligingsbeleid op de computer waarop SQL Server draait.

Om de console Lokale beveiligingsbeleid te openen, doet u één van de volgende:

  • Typ secpol.msc in het zoekvak op het Startscherm en druk op Enter.
  • Open vanuit Serverbeheer of het Configuratiescherm de Beheertools.
  • Vouw Lokaal beleid uit en selecteer Toewijzing van gebruikersrechten.

Klik met de rechtermuisknop op Aanmelden als een service en selecteer Eigenschappen.

Selecteer Gebruiker of groep toevoegen, zoek het gebruikersaccount dat u gebruikt als Business Central serviceaccount, en voeg dit toe.

Zie voor meer informatie: Beveiligingsbeleid configureren.

TSQL script voor het inrichten van het Business Central serviceaccount

-- Variabelen declareren
DECLARE @DomainAccount NVARCHAR(100) = 'domain\accountname'
DECLARE @DatabaseName NVARCHAR(128) = 'Business Central Database'

-- Server-level (master database)
DECLARE @SQL NVARCHAR(MAX)

SET @SQL = '
USE [master];

IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = ''' + @DomainAccount + ''')
    CREATE LOGIN [' + @DomainAccount + '] FROM WINDOWS;

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = ''' + @DomainAccount + ''')
    CREATE USER [' + @DomainAccount + '] FOR LOGIN [' + @DomainAccount + '];

GRANT SELECT ON [master].[dbo].[$ndo$srvproperty] TO [' + @DomainAccount + '];

IF NOT EXISTS (
    SELECT * 
    FROM sys.server_role_members rm
    JOIN sys.server_principals r ON rm.role_principal_id = r.principal_id
    JOIN sys.server_principals m ON rm.member_principal_id = m.principal_id
    WHERE r.name = ''dbcreator'' AND m.name = ''' + @DomainAccount + '''
)
    ALTER SERVER ROLE [dbcreator] ADD MEMBER [' + @DomainAccount + '];
'
EXEC sp_executesql @SQL

-- Database-level (Business Central database)
SET @SQL = '
USE [' + @DatabaseName + '];

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = ''bc_server_runtime'')
    CREATE ROLE bc_server_runtime;

IF NOT EXISTS (
    SELECT dp.name, rm.member_principal_id
    FROM sys.database_principals dp
    LEFT JOIN sys.database_role_members rm ON dp.principal_id = rm.role_principal_id
    WHERE dp.name = ''db_datareader'' AND rm.member_principal_id IS NULL
)
    ALTER ROLE db_datareader ADD MEMBER bc_server_runtime;

IF NOT EXISTS (
    SELECT dp.name, rm.member_principal_id
    FROM sys.database_principals dp
    LEFT JOIN sys.database_role_members rm ON dp.principal_id = rm.role_principal_id
    WHERE dp.name = ''db_datawriter'' AND rm.member_principal_id IS NULL
)
    ALTER ROLE db_datawriter ADD MEMBER bc_server_runtime;

IF NOT EXISTS (
    SELECT dp.name, rm.member_principal_id
    FROM sys.database_principals dp
    LEFT JOIN sys.database_role_members rm ON dp.principal_id = rm.role_principal_id
    WHERE dp.name = ''db_ddladmin'' AND rm.member_principal_id IS NULL
)
    ALTER ROLE db_ddladmin ADD MEMBER bc_server_runtime;

GRANT VIEW CHANGE TRACKING ON SCHEMA::[dbo] TO bc_server_runtime;
GRANT VIEW DATABASE STATE TO bc_server_runtime;
GRANT ALTER ON DATABASE::[' + @DatabaseName + '] TO bc_server_runtime;

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = ''' + @DomainAccount + ''')
    CREATE USER [' + @DomainAccount + '] FOR LOGIN [' + @DomainAccount + '];

ALTER ROLE bc_server_runtime ADD MEMBER [' + @DomainAccount + '];
'
EXEC sp_executesql @SQL

Het originele artikel van Microsoft, vind je hier.

Wil je contact met mij opnemen, dan kan dat via het contact formulier.

0 Shares:
You May Also Like