Presentation sur la mise en place du protocol 'authentification Kerberos dans le contexte SharePoint avec les services Externes: SSAS, SSRS, PowerPivot, Excel Services. Presntation en amelioration permanente, vos ameliorations sont les bienvenues ;)
Rencontre mensuelle Montreal - juillet 2012 - kerberos
1. Configurer Kerberos et SharePoint
2010
10 Juillet 2012
Nicolas Georgeault
Architecte SharePoint, MVP SharePoint, Public Consulting
Group
Courriel: ngeorgeault@club-sharepoint.fr
Blog: http://ngeorgeault.club-sharepoint.fr
2. Public Consulting Group http://publicconsultinggroup.com
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:
3. 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
4. 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…
5. Demo Environment
Domaine AD: “skopus.local”
Web Server App Server Data Server
wfe1.skopus.local app1.skopus.local olap1.skopus.local
http://portail/ http://portail-rss/ Services d’ Analyses SQL
Services Excel
Bases de données
SQL Server (DBs SP)
Administration Centrale
6. En general…
Alors vous deployez en production…
Mais alors que ce passe-t-il?
CHAMPAGNE!!
Tous fonctionne bien… C’est facile ;)
Production
Développent
BAM!
“Login failed for user
'NT AUTHORITYANONYMOUS LOGON'"
7. 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”
bob
bob
John Delegation
Client
Service A Service B
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)
8. 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)
10. 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)
11. 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
12. 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?
13. 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
14. 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 DOMAINuseraccount +r
SeEnableDelegationPrivilege
15. 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.
16. 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!
17. 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!
19. Normalisation de l’identite
Classique Claims/Revendications
NT Token NT Token ASP.Net (FBA)
SAML1.1+
Windows Windows SAL, LDAP,
ADFS, etc.
Identity Identity Custom
SAML Token
Claims Based Identity
SPUser
21. 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
22. 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
23. Example de service C2WTS
C2WTS S4U Logon
Kerb
SAML
AD
Excel
Services
Kerb
SAML
NTLM SAML Kerberos
John
WFE APP SQL
24. 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.DEFAULTSOFTWAREMicrosoftWindowsCurrentVersionWinTrustTrust ProvidersSoftware 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
25. 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:
Actas 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)
26. Scenario 1: Services Excel vers les Services
d’Analyses
Requête Web Interne Requête de donnée
(Claims) (Kerberos)
WFE Services Excel Service
d’Analyses
SQL Server
STS C2WTS
SP/c2wts MSOLAPSvc.3/
SP/excel olap1.skopus.local
Delegation Contrainte
27. Services Excel et C2WTS
Dans notre démo nous avons les paramètres suivant:
Le compte de service des Services Excel: “SKOPUSSkpSvcExcel”
Le compte de service de C2WTS: “SKOPUSSkpSvcC2WTS”
Les services SSAS fonctionnent sur le serveur “olap1.skopus.local”
Le compte de service des services SSAS est “SKOPUSSkpSvcSQLAnalysis”
Donc il nous faut configurer les SPNs suivant:
setspn.exe –S SP/excel SKOPUSSkpSvcExcel
setspn.exe –S SP/c2wts SKOPUSSkpSvcC2WTS
setspn.exe –S MSOLAPSvc.3/olap1.skopus.local SKOPUSSkpSvcSQLAnalysis
setspn.exe –S MSOLAPSvc.3/olap1 SKOPUSSkpSvcSQLAnalysis
La Délégation Contrainte est paramétrée par Active Directory Users & Computers
28. Ser vices Excel vers les Ser vices d’Analyses
DEMO
Configurer Kerberos et SharePoint 2010
29. 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!)
30. Scenario 2: Le Lecteur de flux RSS
http://portail/ http://portail-rss/
Requete Web Requette Lecteur RSS
(Kerberos) (Kerberos)
WFE 1 APP 1
Lecteur
RSS
HTTP/portail HTTP/portail-rss
Delegation Constrainte
31. 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 SKOPUSSkpAppPool
Il vous faut donc configurer les SPNs suivants:
setspn.exe –S HTTP/portail SKOPUSSkpAppPool
setspn.exe –S HTTP/portail.skopus.local SKOPUSSkpAppPool
setspn.exe –S HTTP/portail-rss SKOPUSSkpAppPool
setspn.exe –S HTTP/portail-rss.skopus.local SKOPUSSkpAppPool
Délégation Contrainte: portail portail-rss
33. 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 “SKOPUSSkpSqlDbSvc”
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 SKOPUSSkpSqlDbSvc
setspn.exe –S MSSQLSvc/app1.skopus.local SKOPUSSkpSqlDbSvc
34. Le Ser veur SQL de donnees
DEMO
Configurer Kerberos et SharePoint 2010
35. 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”
36. Scenario 4: SQL Server Reporting Services
Web Request Web Service Data Request
(Kerberos) (Kerberos) (Kerberos)
WFE SQL Server SQL Server
Reporting Analysis
Services Services
HTTP/kerberos HTTP/app1 MSOLAPSvc.3/
olap1.sp2010.local
Constrained Delegation
37. 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)
38. 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 SP2010SkpSqlRpSvc
setspn.exe –S HTTP/app1 SP2010SkpSqlRpSvc
La Délégation Contrainte est, cette fois encore, paramétrée par
Active Directory Users & Computers
41. 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
42. 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!
43. Trucs et astuces…
PowerPivot
Pensez a paramétrer le fichier web.config caché dans :
“C:Program FilesCommon FilesMicrosoft SharedWeb Server
Extensions14ISAPIPowerPivot”
Reporting Services
Pensez a paramétrer le fichier de connexion
rsreportserver.config caché dans le répertoire du service
SSRS
“ C:Program FilesMicrosoft SQL
ServerMSRS10_50.MSSQLSERVERReporting
ServicesReportServer ”
44. 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
45. Liens Utiles…
TechNet – What is Kerberos Authentication?
http://technet.microsoft.com/en-us/library/cc7804
Microsoft Guide – Configuring Kerberos
Authentication for Microsoft SharePoint 2010
products
http://www.microsoft.com/download/en/details.as
48. 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-01
setspn.exe –s HTTP/reports.skopus.com SP2010-WFE-01
49. Question 2
Que dois-je verifier dans mon DNS pour
assurer le bon fonctionnement de
Kerberos?
Nom d’Hote (A Record) seulement
Et surtout…
Surtout pas d’Alias (CNAME)
51. HTTP and non-default ports
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.a
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
52. 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).
53. 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
54. 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_KB91114
9 registry key documented in this article:
http://support.microsoft.com/kb/911149.
55. 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.
Always use –S … You could use –A .. But the –S command will also check for duplicates before it creates the SPN!
Impersonates a user using Kerberos Protocol Transition (S4U)
CRL = Certificate Revocation List
The T-SQL query on this slide can be used from SQL Server Management Studio .. It gives you a list of all of the sessions on the server, and whether they are using NTLM or Kerberos
Please Email or Twitter me if you have any comments or feedback!