Introduction
Très souvent, les responsables de projet, ne disposant pas des outils nécessaires ou par méconnaissance, demandent directement aux DBA la liste des comptes appartenant à un groupe Microsoft Active Directory défini dans un serveur Microsoft SQL Server. Voici, dans cet article, la liste des commandes utiles (net group
, net user
) permettant de lister les membres sans déranger les administrateurs du contrôleur de domaine Active Directory (AD).
Dans cet article, le groupe <mondomaine>\fr.trading.rog
est défini dans le serveur SQL Server 2008 R2 SRVWINFR122
. Ce groupe a les droits de lecture seule dans la base trading grâce au rôle SQL Server prédifini db_datareader
:
CREATE LOGIN [<mondomaine>\fr.trading.rog]
FROM WINDOWS WITH DEFAULT_DATABASE=[trading],
DEFAULT_LANGUAGE=[us_english]
GO
use [trading]
GO<
CREATE USER [<mondomaine>\fr.trading.rog]
FOR LOGIN [<mondomaine>\fr.trading.rog]
GO
execute sp_addrolemember 'db_datareader',[<mondomaine>\fr.trading.rog]
GO
Lister les membres d’un groupe AD avec net group
Dans une invite de commandes DOS, la commande net group
liste
les membres d’un groupe Microsoft AD dans le domaine, pour rechercher les
membres du groupe AD "fr.trading.org" dans le domaine courant :
net group /domain "fr.trading.rog"
La demande sera traitée sur contrôleur de domaine du domaine <mondomaine>. Nom de groupe fr.trading.rog Commentaire Membres ------------------------------------------------------------------ DOEJ MARTINS DURANDP La commande s'est terminée correctement.
La commande liste l’intégralité des comptes utilisateurs AD défini dans le groupe, ici 3 comptes sont définis.
Extraire le détail des membres d’un groupe AD avec net user
Pour aller encore plus loin, toujours dans une invite de commandes DOS, la
commande net user
permet d’obtenir le détail pour chaque compte AD
dans le groupe "fr.trading.org" (nom, prénom…). Pour obtenir le détail du
compte DOEJ défini dans le groupe "fr.trading.org" :
net user /domain "DOEJ"
La demande sera traitée sur contrôleur de domaine du domaine <mondomaine>. Nom d'utilisateur DOEJ Nom complet DOE John Commentaire Trader Commentaires utilisateur Code du pays (null) Compte : actif Oui Le compte expire Jamais ... ...
Rechercher si un compte AD est membre d’un groupe AD avec les commandes net group et find
En combinant les commandes net group
et find
dans
une invite de commandes DOS, il est possible de déterminer très rapidement si
le compte DOEJ est bien défini dans le groupe "fr.trading.rog" :
net group /domain "fr.trading.rog" | find /I /C "DOEJ"
1
- L’option
/I
de la commandefind
ignore la casse. - L’option
/C
de la commandefind
indique de n’afficher que le nombre de résultats : si la valeur vaut 1, le compte AD DOEJ est membre du groupe.
Conclusion
Les commandes net group
et net user
permettent de
lister très rapidement la liste et le détail des comptes AD définis dans un
groupe AD référencé dans un moteur SQL Server. Ces commandes ont 3 avantages
précieux :
- Elle sont disponibles sur les postes de travail (workstations) ou sur les serveurs.
- Elles peuvent être utilisées facilement par des utilisateurs avancés qui ne disposent pas des outils nécessaires pour interroger l’annuaire LDAP Microsoft Active Directory.
- Elles évitent de déranger les administrateurs du contrôleur de domaine Microsoft Active Directory AD.
Il existe d’autres méthodes (dsquery, dsget, PowerShell, ldapsearch…) mais avec 3 inconvénients possibles, inconvénients listés ci-dessous :
- L’installation de composants supplémentaires (Windows SDK par exemple) est nécessaire.
- Les lignes de commandes sont trop complexes même pour des utilisateurs avancés (PowerShell notamment).
- Certaines méthodes ne sont disponibles que sur les serveurs et pas sur les postes de travail (Workstations).
Les commandes net user/group
ne peuvent pas remplacer un client LDAP digne de ce
nom pour des recherches complexes (filtres sur les OU…). Ce point est souligné car la question devient récurrente. Elles sont pratiques
quand on a rien d’autre sous la main pour répondre rapidement à la question "Qui peut accéder à ma base de données SQL Server ?" d’un responsable
de projet ou d’applications.
Exemple avec le client ldapsearch
: une recherche dans un contrôleur de domaine Microsoft Active Directory
(serveur SRVDCTFR1
, port 3268
) sur la propriété sAMAccountName
et l’OU "OU=FR,DC=mycompany,DC=intranet"
.
% ldapsearch -h SRVDCTFR1 -p 3268 -D "mycompany\smithj"
-b"OU=FR,DC=mycompany,DC=intranet" -w<mot_de_passe> "sAMAccountName=doej"