Configurer kerberos et SharePoint 2010 FR

Post on 15-Jan-2015

1.820 views 2 download

description

 

Transcript of Configurer kerberos et SharePoint 2010 FR

Configurer Kerberos et SharePoint 2010

Nicolas Georgeault

Architecte SharePointMVP SharePoint Server

Email: ngeorgeault@club-sharepoint.fr

Blog: http://ngeorgeault.club-sharepoint.fr

Twitter: www.twitter.com/ngeorgeault

Public Consulting Group

• Conseil aux états et aux programmes locaux de service aux Individus et de la Santés depuis 1986.

• Plus de 1000 professionnels sur 50 bureaux aux Etats-Unis, au Canada, en Angleterre et en Pologne.

• Services de conseil en management et en solutions technologiques pour la mesure de la performance des services du secteur publique.

• 5 pôles de compétences:

http://publicconsultinggroup.com

Agenda

• Qu’est-ce que Kerberos, et pourquoi en avons-nous besoin?• Les SPNs requis pour SharePoint 2010• Configurer le service C2WTS• Démos

• Scenario 1 – Services Excel vers les Services d’Analyses• Scenario 2 – Applications Web (Afficheur RSS)• Scenario 3 – Bases de données SQL Server• Scenario 4 – Services de Rapports SQL Server

• Trucs, astuces et Liens utiles• Questions

References…

• Martin Hatch - SharePoint User Group UK (SUGUK)• http://www.martinhatch.com/

• De longues journées et nuits a comprendre et a mettre en place…

Demo Environment

• Domaine AD: “skopus.local”

wfe1.skopus.localhttp://portail/

app1.skopus.localhttp://portail-rss/Services Excel

Bases de donnéesSQL Server (DBs SP)

Administration Centrale

olap1.skopus.localServices d’ Analyses SQL

Web Server App Server Data Server

En general…

DéveloppentProduction BAM!“Login failed for user

'NT AUTHORITY\ANONYMOUS LOGON'"

Alors vous deployez en production…

Mais alors que ce passe-t-il?

CHAMPAGNE!!Tous fonctionne bien… C’est facile ;)

Le fameux problème de “Double-Hop”

• Le “double hop” fait référence a la situation ou un service (Service A) doit utiliser l’identite de l’utilisateur (John) pour être identifier auprès d’un autre service comme cet utilisateur.

• C’est ce qu’on appelle la “Délégation”

• Le défis c’est que l’authentification par défaut de Windows (NTLM) ne supporte pas la délégation. Voila pourquoi le second service reçoit une demande de connexion NULL (connexion anonyme)

John Client

bob

Service A Service B

bob

Delegation

Qu’est-ce que Kerberos ?

• Protocole d’Authentification• Le plus sécurisé des Protocoles d’Authentification Windows• Tellement plus efficace que NTLM• Vous permets de “déléguer l’authentification” (ex: multi-hop)

• Si vous être authentifie par une source de données “au nom de l’utilisateur actuel” Alors vous n’y couperez pas… Kerberos est indispensable!

• SQL Server n’est pas “Claims aware” (en version pré SQL 2011)• Services de Rapports SQL Server (SSRS)• Services d’Analyses SQL Server (SSAS)

Kerberos Authentication Example

KDC

Client

Serveur

KRB_AS_REQ

KRB_AS_REP

1

2

HTTP GET 3

4 ACCESS DENIED

John

skopus.local

svcPortalSPN: HTTP/portail

svcPortal

KRB_AP_REP

KRB_AP_REQ 7

8

http://portailsvcPortal

KRB_TGS_REQ

KRB_TGS_REP

5

6

svcPortal

SPN

Prérequis Kerberos

• Avoir le temps…• Etre super copain avec l’administrateur du domaine.• Un Service de synchronisation du temps!• Une ferme SharePoint 2010• Des comptes de services correctement crées (Dépend de vos besoins)• Un services DNS opérationnel (un fichier Host peut dépanner)• Configuration d’Active Directory (SPN, Délégation)• Configuration de SharePoint• Configuration IIS (Kernel Mode)• Port de communication non bloque (par défaut TCP/UDP 88)

