none
Convention de nommage pour des ojets AD RRS feed

  • Question

  • Bonjour à tous,

    Étant en pleine remédiation sur des périmètres AD, je suis confronté au problème du nommage des différents objets Activre Directory (Groupes, GPOs, Groupes de Délégations) et j'aimerai proposer de nouvelles conventions pour remplacer les différentes déjà existantes et ainsi remettre une certaine homogénéité.

    Auriez-vous des modèles a me proposer ? Sur lequel je pourrais m'inspirer

    Merci à vous

    lundi 16 août 2021 14:32

Réponses

  • re-bonjour Patrice D

    actuellement non, si tu as parcouru le code ça ne fait que des Get-GPOReport donc ça interroge l'AD uniquement. Mais j'ai déjà vu un truc dans ce genre ... une petite recherche et ...

    # Collecte de tous les GUIDs des GPOs
    $GpoGuids = Get-GPO -All | 
        Select-Object @{ n='GUID'; e = {$_.Id.ToString()}} |
        Select-Object -ExpandProperty GUID
    
    # Collecte des répertoires dans le SYSVOL sauf PolicyDefinitions
    $Folders = Get-ChildItem \\<DomainName>\SYSVOL\<DomainName>\Policies ‑Exclude 'PolicyDefinitions' -Directory | 
        Select-Object -ExpandProperty name
    
    # initialisation
    $SysvolGuids = @()
    # 1er traitement
    foreach ($folder in $Folders) 
        {
        $SysvolGuids += $folder -replace '{|}', ''   # suppression des accolades
    }
    # et maintenant, on compare
    Compare-Object -ReferenceObject $SysvolGuids -DifferenceObject $GpoGuids | 
        Select-Object -ExpandProperty InputObject
    

    Si tu veux plus de détails : https://4sysops.com/archives/find-orphaned-active-directory-gpos-in-the-sysvol-share-with-powershell/

    La fonction décrite dans le lien, compare donc une liste de GUID tirée de l'AD (GPO) et une autre tirée des fichiers et te sort les répertoires qui sont en trop dans le Sysvol

    Un exemple

    $Folder = "toto", "titi" $GPO = "titi" Compare-Object -ReferenceObject $GPO -DifferenceObject $Folder | Select-Object -ExpandProperty InputObject

    # retourne toto

    Ca y est, on a identifié le répertoire dans le Sysvol en trop "orphelin", ne reste plus qu'à le supprimer à la mano ou via script. Je rappelle que mon script ne fait que du report pas de correction.

    Donc dans le script de report, il te suffit d'ajouter ce type le code montré dans une variable, puis d'ajouter un tableau complémentaire avec cette variable pour avoir cette info en sus.

    Olivier

    Edit : dans le même genre on peut comparer les GPO sur chaque DC. Je te renvoies à https://lazywinadmin.com/2014/10/powershell-check-gpo-replication.html pour ce faire.


    mardi 24 août 2021 14:15

