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

Bevindingen over de E-tech ADWG02 tot nu toe

Ik heb de E-tech ADWG02 nu bijna een week in gebruik. Dit is de vervangende modem voor de buggy Linksys WAG54G die ik eerder gekocht had. Mijn bevindingen over de E-tech tot nu toe: Geen crashes tot nu toe. De firmware lijkt op dat punt stabiel. Het apparaat is niet door middel van een knop aan of uit te zetten. Erg vervelend omdat ik het apparaat alleen uit kan zetten door de stekker uit het stopcontact te halen. De reden dat ik hem graag uit wil kunnen zetten is dat het apparaat in de woonkamer staat (in het zicht) en de lampjes nogal fel schijnen. Dat vind ik niet erg prettig. Daarnaast wil ik niet dat de verbinding de gehele dag open staat uit beveiligingsoverwegingen en vanwege het stroomverbruik. WIFI is middels een setting uit te zetten. Als je de setting uitvinkt en bevestigd door middel van een 'apply' zie je het lampje uitgaan op de ADSL modem. Er is op dat moment ook geen WIFI verbinding actief. Sla je de setting definitief op dan reboot de modem automat...

Active Directory limieten

Zoals ieder systeem heeft Active Directory ook zijn limieten. Tijdens wat Active Directory research kwam ik het volgende Technet artikel tegen waarin deze worden benoemd: Active Directory Maximum Limits . Kort samengevat zijn de limieten: Maximum aantal objecten per domain controller in een forest : ongeveer 2,5 biljoen (gedurende de volledige levensduur). Maximum aantal security identifiers (SID's) per domein : ongeveer 1 biljoen (gedurende de volledige levensduur). Aantal groepen waarvan een security indentifier (persoon, groep, computer account) lid kan zijn : ongeveer 1.015 groepen. FQDN lengte limiet : maximum lengte is 64 tekens (dit is inclusief punten en mintekens) voor de fully qualified domain name (FQDN). Bestandsnaam limiet : Windows kent een pad lengte limiet van 260 tekens. Deze is ook van toepassing op de fysieke bestanden van AD zoals SYSVOL. Organisational unit limiet : maximum lengte is 64 tekens. Heeft te maken met de Windows limiet van 260 tekens die in de gaten...

Applicatie architectuur

Een gangbare architectuur voor het opdelen van applicatie functionaliteit is die van het groeperen van functionaliteit naar aandachtsgebied. Onderstaande afbeelding geeft de plaat weer die de Patterns & Practices groep van Microsoft hiervoor gebruikt binnen hun Microsoft Application Architecture Guide (2nd edition) . Dit artikel geeft een samenvatting weer van de essentie van deze architecturele opdeling van een applicatie.   Ontwerp principes Hanteer bij het ontwerpen van een applicatie de volgende vijf principes: Scheiden van verantwoordelijkheid (Separation of concerns) . Deel de toepassing op in afzonderlijke functies met zo min mogelijk overlap. Afzonderlijke verantwoordelijkheid (Single Responsibility) principe . Elke component- of module moet verantwoordelijk zijn voor een bepaalde functie / functionaliteit of over de samenvoeging van samenhangende functionaliteit. Het principe van minste kennis (Principle of Least Knowledge) . Een component of een obj...