Ok… Mais c’est quoi un SPN?

• “SPN pour Service Principal Name est le nom par lequel un client identifie de manière unique une instance d'un service.”

• Plusieurs instances > Un SPN pour chaque instance.• Plusieurs noms > Un SPN pour chaque nom si besoin d’authentification.

• Une instance de service peut enregistrer un SPN pour chaque nom ou l'alias de l'hôte.

http://support.microsoft.com/kb/929650/fr

DNS

• Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME)• Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME)• Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME)• Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME)• Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME)• Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME)• Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME)

Nom D’Hote (A Record) seulement, PAS D’ALIAS (CNAME) !!!

On vous l’a dit?

SPNs

• Active Directory utilise les “Service Principal Names” (SPNs) pour identifier les objets dans une implémentation Kerberos. Un SPN consiste en:

<un type de service> / <un nom de domaine> : <un port>

• Vous créez les SPNs en utilisant la commande setspn.exe:

setspn.exe –S <SPN> <domain>\<account>

Il faut être administrateur du domaine pour utiliser la commande

• Lister tous les SPNs pour un compte

setspn.exe –L <domain>\<account>• Trouver tous les SPNs dupliques

setspn.exe –X

Déléguer ses supers pouvoirs!

• Vous avez déjà probablement essaye de déléguer ce pouvoir…• Avec un Control total ce sera parfait ;)

Failed!!!

• La délégation n’est pas une permission… Mais un droit d’utilisateur

ntrights -u DOMAIN\useraccount +r SeEnableDelegationPrivilege

Web Applications

• Les Applications Web utilisent le protocole “HTTP”.• Le numéro de Port est EGALEMENT requis si vous n’utilisez pas un numéro de port non-standards

Note, Le SPN reste HTTP même pour les applications en SSL!• Vous devez déclarer le nom de domaine ET le FQDN de l’URL pour cette application web.

• Ex: http://portail ou https://portail dans le domaine skopus.local• HTTP/portail• HTTP/portail.skopus.local

• Ex: http://nonstandardport:8080/ dans le domaine skopus.local• HTTP/portail:8080• HTTP/portail.skopus.local:8080• HTTP/portail• HTTP/portail.skopus.local

• A appliquer au COMPTE DE SERVICE du POOL D’APPLICATION de cette Application Web.

Bases de données SQL

• Les Bases de données SQL utilisent le protocole “MSSQLSvc” • Vous devez déclarer le FQDN du serveur SQL (Indépendamment du fait que vous utilisiez les

alias SQL!)

• Création automatique du SPN• Si le Server SQL fonctionne avec les comptes Local System ou un compte Admin du domaine, il créera

automatiquement le SPN quand l’instance est démarrée.• Ok… Vous devriez vraiment faire cela manuellement!

• Mes serveurs SQL sont “app1.skopus.local”

Les SPNs devront être:• MSSQLSvc/app1.skopus.local• MSSQLSvc/app1.skopus.local:1433 (Bonne pratique SQL… Changer le port par défaut)

• A appliquer au COMPTE DE SERVICE de l’instance de la base de données!

Les Services d’Analyses SQL Server

• Les services SSAS utilisent le protocole “MSOLAPSvc.3”• Vous devez déclarer le nom de domaine ET le FQDN de votre server SSAS

sans aucun numéro de port!

• Mes services SSAS sont installes sur “olap1.skopus.local”

Les SPNs dont j’ai besoin sont:• MSOLAPSvc.3/olap1• MSOLAPSvc.3/olap1.skopus.local

• A appliquer au COMPTE DE SERVICE des Services d’Analyses SQL de l’instance SSAS!

L’Authentification dans SharePoint 2010

Clients Ferme SharePoint Systeme externe

Classic (Windows Auth)

Claims

Claims

Classic (Windows Auth)

Claims

Authentification Entrante

Authentification Intra/Inter Ferme

Authentification Sortante

Normalisation de l’identite

NT TokenWindows Identity

ASP.Net (FBA)SAL, LDAP,

Custom

SAML TokenClaims Based Identity

SPUser

NT TokenWindows Identity

SAML1.1+ADFS, etc.

Classique Claims/Revendications

Normalisation des revendications vers l’identite Windows

NTLM CLAIMS

John

Kerberos

WFE APP SQL

Le service C2WTS

• C2WTS: Claims to Windows Token Service traduit les “Informations d’autorisation basées sur les revendications” interne a SharePoint en Informations d’autorisation Windows.

• C2WTS est un Service Windows• Fonctionne par défaut avec le compte “Local System”• Bonne pratique: Utiliser un Compte de Domaine

• Vous devrez créer un SPN fictif pour le C2WTS. Nous en auront juste besoin pour la Délégation Contrainte.

Nous créons le SPN “SP/C2WTS”

• A appliquer au COMPTE DE SERVICE du service Windows C2WTS

Le service C2WTS

Les applications de service suivantes exigent la traduction des informations d’identification fondées sur les revendications vers les informations d'identification Windows. Ce processus de traduction utilise le Claim To Windows Token Service (C2WTS):

• Excel Services• PerformancePoint Services• InfoPath Forms Services• Visio Services

TechNet - http://technet.microsoft.com/en-us/library/ff607695.aspx

Example de service C2WTS

NTLM SAML

WFE APP SQL

Excel Services

SA

ML

C2WTS

SA

ML

Kerb

Kerb

Kerberos

S4U Logon

AD

John

Configurer C2WTS

• C2WTS requière le service “Cryptographic Service” veillez vous assurer de mettre en place la dépendance!

• Le service C2WTS essayera de vérifier les certificats de sécurité Microsoft a son démarrage; cela nécessite une connexion Internet et les connexions par Proxy ne sont pas supportées!

• Contournement1 - .Net 4• Install .Net Framework 4 (which supports Proxy connections)• Some reported issues with SharePoint PowerShell and .Net 4

• Contournement2 – Desactiver le controle de CRL (Liste de Revocation des Certificats)• HKEY_USERS\.DEFAULT\SOFTWARE\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing• Value = State• Radix= decimal• Changer la valeur a '146944' pour desactiver le controle de CRL

• Contournement3 – Fichier HOSTS• Ajouter une entrée dans le fichier host “crl.microsoft.com” vers 127.0.0.1

Configurer C2WTS

• Le compte de service C2WTS doit être administrateur local sur le server sur lequel il est en fonction.

• Ce compte doit en plus avoir les permissions suivantes:• Act as part of the operating system• Impersonate a client after authentication• Log on as a service

En utilisant la gestion des règles de sécurité de la machine locale (secpol.msc)

Scenario 1: Services Excel vers les Services d’Analyses

Requête Web Interne(Claims)

Requête de donnée(Kerberos)

C2WTS

WFE Services Excel Serviced’AnalysesSQL Server

SP/c2wtsSP/excel

Delegation Contrainte

MSOLAPSvc.3/olap1.skopus.local

STS

Services Excel et C2WTS

• Dans notre démo nous avons les paramètres suivant:• Le compte de service des Services Excel: “SKOPUS\SkpSvcExcel”• Le compte de service de C2WTS: “SKOPUS\SkpSvcC2WTS”• Les services SSAS fonctionnent sur le serveur “olap1.skopus.local”• Le compte de service des services SSAS est “SKOPUS\SkpSvcSQLAnalysis”

• Donc il nous faut configurer les SPNs suivant:• setspn.exe –S SP/excel SKOPUS\SkpSvcExcel

• setspn.exe –S SP/c2wts SKOPUS\SkpSvcC2WTS

• setspn.exe –S MSOLAPSvc.3/olap1.skopus.local SKOPUS\SkpSvcSQLAnalysis

• setspn.exe –S MSOLAPSvc.3/olap1 SKOPUS\SkpSvcSQLAnalysis

• La Délégation Contrainte est paramétrée par Active Directory Users & Computers

DEMO

Services Excel vers les Services d’Analyses

Configurer Kerberos et SharePoint 2010

Conclusion: Services Excel vers les Services d’Analyses

• Les SPNs NE sont pas requis sur l’Application Web• C2WTS fait tout le “Sale” boulot ;)

• Tant que vous utilisez des comptes du domaine, vous n’aurez a configurer les SPNs et la Délégation Contrainte qu’une seule fois.. Peut importe le nombre de serveurs Excel vous installerez!

• PerformancePoint Services Fonctionne exactement de la même façon

(et si vous avez déjà configure les Services Excel alors le paramétrage de C2WTS a déjà été fait!)

Scenario 2: Le Lecteur de flux RSShttp://portail/ Requete Web(Kerberos)

WFE 1

LecteurRSS

http://portail-rss/ Requette Lecteur RSS(Kerberos)

Delegation Constrainte

HTTP/portail HTTP/portail-rss

APP 1

Configurer l’Application Web

• Administration Centrale – Changer le fournisseur d’authentification pour Kerberos• Vous devez créer les SPNs pour votre application Web• Dans notre exemple, vous avez 2 URLs d’Application Web

• http://portail et http://portail-rss/

• Le domaine AD est skopus.local• Le compte du pool d’application est SKOPUS\SkpAppPool• Il vous faut donc configurer les SPNs suivants:

• setspn.exe –S HTTP/portail SKOPUS\SkpAppPool• setspn.exe –S HTTP/portail.skopus.local SKOPUS\SkpAppPool• setspn.exe –S HTTP/portail-rss SKOPUS\SkpAppPool• setspn.exe –S HTTP/portail-rss.skopus.local SKOPUS\SkpAppPool• Délégation Contrainte: portail portail-rss

DEMO

Application Web

Configurer Kerberos et SharePoint 2010

Scenario 3: Serveur SQL de données

• Pas réellement “requis” mais recommande nous avons dons Kerberos de disponible dans l’installation

• (Plus efficace aussi!)

• SQL fonctionne sur le serveur app1.skopus.local• Le compte de service SQL est “SKOPUS\SkpSqlDbSvc”• Le port de la base de donnees SQL est 60433

• Il nous faut donc configurer les SPNs suivants:

• setspn.exe –S MSSQLSvc/app1.skopus.local:60433 SKOPUS\SkpSqlDbSvc

• setspn.exe –S MSSQLSvc/app1.skopus.local SKOPUS\SkpSqlDbSvc

DEMO

Le Serveur SQL de donnees

Configurer Kerberos et SharePoint 2010

Conclusion: Le Serveur SQL de données

• Rapide et facile (Pas de redémarrages nécessaires)• Requête SQL pour vérifier que les connexions fonctionnent:

Select s.session_id, s.login_name, s.host_name, c.auth_scheme

from sys.dm_exec_connections c

inner join sys.dm_exec_sessions s

on c.session_id = s.session_id

where s.host_name = ‘WFE1’

• Le journal d’evenements sur le Serveur Web• Evènement de connexion (4624)• Le Package d’authentification devrait être “Kerberos”

Scenario 4: SQL Server Reporting Services

Web Request(Kerberos)

Web Service(Kerberos)

Data Request(Kerberos)

WFE SQL ServerReportingServices

SQL Server AnalysisServices

HTTP/app1

Constrained Delegation

MSOLAPSvc.3/olap1.sp2010.local

HTTP/kerberos

Scenario 4: Services de Rapports

• Les Services de Rapport SQL Serveur (SSRS) fonctionne depuis un Service Web sur la machine Reporting Services, c’est une connexion HTTP standard

• La web part de l’affichage de rapport (sur le Frontal Web) est le lien de communication avec SSRS

• Ainsi nous aurons besoin de:• Un SPN pour l’application Web (Ou s’execute la web part de l’afficheur de rapports)• Un SPN pour notre URL du service Web de SSRS• Une délégation depuis l’Application Web Le service Web SSRS (2ieme hop)• Un SPN pour le service SSAS• Une délégation depuis le service Web SSRS SSAS (3ieme hop)

Scenario 4: Services de Rapports

• Nous avons deja configure les SPNs suivants (dans les etapes 1 et 2):• L’Application Web• Les Services d’Analyses SQL Server (SSAS)