Toutes les réponses

  • Bonjour Patrice,

    Je n'aurais que peu de conseils à te donner en la matière :"Fait simple et la convention de nommage quelle qu'elle soit doit apporter des informations utiles à la lecture du nom. "

    Ex. : Nommer des GPO : "GPO-User-blablabla" à quo sert le mot GPO ? Rien, on sait que c'est une GPO. En revanche, "User" apporte une info intéressante, on sait à qui cela s'adresse. Bon, mais quand cela s'adresse à la fois aux Users et aux Computers on fait comment ? La ça devient plus compliqué. Toujours dans les GPOs, j'aime bien un nommage tel que : "Contexte-description" avec "contexte" qui prend des valeurs comme sécurité, configArchi, configConfort. Le premier veut dire ce que cela veut dire, le second c'est de la configuration selon l'architecture (ex. proxy), le 3ème de la configuration de "confort" (ex. configuration page d'accueil dans navigateurs, bookmarks/favoris, ...) Les 2 premières catégories, c'est vérrouillé, les 3ème pas nécessairement. Je dirais également "regroupe tes GPOs par thèmatique". Ainsi avoir des GPOs configIE, ConfigEdge, ConfigFirefox, ConfigChrome, ... est totalement inutile. Une seule GPO config-Navigateurs (qui les prends tous et les configure tous de la même manière suffit).

    Pour les groupes, pour moi il y a

    les Groupes Organisationnels (RH, Compta, finance, ...), ce sont des Groupes de sécurité Globaux. Pas de nommage particulier.

    les Groupes d'accès aux ressources, ce sont des Groupes de securité Locaux de domaine. Tu peux les nommer du style serveur-partage-Permission ou serveur-partage-répertoire-Permission avec 2 valeurs  pour permissions : Lecture et Modification (à abréger en L ou R et M ou RW selon que tu es en Fr ou En)

    ... mais surtout pour tout cela Groupes, Comptes, GPO (oui même les GPO), il y a des champs description et les remplir ce n'est pas qu'une option.

    J'en ai vu des modèles de convention de nommage différents. Certains faisaient "jolis" sans apporter d'information essentielles, d'autres étaient compliqués au quotidien, d'autres totalement illisibles  (ça peut être également un objectif, mais faut penser à ceux qui opèrent. Si c'est totalement automatisé, pas de pb, sinon, gare aux dérives humaines)

    Nommage des comptes Machines : J'ai vu du nommage du style abreviationRole1-AbrevationRole2-...-Numéro. Avec Role AD,IIS,PR (pour print), Fi (pour file), ... et numéro un numéro d'incrémentation (1er serveur 1, second 2, ...) : Ca donne juste un truc imbitable à Lire/Ecrire/Prononcer et ça n'apporte rien au niveau sécurité. Je lis 1/2 douzaine de noms de serveurs, je comprends la convention, donc leur rôle, je sais à quoi m'attaquer (si je suis le méchant). J'ai vu aussi du nommage d'infra sur une thématique. Ex. : Les DCs étaient nommés qu'avec des noms de circuit auto (Monza, LeMans, ...), les serveurs web (IIS, apache, ...) par des noms de fleurs, les serveurs de messagerie des noms d'arbres fruitiers, ou tout ce qui concerne les infra (quelles qu'elles soient) du service médical portait un nom relatif avec du médical sans aucun lien entre (ex. Sildenafil, synapse, humerus, clystère, ...)

    https://docs.microsoft.com/fr-fr/troubleshoot/windows-server/identity/naming-conventions-for-computer-domain-site-ou : à parcourir mais peu d'information

    https://www.it-connect.fr/quelle-convention-de-nommage-utiliser-pour-ses-serveurs/ : te donneras quelques exemples avec avantages/inconvénients un peu comme j'ai essayé de le faire.

    Olivier

    mardi 17 août 2021 05:24
  • Bonjour Patrice,

    Merci de nous avoir contacté moi-même Sridhar suis là pour vous aider,

    Caractères autorisés

    Les noms d'ordinateur NetBIOS peuvent contenir tous les caractères alphanumériques, à l'exception des caractères étendus répertoriés dans Caractères non autorisés. Les noms peuvent contenir un point, mais les noms ne peuvent pas commencer par un point.

    Caractères interdits

    Les noms d'ordinateur NetBIOS ne peuvent pas contenir les caractères suivants :

    barre oblique inverse (\)

    barre oblique (/)

    deux points (:)

    astérisque (*)

    point d'interrogation (?)

    Guillemet (")

    moins que signe (<)

    signe supérieur à (>)

    barre verticale (|)

    Les noms peuvent contenir un point (.). Mais le nom ne peut pas commencer par un point. L'utilisation de noms non DNS avec des points est autorisée dans Microsoft Windows NT. Les points ne doivent pas être utilisés dans Microsoft Windows 2000 ou les versions ultérieures de Windows. Si vous mettez à niveau un ordinateur dont le nom NetBIOS contient un point, modifiez le nom de l'ordinateur. Pour plus d'informations, voir Caractères spéciaux.

    Dans Windows 2000 et les versions ultérieures de Windows, les ordinateurs membres d'un domaine Active Directory ne peuvent pas avoir de noms entièrement composés de chiffres. Cette restriction est due aux restrictions DNS.

    Pour plus d'informations sur la syntaxe du nom NetBIOS, consultez Syntaxe du nom NetBIOS.

    Longueur minimale du nom : 1 caractère

    Longueur maximale du nom : 15 caractères

     Noter

    Le 16e caractère est réservé pour identifier la fonctionnalité installée sur le périphérique réseau enregistré.

    Noms réservés

    Voir Tableau des mots réservés.

    Caractères spéciaux : Point (.)

    Un point sépare le nom en un identificateur d'étendue NetBIOS et le nom de l'ordinateur. L'identificateur d'étendue NetBIOS est une chaîne de caractères facultative qui identifie les réseaux NetBIOS logiques qui s'exécutent sur le même réseau TCP/IP physique. Pour que NetBIOS fonctionne entre les ordinateurs, les ordinateurs doivent avoir le même identificateur d'étendue NetBIOS et des noms d'ordinateur uniques.

    L'utilisation des étendues NetBIOS dans les noms est une configuration héritée. Il ne doit pas être utilisé avec les forêts Active Directory. Pour plus d'informations sur les étendues NetBIOS, consultez les sites Web suivants :

    rfc1001
    rfc1002
    Noms d'hôte DNS
    Caractères autorisés

    Les noms DNS ne peuvent contenir que des caractères alphabétiques (A-Z), des caractères numériques (0-9), le signe moins (-) et le point (.). Les points ne sont autorisés que lorsqu'ils sont utilisés pour délimiter les composants des noms de style de domaine.

    Dans le système de noms de domaine (DNS) Windows 2000 et le DNS Windows Server 2003, les caractères Unicode sont pris en charge. D'autres implémentations de DNS ne prennent pas en charge les caractères Unicode. Évitez les caractères Unicode si les requêtes sont transmises aux serveurs qui utilisent des implémentations non-Microsoft de DNS.

    Pour plus d'informations, consultez les sites Web suivants :

    rfc952
    rfc1123
    Caractères interdits

    Les noms d'hôte DNS ne peuvent pas contenir les caractères suivants :

    virgule (,)

    tilde (~)

    deux points (:)

    point d'exclamation (!)

    arobase (@)

    signe dièse (#)

    signe dollar ($)

    pourcentage (%)

    caret (^)

    esperluette (&)

    apostrophe (')

    point final (.)

    parenthèses (())

    un appareil dentaire ({})

    souligner (_)

    espace blanc (vide)

    Le trait de soulignement a un rôle particulier. Il est autorisé pour le premier caractère dans les enregistrements SRV par définition RFC. Mais les serveurs DNS plus récents peuvent également l'autoriser n'importe où dans un nom. Pour plus d'informations, consultez Respect des restrictions de nom pour les hôtes et les domaines.

    D'autres règles sont :

    Tous les caractères conservent leur mise en forme à l'exception des caractères ASCII (American Standard Code for Information Interchange).

    Le premier caractère doit être alphabétique ou numérique.

    Le dernier caractère ne doit pas être un signe moins ou un point.

    Les chaînes utilisateur SDDL à deux caractères répertoriées dans la liste des SID connus ne peuvent pas être utilisées. Sinon, les opérations d'importation, d'exportation et de prise de contrôle échouent.

    Dans Windows 2000 et les versions ultérieures de Windows, les ordinateurs membres d'un domaine Active Directory ne peuvent pas avoir de noms entièrement composés de chiffres. Cette restriction est due aux restrictions DNS.

     Noter

    L'enregistrement du nom d'hôte DNS remplace les caractères non valides par un trait d'union (-).

    Longueur minimale du nom : 2 caractères

    Longueur maximale du nom : 63 caractères

    La longueur maximale du nom d'hôte et du nom de domaine complet (FQDN) est de 63 octets par étiquette et de 255 octets par FQDN.

    J'espère que cela résoudra votre problème, veuillez le voter

    Sridhar M

    mardi 17 août 2021 07:41
  • Merci Olivier pour ta réponse argumentée.

    Il est vrai que derrière la question posée, j'ai déjà de bonnes pistes a proposer a mon client, je voulais essentiellement les mettre éventuellement en concurrence avec vos propositions, histoire de vérifier que je n'avais pas loupé une bonne idée ;)

    Concernant le nommage des objets "Computer" la règle est déjà en place et fonctionne bien, ma recherche est plus ciblée sur les GPO et Groupes (GG, GU, GL, délégations).

    Pour les GPO voici ma proposition:

    <ciblage>_<filtrage>_<s'applique à>_<descriptif>_<versioning>

    O_ = ciblage OU
    D_ = ciblage Domain

    G_ = Filtrage par Groupe (computer/user)
    D_ = Filtrage par defaut "Utilisateurs Authentifiés"

    S_ = s'applique à des Serveurs
    P_ = s'applique à des Postes de travail
    U_= s'applique à des Utilisateurs

    description (20carac max):

    SecuritePoste / SecuriteServeur / ParamConfort / ... sur le même genre (rationalisation dans la mesure du possible)

    versioning (2carac)

    01, 02, ....

    Ce qui donnerai par exemple ce type de nommage :

    D_D_P_SecuritePoste_01

    O_D_S_SecuriteServeur_01

    • Modifié Patrice D mardi 17 août 2021 07:54
    mardi 17 août 2021 07:49
  • bonsoir Patrice

    1er point : Les GPOs liées au domaine (racine), évite autant que faire se peut. Pourquoi ? Imagine une GPO qui fait quelque chose avec verrouillage. Liaison au domaine. Ca touche donc Users/computers, c'est selon, qu'ils soient simples users ou admin, ou postes vs serveurs/DC. Est-ce bien cela que tu veux faire ? SOuvent non ! C'est ce qu'on appelle se "couper l'herbe sous le pied". TU te retrouves avec un compte admin  qui a les mêmes limitation/contraintes qu'un simple user. Il vaut mieux liéer une GPO, à une OU racine (celle qui contient les comptes de simples users, sous réserve qu'elle ne contienne pas les compte d'admin bien entendu).

    Selon ta nomenclature, 1er car, c'est la liaison. Pas nécessairement utile, on le voit.

    Idem pour le 2nd car, on le voit facilement. Et dans ce cas, quid du filtrage WMI ? Je te donne un exemple. J'ai une GPO qui configure une source de temps (NTP) externe. Cette GPO est liée à l'OU DOmain Controllers, mais j'ai un filtrage WMI sur DOmainRole = 5 (soit PDCEmulator). Comment la nommerais-tu ? O_D_S-NTPExterne ? peu clair

     En revanche la 3ème apporte une info intéressante : Le contexte : Securité - Confort - Configuration

    Je garderais juste, pour reprendre ton exemple : Securité-Postes et Securité-Serveurs. La à la lecture du nom, on sait le contexte, et à qui.

    Je vais te donner un autre exemple. J'ai 2 GPOs. La 1ère configure le proxy pour les différents navigateurs ET (important) pour les internet Settings (les navigateurs c'est pour les users en conf. machine, les Internet Settings c'est pour les App (ex. une app qui vérifie sa licence au lancement s'appuie sur les internet settings) en conf user (hé oui, c'est conf user les Internet settings).

    Ma seconde GPO, configure tous les navigateurs (bookmarks, page d'accueil, moteur de recherche, extension autorisées ou pas, ...)

    Comment les nommerais-tu ?

    Evites aussi les blancs dans les noms des GPOs, mets des "-" ou des "_" quand besoin ou utilise du PascalCase (ça rend plus lisible aussi). POurquoi pas de "blancs" ? Parce que sinon quand tu recherches une GPO par son nom (en powershell par ex.), il faut toujours la "quoter" sinon ça passe pô bien.

    Sinon si ça t'interesses j'ai fait un script qui de te fait un report GPO sous forme Html dynamique. 2 onglets dans la page : Dans le 1er différentes info Liste des GPOs, Liaison des GPOs, ..., dans le 2nd (Anomalies) : GPO non liées, GPOs sans propriétaire, GPO avec tous les param activées alros que pas de param Users ou Computers, ... Si ça te dit, ne serait-ce que pour la manière dont j'ai collecter les infos, fais le mois savoir je le déposerais dans mon Github et je publierais le lien. Sur le même principe, j'en ai fait d'autres, DHCP, DNS, PrintServers. Le report est en html dynamique, on peut trier, filtrer, comme dans excel. J'utilise pour ce faire l'excellent module PSWriteHtml qui est juste une tuerie. :-)

    Olivier

    mardi 17 août 2021 19:03
  • Merci Olivier pour vos réponses

    1er point: Il est vrai que dans les faits, les GPO liées au Domain sont assez rares (hormis Default Domain Policy).

    2ème cara : Possibilité de compléter si besoin le deuxième caractère avec un "W" pour préciser l'usage de filtre WMI. Pour ton exemple : O_DW_S_NTPExt-DC-PDC_01 (un truc autour de ça) cela reste assez explicite.

    Ensuite je propose

    O_D_CS_InternetSettings_01

    O_D_C_ConfBrowsers_01

    Je suis pas sûr de comprendre ta question, dans le nommage proposé, je n'aborde pas de nuance si on configure les settings User et/ou Computer (Edit GPO). Moi c'est juste de savoir si on lie la GPO a une OU contenant des PDT /Serveurs / Utilisateurs.

    Les blanc sont a proscrire et le PascalCase est effectivement une bonne pratique, je te rejoins.

    Je suis intéressé par le script que tu me décris, cela peut aider dans nos remédiations.

    Sinon plus globalement, mes questions sur les conventions de nommage concernes aussi les noms des groupes de sécu (rassembler des serveurs d'une même appli par ex) que pour des besoins de délégation de droits (users -> GG -> GU -> GL -> Permission). Quelles sont vos bonnes pratiques (suffixe/préfixe utiles).

    jeudi 19 août 2021 16:04
  • posé ici : https://gist.github.com/Rapidhands/915eb503e6acdad35c464138d2a5c4cc

    Largement commenté (en français pour une fois).

    Je collecte telle ou telle info que je pose en variable. Le truc avec les GPOs c'est qu'il faut faire un Get-GPOReport - ReportType XML, et là on peut assez facilement récupérer ce qu'on veut.

    et je construis le rapport.

    Olivier

    jeudi 19 août 2021 19:44
  • Ok, merci. Je vais regarder ça
    vendredi 20 août 2021 07:14
  • Les certificats vous les déployez via la GPO SecuriteServeurs/SecuritePostes.... ou via un GPO spécifique CertServeurs/CertPostes ?
    lundi 23 août 2021 10:26
  • par GPO Configuration ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégie de clé publique > puis choisir le container qui convient au besoin (pour moi, c'est souvent autorité racine de confiance de l'entreprise)

    Voir en mode démonstration ici : https://rdr-it.com/gpo-deployer-un-certificat/

    Olivier

    mardi 24 août 2021 04:48
  • Ok, merci
    mardi 24 août 2021 09:41
  • J'ai une question concernant ton script GPO est-ce qu'il permet de comparer les GPO stockées dans l'AD et les dossiers disponibles dans le SYSVOL.

    Ce qui permettrait de vérifier qu'il n'y a pas de dossiers orphelins, ce qui arrive quand on supprime une GPO avec un compte n'ayant pas suffisant de droit pour supprimer le dossier du SYSVOL. Un reliquat de dossiers {} reste a vidam aeternam

    ça c'est vraiment pratique, quand penses-tu ?

    mardi 24 août 2021 12:53
  • re-bonjour Patrice D

    actuellement non, si tu as parcouru le code ça ne fait que des Get-GPOReport donc ça interroge l'AD uniquement. Mais j'ai déjà vu un truc dans ce genre ... une petite recherche et ...

    # Collecte de tous les GUIDs des GPOs
    $GpoGuids = Get-GPO -All | 
        Select-Object @{ n='GUID'; e = {$_.Id.ToString()}} |
        Select-Object -ExpandProperty GUID
    
    # Collecte des répertoires dans le SYSVOL sauf PolicyDefinitions
    $Folders = Get-ChildItem \\<DomainName>\SYSVOL\<DomainName>\Policies ‑Exclude 'PolicyDefinitions' -Directory | 
        Select-Object -ExpandProperty name
    
    # initialisation
    $SysvolGuids = @()
    # 1er traitement
    foreach ($folder in $Folders) 
        {
        $SysvolGuids += $folder -replace '{|}', ''   # suppression des accolades
    }
    # et maintenant, on compare
    Compare-Object -ReferenceObject $SysvolGuids -DifferenceObject $GpoGuids | 
        Select-Object -ExpandProperty InputObject
    

    Si tu veux plus de détails : https://4sysops.com/archives/find-orphaned-active-directory-gpos-in-the-sysvol-share-with-powershell/

    La fonction décrite dans le lien, compare donc une liste de GUID tirée de l'AD (GPO) et une autre tirée des fichiers et te sort les répertoires qui sont en trop dans le Sysvol

    Un exemple

    $Folder = "toto", "titi" $GPO = "titi" Compare-Object -ReferenceObject $GPO -DifferenceObject $Folder | Select-Object -ExpandProperty InputObject

    # retourne toto

    Ca y est, on a identifié le répertoire dans le Sysvol en trop "orphelin", ne reste plus qu'à le supprimer à la mano ou via script. Je rappelle que mon script ne fait que du report pas de correction.

    Donc dans le script de report, il te suffit d'ajouter ce type le code montré dans une variable, puis d'ajouter un tableau complémentaire avec cette variable pour avoir cette info en sus.

    Olivier

    Edit : dans le même genre on peut comparer les GPO sur chaque DC. Je te renvoies à https://lazywinadmin.com/2014/10/powershell-check-gpo-replication.html pour ce faire.


    mardi 24 août 2021 14:15
  • J'avais pas parcouru ton script jusqu'au bout mais des fois que tu lui avais ajouté la comparaison des GUID (SYSVOL/AD). Sinon le code ci-dessus est exactement ce j'ai besoin en plus de ton script, je vais regarder ça demain.
    mardi 24 août 2021 14:50
  • amuses-toi bien :-)

    Olivier

    mardi 24 août 2021 18:52