IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Authentification Kerberos sur SQL [2012]


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut Authentification Kerberos sur SQL
    Bonjour,
    J'ai un serveur SQL pour lequel je souhaite activer la délégation de contrainte pour le service MSSQLSvc pour le compte qui lance le service qui est un compte de domaine.

    Pour se faire admettons que mon serveur s'appelle srv1 et mon domaine dmn et mon compte svc-sql.

    J'ai tapé la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SetSPN -S mssqlsvc\srv1 dmn\svc-sql
    SetSPN -S mssqlsvc\srv1.dmn.fr dmn\svc-sql
    SetSPN -S mssqlsvc\srv1.dmn.fr:1433 dmn\svc-sql
    Lorsque je regarde avec SetSPN -l dmn\svc-sql j'ai bien les 3 lignes :
    mssqlsvc\srv1 dmn\svc-sql
    mssqlsvc\srv1.dmn.fr dmn\svc-sql
    mssqlsvc\srv1.dmn.fr:1433 dmn\svc-sql

    Lorsqu'ensuite je vais dans l'AD onglet délégation et j'active la délégation uniquement pour les services suivant, j'ajoute mon serveur srv1, le service MSSQLSvc n'apparait pas.

    Du coup je me dis que j'ai oublié de paramétré qqch ou une autre erreur du type
    Est ce que SetSPN est sensible à la casse (et donc mssqlsvc n'est pas MSSQLSvc)
    Est ce que le fait que j'ai 3 machines identiques avec nom simple, nom complet et nom complet avec port pourrait causer des pb.

    Je vous remercie de m'aiguiller.

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Hello,

    La configuration des tes spn n'est pas correcte si tu l'as effectué tel quel. Le service ne doit pas comporter de \ mais un /.

    Il faut mettre à la place ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SetSPN -S mssqlsvc/srv1 dmn\svc-sql
    SetSPN -S mssqlsvc/srv1.dmn.fr dmn\svc-sql
    Si l'instance concernée écoute sur le port 1433, tu peux omettre le port d'écoute dans la chaîne SPN car il prendra le port d'écoute 1433 par défaut.

    ++

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut Faute de frappe
    Oups : je viens de comprendre que j'ai fait une petite faute de frappe (et même deux) quand j'ai écrit ce poste.
    Je confirme que j'ai bien paramétré mais SPN avec le / (slash) et non l'anti slash (\) entre le service et l'hôte. Donc sur ce point pas de problème.

    En revanche j'ai fait une installation de sql server standard : donc je pense que le port est bien 1433 mais je vais vérifier au cas où ce n'est pas le cas.

    Petite indication qui peut aider :
    en tapant la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid ;
    le résultat me renvoit NTLM et non KERBEROS.

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut Nom du service
    Apparremment quand je regarde le nom du service après avoir cherché qu'est ce qui lance le port 1433 je m'attendais à trouver MSSQLSvc parce que naïvement dans ma tête la commande SetSPN était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SetSPN -S Service/Hote.domaine domaine\Compte
    Or je trouve comme nom de service :
    sqlservr.exe

    D'où ma question est ce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetSPN -S sqlservr/dmn.serv1.fr dmn\svc-sql
    N'est pas plus approprié dans mon cas de figure ?

  5. #5
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    N'est pas plus approprié dans mon cas de figure ?
    Non car le nom du service SQL pour Kerberos est bien MSSQLSvc. Il faut effectivement bien vérifier si le port d'écoute est bien le 1433 ou si tu utilises une instance nommée car dans ce cas la configuration du SPN ne sera pas la même.

    Si je reprends ce que tu as dit dans ton premier post :

    Lorsqu'ensuite je vais dans l'AD onglet délégation et j'active la délégation uniquement pour les services suivant, j'ajoute mon serveur srv1, le service MSSQLSvc n'apparait pas.
    Est-ce que tu essais d'activer la délégation pour le serveur SQL ? Si j'ai bien compris ce que tu as dit srv1 correspond au serveur de bases de données.

    ++

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut Re
    Merci pour ta réponse.
    Pour répondre à ta question : effectivement lorsque je souhaite activer la délégation je choisi l'ordinateur srv1 et le service MSSQLSvc mais malheureusement il n'apparait pas.
    Quand tu parles d'instance nommée tu parles d'instance de Server ?
    Du type srv1\instance1 par exemple ??
    Si oui, je te confirme que je n'en utilise pas.
    De plus le service écoute bien le port 1433.

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut Quiproquo possible
    Je pense qu'on ne s'est pas compris :
    Dans mon exemple srv1 est bien le serveur applicatif. Pour simplifier : le nom de mon serveur sql est le même que celui de mon serveur applicatif.
    De toute façon s'ils avaient des noms différents je suppose que dans l'AD je ne retrouverais pas mon serveur sql puisque ce n'est pas un ordinateur.

    Moi en ce qui me concerne : dans l'AD lorsque je recherche srv1 je le retrouve bien et il y a différents services disponible. Le problème est que dans les services disponibles MSSQLSvc n'apparait pas...

    Autre précision mais je ne pense pas que ce soit important srv1 est un serveur virtuel.

  8. #8
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Dans mon exemple srv1 est bien le serveur applicatif. Pour simplifier : le nom de mon serveur sql est le même que celui de mon serveur applicatif.
    Ok c'est plus clair

    En principe si ton serveur applicatif est sur le même que ton serveur SQL tu n'as pas besoin d'activer la délégation Kerberos car ton serveur applicatif n'a pas besoin de déléger le jeton dans ce cas (même serveur). Le paramétrage du SPN pour le compte de service SQL Server est suffisant.

    Est-ce que tu as vérifié que toutes tes connexions restent en NTLM ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT auth_scheme FROM sys.dm_exec_connections

  9. #9
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut
    Pour info toutes mes connexions sont en NTLM.

    Il y a peut être une chose que j'ai omis de dire :
    en fait j'ai un serveur srv1 contenant mon serveur sql et un serveur srv2 contenant des rapports dont les sources de données sont sur le serveur sql.

    Si j'ai besoin d'activer la délégation et de faire passer des tickets avec le protocole KERBEROS c'est que parce que je suis en authentification Windows sur mes rapports.

    Les deux serveurs (srv1 et srv2) sont sur le même domaine (même domaine que le compte également.

    Par contre si je comprends ce que tu veux dire : mon serveur applicatif serait srv2 et donc il faut que j'active la délégation de contrainte sur le serveur srv2 pour le service MSSQLSvc ?

    Est ce bien ça ?

    Mais si c'est le cas ma commande SetSPN elle est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetSPN -S MSSQLSvc/srv1.dmn.fr dmn\svc-sql
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetSPN -S MSSQLSvc/srv2.dmn.fr dmn\svc-sql
    ?

  10. #10
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    La commande correcte est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetSPN -S MSSQLSvc/srv1.dmn.fr dmn\svc-sql
    Le SPN identifie toujours le service cible à atteindre. Donc si ton serveur SQL est sur le serveur srv1 alors il faut configurer le SPN comme ci-dessus.

    Si tu as 2 serveurs comme tu le précises cela revient donc à :

    client --> srv2 (serveur de rapports) --> srv1 (serveur sql)
    Je suppose que ton serveur de rapports est un serveur SSRS ? Si oui as-tu également configuré le SPN pour ce service ?

    ++

  11. #11
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut
    Je vais essayer la délégation de contrainte sur srv2 mais j'avoue que je ne comprends pas pourquoi car le service MSSQLSvc pourrait ne pas être installé sur srv2;

    Sinon ou c'est SSRS et j'ai créé mon SPN de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetSPN -S http/srv2.dmn.fr dmn\svc-sql
    Tout en sachant que j'utilise le même compte de domaine de service pour
    - le moteur SQL sur srv1
    - Report service sur srv2

    Puis j'ai activé la délégation de contrainte pour le serveur srv2 pour le service http.

  12. #12
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut
    Je ne sais pas si ça un impact mais quand je vais dans les stratélie local des mes serveurs (srv1 et srv2) dans Options de sécurité, l'option Sécurité Réseau : Configurér les types de chiffrement autorisés pour Kerberos est Non défini

  13. #13
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    -Ok

    Dans le journal de sécurité Windows sur le serveur Web ou éventuellement sur le serveur SSRS tu peux voir les entrées concernant les logins et le protocole utilisé : AUTHENTICATION PACKAGE = XXX

    Est-ce que tes logins utilisent bien le protocole KERBEROS à ce stade ?

    Vérifie dans internet explorer pour être sûr que tu autorises bien l'authentification Kerberos (internet explorer > Internet Options > Section Advanced > Section security settings > Enable Kerberos authentication)

    Je réfléchis en attendant à une autre piste mais à distance ce n'est pas simple :-)

    ++

  14. #14
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut
    Je réfléchis en attendant à une autre piste mais à distance ce n'est pas simple :-)
    C'est déjà très sympa de ta part de m'avoir aidé jusque là !!
    D'accord je n'ai pas résolu mon pb mais j'ai qd même l'impression d'avoir avancé.

    Dans le journal de sécurité Windows sur le serveur Web ou éventuellement sur le serveur SSRS tu peux voir les entrées concernant les logins et le protocole utilisé : AUTHENTICATION PACKAGE = XXX
    Ca s'est pas simple parce que SSRS n'utilise pas IIS et comme configuration de SSRS je ne connais que le Gestionnaire de configuration de Report Services et dans cet utilitaire il n'y a pas de consultation de journal d'évênement mais bon je vais voir ce que je peux trouver avec celui de Windows.

    Vérifie dans internet explorer pour être sûr que tu autorises bien l'authentification Kerberos (internet explorer > Internet Options > Section Advanced > Section security settings > Enable Kerberos authentication)

    Bon moi je l'ai en Français et comme la traduction n'est pas littéral je suppose que c'est
    Option Internet -> Onglet Avancé -> Section sécurité -> Activé l'authentification Windows Intégrée et dans ce cas oui c'est coché

  15. #15
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut
    Dans l'audit de sécurité de Windows j'ai bien le package donnée = kerberos : je te transmets le résultat de l'audit :

    L’ouverture de session d’un compte s’est correctement déroulée.

    Sujet :
    ID de sécurité : NULL SID
    Nom du compte : -
    Domaine du compte : -
    ID d’ouverture de session : 0x0

    Type d’ouverture de session : 3

    Niveau d’emprunt d’identité : Emprunt d’identité

    Nouvelle ouverture de session :
    ID de sécurité : dmn\moi
    Nom du compte : moi
    Domaine du compte : dmn
    ID d’ouverture de session : 0x717E35
    GUID d’ouverture de session : {85a6f8a1-332f-fbc9-c089-173ea59aa5a4}

    Informations sur le processus :
    ID du processus : 0x0
    Nom du processus : -

    Informations sur le réseau :
    Nom de la station de travail :
    Adresse du réseau source : -
    Port source : -

    Informations détaillées sur l’authentification :
    Processus d’ouverture de session : Kerberos
    Package d’authentification : Kerberos
    Services en transit : -
    Nom du package (NTLM uniquement) : -
    Longueur de la clé : 0

    Cet événement est généré lors de la création d’une ouverture de session. Il est généré sur l’ordinateur sur lequel l’ouverture de session a été effectuée.

    Le champ Objet indique le compte sur le système local qui a demandé l’ouverture de session. Il s’agit le plus souvent d’un service, comme le service Serveur, ou un processus local tel que Winlogon.exe ou Services.exe.

    Le champ Type d’ouverture de session indique le type d’ouverture de session qui s’est produit. Les types les plus courants sont 2 (interactif) et 3 (réseau).

    Le champ Nouvelle ouverture de session indique le compte pour lequel la nouvelle ouverture de session a été créée, par exemple, le compte qui s’est connecté.

    Les champs relatifs au réseau indiquent la provenance d’une demande d’ouverture de session à distance. Le nom de la station de travail n’étant pas toujours disponible, peut être laissé vide dans certains cas.

    Le champ du niveau d’emprunt d’identité indique la portée de l’emprunt d’identité que peut prendre un processus dans la session d’ouverture de session.

    Les champs relatifs aux informations d’authentification fournissent des détails sur cette demande d’ouverture de session spécifique.
    - Le GUID d’ouverture de session est un identificateur unique pouvant servir à associer cet événement à un événement KDC .
    - Les services en transit indiquent les services intermédiaires qui ont participé à cette demande d’ouverture de session.
    - Nom du package indique quel est le sous-protocole qui a été utilisé parmi les protocoles NTLM.
    - La longueur de la clé indique la longueur de la clé de session générée. Elle a la valeur 0 si aucune clé de session n’a été demandée.

  16. #16
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Ok c'est déjà pas mal.

    Autres questions que j'ai omis de te poser :

    C'est un serveur SSRS en mode natif ou intégré avec SharePoint ?
    Est-ce que tu utilises des header pour te connecter au serveur de rapport SSRS ?

    ++

  17. #17
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Par défaut
    Ce n'est pas intégré à Sharepoint et je n'utilise pas de header.

    Je tape juste l'URL :

    https://srv2.dmn.fr/Reports/

    Et j'ai donné les droits dans dossier racine à dmn\srv-svc et moi même.

    Comme c'est une url sécurisé (https) : je me demande si la classe de service à mettre dans le SetSPN est bien http et non https.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/10/2014, 16h27
  2. authentification kerberos sur apache
    Par Lekno dans le forum Protocoles
    Réponses: 0
    Dernier message: 30/05/2014, 13h19
  3. Connexion en authentification windows sur SQL Server
    Par roidavidou dans le forum JDBC
    Réponses: 0
    Dernier message: 12/07/2012, 12h02
  4. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  5. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo