Doorgaan naar hoofdcontent

SQL Server 2008 R2 en Kerberos

Nadat ik met mijn PowerShell script een SQL Server 2008 R2 installatie heb uitgevoerd liep ik de meldingen in de Event log door. In het application gedeelte kwam ik onderstaande informational melding tegen.
The SQL Server Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service. Error: 0x2098, state: 15. Failure to register an SPN may cause integrated authentication to fall back to NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies.

Deze melding is te verwachten op het moment dat de server draait onder een local of domein account in plaats van onder een Network Service of Local System account. De reden hiervan is dat deze accounts, in tegenstelling tot de Network Server of Local System accounts, geen autorisatie hebben om een SPN (= Service Principal Name) te registreren. Aangezien de registratie van de SPN mislukt valt de authenticatie terug naar het standaard NTLM protocol.

Om de server toch onder Kerberos te laten draaien zijn er twee opties.

  1. Als beheerder zelf de SPN te registreren. De syntax hiervoor is: SetSPN.exe -A MSSQLSvc/<ComputerName>.<DomainName>:<port> <AccountName>. Dit is een veel gebruikte methode en deze wordt bijvoorbeeld beschreven in het artikel "SQL Protocols: Using Kerberos with SQL Server".
  2. Het account rechten geven om zelf zijn SPN te mogen registreren. Het account heeft hiervoor de rechten "Read servicePrincipalName" en "Write servicePrincipalName" nodig op het eigen account. Deze manier is ook de door Microsoft beschreven methode in het knowledge base artikel "How to use Kerberos authentication in SQL Server". De procedure die Microsoft in dit artikel beschrijft gaat wel uit van handmatige configuratie door middel van het gebruik van ADSI EDIT (Adsiedit.msc).

De tweede optie heb ik verder uitgewerkt. In plaats van handmatig via ADSI EDIT de aanpassing door te voeren heb ik ervoor gekozen deze aanpassing met Dcacls.exe door te voeren. De aanroep van dit commando heb ik in een PowerShell script gevat. Deze is echter ook vanaf de command line uit te voeren.

$DistinguishedName = "CN=SQL_Server,OU=...,DC=antiohne,DC=local";

# Technet informatie over Dcacls.exe: 
# http://technet.microsoft.com/en-us/library/cc771151(WS.10).aspx
#
# Samenvatting:
# ------------------------------------------------------------------------------
# "[\\<Computer>\]<ObjectDN>" 
#  Identificeert het Active Directory object welke aangepast dient te worden.
# De distinguished name van het object dient gebruikt te worden. Indien het 
# object op een remote computer staat dient de computer name ook opgegeven te
# worden. De parameter dient tussen quotes te staan.
# /I 
#  Specifieert de objecten waarop de rechten gezet te worden
#  T: Het object zelf en de kinderen daaronder
#  S: Alleen de kinderen onder het object
#  P: Het object en de kinderen tot 1 niveau lager
# /G
# De rechten die gezet dienen te worden op de gebruiker of groep

& dsacls.exe $DistinguishedName /I:P /G "\SELF:RPWP;servicePrincipalName" 

Nadat het script succesvol is uitgevoerd herstart ik de SQL Server. Nu is in de log twee keer te zien dat de registratie van de SPN is gelukt en dat de SQL Server nu onder Kerberos authenticatie draait.

The SQL Server Network Interface library successfully registered the Service Principal Name (SPN) [ MSSQLSvc/atlas.antiohne.local:1433 ] for the SQL Server service. 

The SQL Server Network Interface library successfully registered the Service Principal Name (SPN) [ MSSQLSvc/atlas.antiohne.local ] for the SQL Server service. 

Reacties

Populaire posts van deze blog

Asus Zenbook UX31A en het loszittende plakbandje

Ik heb al weer een jaar of drie naar tevredenheid een Asus Zenbook UX31A ultrabook in gebruik. Een 13" model met een goede 1920x1080 resolutie en een lekker vlotte Core i7 processor en 256 GB SSD. Helaas heb ik sinds een paar weken problemen met het toetsenbord. Bepaalde toetsen (zoals de A, E, backspace, Windows e.d.) reageren een tijdlang niet om het vervolgens weer wel een tijdje te doen. Na een korte zoekactie op internet blijkt dit een bekend euvel te zijn van deze serie van Asus ultrabooks. Op IFixit vind ik een i nstructie waarin uitgelegd wordt dat dit komt doordat de stekker van het toestenbord los is gekomen achter het stukje plakband. Een euvel dat jezelf kan oplossen als je de juiste schroevendraaier in huis hebt in een minuut of tien. In drie korte stappen wordt uitgelegd wat je moet doen. Van de week de juiste T5 torx schroevendraaier gekocht en vandaag maar een poging gedaan het euvel op te lossen. Na het openschroeven van de achterkant de connector beoordeeld ...

Installatie SQL Server 2008

Alle voorbereidingen voor de installatie van SQL Server 2008 zijn gedaan. Er is een VPC aangemaakt met daarop een verse Windows Server 2008 installatie en in het AD zijn alle benodigde accounts aangemaakt. We loggen op de VPC in met het installatie account (SQL_Setup). Vervolgens maken we verbindingen met de SQL server installatie media. In mijn geval een ISO bestand met daarop SQL Server 2008 Developer Edition. We starten de installatie door de setup te starten (eventueel via Auto Play). Aangezien Windows Server 2008 met Vista de UAC (User Account Control) functionaliteit deelt dient het account dat je gebruikt dus administrator te zijn op de server waarop we SQL Server installeren. De setup wizard detecteert dat het Microsoft .NET Framework (standaard zijn van het Framework v1.0, v1.1 en v2.0 geinstalleerd op Windows Server 2008) bijgewerkt dient te worden naar een hogere versie en dat er een bijgewerkte Windows Installer nodig is. We starten de installatie hiervan middels de keuze ...

Aanmaken service accounts voor SQL Server 2008

Gisteren heb ik de service accounts voor MOSS 2007 aangemaakt. Vandaag gaan we de accounts aanmaken voor SQL Server 2008. Ook hier pas ik het principe van 'least privileges' toe. Dit betekent iedere service zijn eigen account en als kan geen beheerder rechten toekennen. Na het bestuderen van het MSDN artikel ' Setting Up Windows Service Accounts ' ben ik tot onderstaande account matrix gekomen. [ Download SA account matrix ] Bovenstaande accounts worden aangemaakt in het AD onder de eerder aangemaakte organisatorische eenheid voor service accounts. De SQL Server accounts worden geplaatst onder 'SQL Server'. Na het aanmaken van de SQL Server accounts ziet mijn AD er als volgt uit.