• Donc il nous manque juste les SPNs pour les services de rapport• setspn.exe –S HTTP/app1.skopus.local SP2010\SkpSqlRpSvc• setspn.exe –S HTTP/app1 SP2010\SkpSqlRpSvc

• La Délégation Contrainte est, cette fois encore, paramétrée par Active Directory Users & Computers

DEMO

SSRS SSAS

Configurer Kerberos et SharePoint 2010

DésoléMais ca prend du temps!

Conclusion: SSRS SSAS

• Le Service Web SSRS est une Application Web• Les SPNs sont requis pour les Services Web SSRS• Comme SSRS ne support pas le Claims en 2008 R2, Kerberos fera toujours

le hop depuis le Frontal Web! Mais ca change ;) Vive SQL 2012…• Si les Services SSRS sont montes en grappe, il faut alors utiliser l’adresse

du cluster.

• Le journal d’evenements Windows et le Profiler SQL sont des moyens simples pour voir si cela fonctionne

• Le même journal d’evenements est utilise pour l’Application Web• Les mêmes vérifications faites pour les services Excel avec le Profiler SQL

Trucs et astuces…

• C2WTS peut être compliquer a paramétrer. Le service doit fonctionner sur le bon serveur…

• Les applications web utilisant une authentification basée sur formulaires ou sur SAML personnalise NE PEUVENT PAS UTILISER C2WTS

• Les Délégations Contraintes Kerberos ne peuvent pas traverser les frontières du domaine• Les Applications de Service Applications et les sources de données externes doivent donc être dans le

même domaine

• Le Serveur Windows 2008 contient un bug connu Kerberos AES bug• Limitée toutefois au fait de fonctionner avec 2 machines qui seraient équipées de Windows Server 2008 ou

Windows Vista (ca ne serait quand même pas de chance :P)• Un Hotfix Microsoft est disponible; http://support.microsoft.com/kb/969083 • Note – Ce bug n’existe pas avec Windows Server 2008 R2!

• Les SPNs sont vraiment très faciles a casser... Toutes erreur de type peut être fatale!

Trucs et astuces…

• PowerPivot• Pensez a paramétrer le fichier web.config caché dans :

“C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\PowerPivot”

• Reporting Services• Pensez a paramétrer le fichier de connexion rsreportserver.config caché dans

le répertoire du service SSRS

“ C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer ”

Lancez vous..

• PREVOYEZ PREVOYEZ PREVOYEZ• Plus de 90% des mauvaises implémentations proviennent d’erreurs de configuration des

SPNs

• Kerberos est un prérequis pour certains scenarii de business intelligence• Pas besoin d’exorciste, ni magie noire…• Vous pouvez vérifier le fonctionnement avec des outils standards

• Journaux d’evenements Windows (Sur les Serveurs Web)• SQL Profiler (Sur les Bases de Données)• Fiddler (Sur le Client)

• Il faut maitriser l’AD… Donc prévoyez de vous faire de nouveaux amis chez les Administrateurs de votre domaine.

• La délégation est un prérequis si vous vous engages sur le service

Liens Utiles…

TechNet – What is Kerberos Authentication?

http://technet.microsoft.com/en-us/library/cc780469(WS.10).aspx

Microsoft Guide – Configuring Kerberos Authentication for Microsoft SharePoint 2010 products

http://www.microsoft.com/download/en/details.aspx?id=23176

TechNet – Plan for Kerberos Authentication (SharePoint 2010)

http://technet.microsoft.com/en-us/library/ee806870.aspx

Questions...

A mon tour ;)

Question 1

Une nouvelle Application web vient d’etre ajoutée a SharePoint avec le host header REPORTS. Le site SharePoint se trouve sur le serveur frontal SP2010-WFE-01.skopus.com. L’application devra etre accessible par l’adresse https://reports.skopus.com. Quelle(s) ligne(s) de commande dois-je utiliser pour ajouter les Service Principal Names corrects?

setspn.exe –s HTTP/reports SP2010-WFE-01setspn.exe –s HTTP/reports.skopus.com SP2010-WFE-01

Question 2

Que dois-je verifier dans mon DNS pour assurer le bon fonctionnement de Kerberos?

Nom d’Hote (A Record) seulementEt surtout…Surtout pas d’Alias (CNAME)

Annexes

Problèmes Kerberos connus

Configurer Kerberos et SharePoint 2010

• Issue: Clients (.NET, IE) create malformed SPNs for HTTP services running on non-default ports by forming the SPN without port number.

• http://support.microsoft.com/kb/908209/en-us• http://technet.microsoft.com/en-us/library/cc263449.aspx

Example:

• If the web application is running at http://intranet.contoso.com:1234, the client will create a SPN for http/intranet.contoso.com instead of http/intranet.contoso.com:1234

HTTP and non-default ports

HTTP and non-default ports

• To workaround this issue, register SPNs with and without port number. Example:

Actual URL: http://intranet.contoso.com:12345

SPNs:• http/intranet• http/intranet.contso.com• http/intranet:12345• http/intranet.contoso.com:12345

Option 2: To resolve this issue, you'll need to set the FEATURE_INCLUDE_PORT_IN_SPN_KB908209 registry value (as per http://support.microsoft.com/kb/908209 ).

SPN Uses Host Name instead of Alias

• Issue: Clients (.NET, IE) create malformed SPNs by using the host name instead of the alias name of the target service

• http://support.microsoft.com/kb/911149/en-us• http://support.microsoft.com/kb/938305/en-us

Example:

• A Record: wfe01.skopus.local• CNAME: intranet.skopus.local (aliases wfe01.skopus.local)• If the client attempts to authenticate with http://intranet.skopus.local it

creates a malformed SPN and requests a Kerberos ticket for http/wfe01.skopus.local instead of http/intranet.skopus.local

SPN Uses Host Name instead of Alias

• To workaround this issue, configure Kerberos enabled services using DNS A records instead of CNAME aliases.

• Use the FEATURE_USE_CNAME_FOR_SPN_KB911149 registry key documented in this article: http://support.microsoft.com/kb/911149.

• The hotfix mentioned in KB article will correct this issue for Internet Explorer but will not correct the issue for the .NET framework

Kerberos will fail if ticket is too large

• In some environments, users may be members of many Active Directory groups, which can increase the size of their Kerberos tickets. If the tickets grow too large, Kerberos authentication can fail.

For more information about how to adjust the max token size see:

New resolution for problems with Kerberos authentication when users belong to many groups

Note: When adjusting max token size, be aware that if you configure the max token size beyond the maximum value for the registry setting, you may see Kerberos authentication errors. It is recommended to not exceed 65535 decimal, FFFF hexadecimal, for max token size.

Kerberos Web App SetupAppendix

Web Application Settings

AuthN Provider

Friendly Warning, More to Do…

IIS Authentication Double Check

Ensure Windows Auth is Enabled

Make Sure not to Use Kernel Mode Auth

Ensure the Negotiate Provider is Enabled

This is done by SharePoint via the Web App Settings

Don’t use Aliases in DNS (CNAME)

Register the SPNs

Ways to Verify SPNs (Ensure no Duplicates)

You can also check for SPNs in Active Directory

Purge your tickets before testing the web app

After Making a Request, Check the Ticket Cache

Netmon Capture of the AuthN Sequence

Excel ServicesAppendix

Check Data Source to Ensure Kerberos is Enabled

Register SPNs for Data Source (SQL Example)

Start the Claims to Windows Token Service

Register Dummy SPN to get to Delegation Tab

Configure Constrained Delegation to Data Source

Dump of claims on Windows Claims Site

You must use Windows Claims for Excel Services with C2WTS to work

Test Connection Refresh

BCS Screen ShotsAppendix

Configure SPNs on the Web App Service Account

Configure Delegation from Web App to Data Source

Configure ECT Connection

Use Per-User (User’s Identity) AuthN

Public Consulting Group, Inc.148 State Street, Tenth Floor, Boston, Massachusetts 02109

(617) 426-2026, www.publicconsultinggroup.com