\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{ven. juil. 24 11:11:29 CEST 2015}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={draft-bannister-dbis-netgroup-04},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={dbis: netgroup},
CreationDate={D:20150724111129},
ModDate={D:20150724111129},
Keywords={LDAP;Lightweight Directory Access Protocol}
}}
\begin{document}
 
\begin{center}
{\Huge draft-bannister-dbis-netgroup-04 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large dbis: netgroup}
 
\vspace{10mm}
 
\hspace{1mm}  Ce document étend DBIS pour supporter les bases de données se service réseaux et groupes réseaux. Un schéma de base de netgroup devrait être compatible avec NIS mais stocké dans des entrées X.500 pour qu'ils puissent être résolus via lDA. Une base de netgroup représente des groupes d'hôtes, d'utilisateurs et de domaines.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Domaine }
 
\
 
\hspace{1mm}  Le terme "domaine" utilisé dans ce document ne réfère pas aux domaines DBIS mais aux domaines DNS.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge scope }
 
\
 
\hspace{1mm}  Toutes les bases décrites dans ce document utilise les maps de configuration standard définies dans draft-bannister-dbis-mapping. Additionnellement, les entrées dbisMapConfig pour les bases netgroup et netservice devraient être assignés aux objectClass dbisNetGroupConfig et dbisNetserviceConfig, respectivement.
\vspace{5mm} \\
 
 
\hspace{1mm} Il est recommandé que l'entrée dbisMapConfig pour un netgroup ou une base netservice ait l'attribut dbisMapFilter mis en accord avec la table suivante:
 
{\ttfamily
- - - - - - - - - - - - - - - - - - - - - - - - - -\\ Database\hspace{2mm}\hspace{2mm}\hspace{2mm}\hspace{2mm}\hspace{2mm}\hspace{2mm}dbisMapFilter\\ - - - - - - - - - - - - - - - - - - - - - - - - - -\\ netgroup\hspace{2mm}\hspace{2mm}\hspace{2mm}\hspace{2mm}\hspace{2mm}\hspace{2mm}objectClass=netgroupObject\\ netservice\hspace{2mm}\hspace{2mm}\hspace{2mm}\hspace{2mm}objectClass=netserviceDescriptor\\ - - - - - - - - - - - - - - - - - - - - - - - - - -\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Exemple }
 
\
 
\hspace{1mm} Exemple de configuration d'une entrée de map de configuration pour une base netgroup:
 
{\ttfamily
dn: cn=netgroup,en=sales.corp,ou=domain-mappings,o=infra\\ objectClass: top\\ objectClass: dbisMapConfig\\ objectClass: dbisNetgroupConfig\\ cn: netgroup\\ dbisMapDN: cn=netgroup,ou=dbis,o=infra\\ dbisMapFilter: objectClass=netgroupObject\\ profileTTL: 900\\ description: Primary netgroup database\\
}
\vspace{8mm}
 
\hspace{1mm} Exemple de configuration d'une entrée de map de configuration pour une base netservice:
 
{\ttfamily
dn: cn=netservice,en=sales.corp,ou=domain-mappings,o=infra\\ objectClass: top\\ objectClass: dbisMapConfig\\ objectClass: dbisNetserviceConfig\\ cn: netservice\\ dbisMapDN: cn=netservice,ou=dbis,o=infra\\ dbisMapFilter: objectClass=netserviceDescriptor\\ profileTTL: 900\\ description: Primary netservice database\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge netgroup - définition }
 
\
 
\hspace{1mm}  Une base netgroup contient les entrées qui représente les hôtes, les utilisateurs et les domaines et qui sont associés avec une nom netgroup sensible à la casse. les netgroups DBIS permettent aux groupes d'utilisateurs et aux hôtes d'être définis avec les variances de scope suivant:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Tous les utilisateurs dans tous les hôtes d'un domaine donné}
\item[\hspace{1mm} -]{Tous les utilisateurs dans des hôtes spécifiques}
\item[\hspace{1mm} -]{Les utilisateurs nommés sans regarder l'hôte}
\item[\hspace{1mm} -]{Les utilisateurs nommés dans tous les hôtes dans un domaine donné}
\item[\hspace{1mm} -]{Les utilisateurs nommés dans des hôtes spécifiques.}
\end{description}
 
\vspace{1cm}{\huge objecClass }
 
\
 
\hspace{1mm}  Une entrée dbisMapConfig pour une base netgroup devrait avoir l'objectClass dbisNetgroupConfig. Un netgroup devrait être définis par une entrée LDAP avec l'objectClass netgroupObject.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge dbisNetgroupConfig }
 
\
 
\hspace{1mm} dbisNetgroupConfig est définis comme suit:
 
{\ttfamily
objectclass ( 1.3.6.1.4.1.23780.219.1.3 NAME 'dbisNetgroupConfig' DESC 'DBIS netgroup configuration map' SUP dbisMapConfig STRUCTURAL )\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge netgroupObject }
 
\
 
\hspace{1mm} netgroupObject est définis comme suit:
 
{\ttfamily
objectclass ( 1.3.6.1.4.1.23780.219.1.4 NAME 'netgroupObject' DESC 'DBIS netgroup entry' SUP top STRUCTURAL MUST en MAY ( netgroupHost \$ netgroupUser \$ netgroupTriple \$ exactNetgroup \$ description \$ manager \$ disableObject ) )\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge en }
 
\
 
\hspace{1mm}  Le nom du netgroup est stocké dans l'attribut en qui est définis dans draft-bannister-dbis-mapping. L'attribut en doit être associé avec l'entrée netgroupObject et devrait former le RDN. Si requis, des entrées alias peuvent être définies.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge netgroupHost }
 
\
 
\hspace{1mm} Un hôte qui est membre d'un netgroup est stocké dans l'attribut netgroupHost qui peut être assigné à une entrée netgroupObject:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.8 NAME 'netgroupHost' DESC 'Host or domain that is assigned to a netgroup' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\\
}
\vspace{8mm}
 
\hspace{1mm} Le représentation chaîne de l'attribut netgroupHost devrait matcher la grammaire suivante, qui utilise les productions ABNF:
 
{\ttfamily
host = keyname-low\\ domain = keyname-low *(DOT keyname-low)\\ host-domain = host DOT domain\\ all-domain = ASTERISK DOT domain\\ \hspace{2mm}\\ netgroupHost = host / host-domain / all-domain\\
}
\vspace{8mm}
 
\hspace{1mm}  Un DUA devrait dé-référencer les alias et convertir les composants de nom d'hôte et de domaine en caractères minuscule avant de former un attribut netgroupHost ou un filtre.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge netgroupUser }
 
\
 
\hspace{1mm} Un utilisateur qui est un membre d'un netgroup est stocké dans l'attribut netgroupUser qui peut être assigné à une entrée netgroupObject:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.9 NAME 'netgroupUser' DESC 'User who is assigned to a netgroup' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15\{32768\} )\\
}
\vspace{8mm}
 
\hspace{1mm} La représentation chaîne de l'attribut netgroupUser devrait matcher la grammaire suivante, qui utilise les production ABNF:
 
{\ttfamily
user = keyname\\ user-host = user ATSIGN host\\ user-host-domain = user ATSIGN host-domain\\ user-all-domain = user ATSIGN all-domain\\ \hspace{2mm}\\ netgroupUser = user / user-host\\ netgroupUser =/ user-host-domain / user-all-domain\\
}
\vspace{8mm}
 
\hspace{1mm}  Un DUA devrait convertir les composants de nom d'hôte et de domaine en caractères minuscule avant de former un attribut netgroupUser ou un filtre.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge netgroupTriple }
 
\
 
\hspace{1mm} Pour compatibilité avec la rfc2307, DBIS permet aux membre des netgroup d'être exprimés sous la forme de triplets netgroup en fournissant un ou plusieurs attributs netgroupTriple qui peuvent être assignés à une entrée netgroupObject:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.37 NAME 'netgroupTriple' DESC 'Case exact netgroup triple' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )\\
}
\vspace{8mm}
 
\hspace{1mm}  Un DUA devrait convertir les composants de nom d'hôte et de domaine en caractères minuscule avant de former un attribut netgroupTriple ou un filtre.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge exactNetgroup }
 
\
 
\hspace{1mm} Les membres d'autres netgroups peuvent être hérités par ce netgroup en fournissant des noms de netgroup additionnels dans un ou plusieurs attributs exactNetgroup qui peut être assigné avec une entrée netgroupObject:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.10 NAME 'exactNetgroup' DESC 'Case exact netgroup name associated with this entry' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15\{32768\} )\\
}
\vspace{8mm}
 
\hspace{1mm}  Les DUA devraient valider qu'un netgroup référencé par cet attribut existe et est actif. Si le netgroup n'est pas définis, ou s'il a été désactivé avec l'attribut disableObject, il ne devrait pas être inclus dans la réponse au client.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge description }
 
\
 
\hspace{1mm}  L'attribut description peut être associé avec une entrée netgroupObject pour fournir une description arbitraire de l'entrée
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge manager }
 
\
 
\hspace{1mm}  L'attribut manager peut être associé avec une entrée netgroupObject pour fournir un ou plusieurs DN d'individus, de groupes ou systèmes qui sont responsable de la maintenance de cette entrée.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge disableObject }
 
\
 
\hspace{1mm}  Une entrée netgroup peut être désactivé en définissant l'attribut disableObject à TRUE. Si une entrée est désactivée, le DUA se comporte comme si le netgroup n'existe pas. Le DUA peut optionnellement fournir un mécanisme séparé pour les entrées désactivées, mais elles doivent être clairement marquées comme désactivées pour qu'aucune confusion ne se produise.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Exemple d'entrée netgroup }
 
\
 
{\ttfamily
dn: en=sales-mgmt,ou=netgroup,ou=sales,o=infra\\ objectClass: top\\ objectClass: netgroupObject\\ en: sales-mgmt\\ netgroupHost: picard.sales.corp\\ netgroupHost: *.fleet.sales.corp\\ netgroupUser: mark@riker.sales.corp\\ netgroupUser: julie@*.market.sales.corp\\ exactNetgroup: board-mgmt\\ exactNetgroup: board-mgmt-remote\\ description: Sales Management Privileges\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Déterminer les hôtes membres }
 
\
 
\hspace{1mm}  Un DUA devrait effectuer une recherche DNS inversée de l'adresse IP primaire de l'hôte pour déterminer le nom fqdn à utiliser pour le netgroup correspondant. Un hôte doit rencontrer un des conditions suivantes pour être considéré un memre d'un netgroup:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} a)]{Un nom d'hôte non qualifié convertis en minuscule correspond exactement à l'attribut netgroupHost. Dans ce scénario l'attribut netgroupHost est également non qualifié.}
\item[\hspace{1mm} b)]{Le nom d'hôte pleinement qualifié convertis en minuscule correspond exactement à l'attribut netgroupHost.}
\item[\hspace{1mm} c)]{L'attribut netgroupHost utilise le motif all-domain, et le nom de domaine pleinement qualifié convertis en minuscule correspond à cet attribut quand le préfix est supprimé.}
\end{description}
 
\vspace{1cm}{\huge Déterminer les utilisateurs membres }
 
\
 
\hspace{1mm}  Un utilisateur doit rencontrer un des conditions suivantes pour être considéré un membre d'un netgroup:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} a)]{L'attribut netgroupUser ne contient pas le ATSIGN et le nom d'utilisateur correspond exactement à l'attribut netgroupUser}
\item[\hspace{1mm} b)]{Le nom d'utilisateur matche exactement le composant user de l'attribut netgroupUser, et le nom d'hôte non qualifié du DUA qui est obtenu comme décris précédemment et convertis en minuscule correspond exactement au composant hôte de l'attribut netgroupUser}
\item[\hspace{1mm} c)]{Le nom d'utilisateur correspond exactement au composant utilisateur de l'attribut netgroupUser, et le nom d'hôte pleinement qualifié du DUA correspond exactement au composant domain d'hôte de l'attribut netgroupUser.}
\item[\hspace{1mm} d)]{Le nom d'utilisateur correspond exactement au composant utilisateur de l'attribut netgroupUser qui utilise le motif all-domain et le nom de domaine pleinement qualifié du DUA correspond à cet attribut quand le préfix est supprimé.}
\end{description}
 
\vspace{1cm}{\huge netservice }
 
\
 
\hspace{1mm}  Une base netservice mappe les netgroups aux services et privilèges. Les netservices peuvent être utilisé pour déterminer quelles applications devraient fonctionner sur un hôte, comment ils devraient être configurés, et quelles actions les utilisateurs peuvent ou non effectuer.
\vspace{5mm} \\
 
 
\hspace{1mm} La représentation chaîne d'un nom netservice pleinement qualifié devrait correspondre à la grammaire suivante, qui utilise les production ABNF:
 
{\ttfamily
service-name = keyname\\ service-descriptor = keyname *(SLASH keyname)\\ en = service-name COLON service-descriptor\\
}
\vspace{8mm}
 
\hspace{1mm}  Le composant service-name identifie le service, et le service-descriptor est un chemin délimité par des slash qui identifie un sous-composant ou un sous-système dans le service. Une application est libre d'interpréter le nom d'un netservice de la manière qui lui convient, bien qu'il est suggéré qu'un netservice identifie soit un privilège soit une configuration qui peut être application au niveau de l'hôte ou utilisateur.
\vspace{5mm} \\
 
 
\hspace{1mm}  Le service-name est représenté dans LDAP par une entrée avec l'objectClass netserviceObject. Chaque composant délimité par un slash du service-descriptor sont des objets enfants dans LDAP avec l'objectClass netserviceDescriptor.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge ObjectClass }
 
\
 
\hspace{1mm}  Une entrée dbisMapConfig pour une base netservice devrait avoir l'objectClass dbisNetserviceConfig. Un netservice devrait être définis par une entrée LDAP avec l'objectClass netserviceObject.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge dbisNetserviceConfig }
 
\
 
\hspace{1mm} La classe dbisNetserviceConfig est définie comme suit:
 
{\ttfamily
objectclass ( 1.3.6.1.4.1.23780.219.1.5 NAME 'dbisNetserviceConfig' DESC 'DBIS netservice configuration map' SUP dbisMapConfig STRUCTURAL )\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge netserviceObject }
 
\
 
\hspace{1mm} La classe netserviceObject devrait être assigné à l'entrée qui représente un service-name et est définis comme suit:
 
{\ttfamily
objectclass ( 1.3.6.1.4.1.23780.219.1.6 NAME 'netserviceObject' DESC 'DBIS netservice top-level entry' SUP netserviceDescriptor STRUCTURAL MUST en MAY ( description \$ manager \$ disableObject ) )\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge netserviceDescriptor }
 
\
 
\hspace{1mm} La classe netserviceDescriptor devrait être assigné à chaque entrée qui représente les composants service-descriptor et est définis comme suit:
 
{\ttfamily
objectclass ( 1.3.6.1.4.1.23780.219.1.7 NAME 'netserviceDescriptor' DESC 'DBIS netservice descriptor entry' SUP top STRUCTURAL MUST en MAY ( exactNetgroup \$ exactNetservice \$ description \$ manager \$ disableObject ) )\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Attributes }
 
\
 
 
 
\vspace{1cm}{\huge en }
 
\
 
\hspace{1mm}  Le nom du netgroup est stocké dans l'attribut LDAP en qui est définis dans draft-bannister-dbis-mapping. L'attribut en doit être associé avec une entrée netgroupObject et devrait former le RDN. Si requis, des entrées alias peuvent être définies.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge netgroupHost }
 
\
 
\hspace{1mm} Un hôte qui est membre d'un netgroup est stocké dans l'attribut netgroupHost qui peut être assigné à une entrée netgroupObject:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.8 NAME 'netgroupHost' DESC 'Host or domain that is assigned to a netgroup' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\\
}
\vspace{8mm}
\hspace{1mm} Un hôte qui est membre d'un netgroup est stocké dans l'attribut netgroupHost qui peut être assigné à une entrée netgroupObject:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.8 NAME 'netgroupHost' DESC 'Host or domain that is assigned to a netgroup' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\\
}
\vspace{8mm}
 
\hspace{1mm} La représentation chaîne de l'attribut netgroupHost devrait matcher la grammaire suivante, qui utilise les productions ABNF:
 
{\ttfamily
host = keyname-low\\ domain = keyname-low *(DOT keyname-low)\\ host-domain = host DOT domain\\ all-domain = ASTERISK DOT domain\\ \hspace{2mm}\\ netgroupHost = host / host-domain / all-domain\\
}
\vspace{8mm}
 
\hspace{1mm}  Un DUA devrait déréférencer tout alias et convertir les composant nom d'hôte et nom de domaine en minuscule avant de traiter l'attribut netgroupHost ou un filtre le contenant.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge netgroupUser }
 
\
 
\hspace{1mm} Un utilisateur qui est membre d'un netgroup est stocké dans l'attribut netgroupUser qui peut être assigné à une entrée netgroupObject:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.9 NAME 'netgroupUser' DESC 'User who is assigned to a netgroup' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15\{32768\} )\\
}
\vspace{8mm}
 
\hspace{1mm} La représentation chaîne de l'attribut netgroupUser devrait matcher la grammaire suivante, qui utilise les production ABNF:
 
{\ttfamily
user = keyname\\ user-host = user ATSIGN host\\ user-host-domain = user ATSIGN host-domain\\ user-all-domain = user ATSIGN all-domain\\ \hspace{2mm}\\ netgroupUser = user / user-host\\ netgroupUser =/ user-host-domain / user-all-domain\\
}
\vspace{8mm}
\hspace{1mm} La représentation chaîne de l'attribut netgroupUser devrait matcher la grammaire suivante, qui utilise les production ABNF:
 
{\ttfamily
user = keyname\\ user-host = user ATSIGN host\\ user-host-domain = user ATSIGN host-domain\\ user-all-domain = user ATSIGN all-domain\\ \hspace{2mm}\\ netgroupUser = user / user-host\\ netgroupUser =/ user-host-domain / user-all-domain\\
}
\vspace{8mm}
 
\hspace{1mm}  Un DUA devrait convertir les composant nom d'hôte et nom de domaine en minuscule avant de traiter un attribut netgroupUser ou un filtre le contenant.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge netgroupTriple }
 
\
 
\hspace{1mm} Pour compatibilité avec la rfc2307, DBIS permet également l'appartenance exprimé sous la forme de triplet netgroup en fournissant un ou plusieurs attributs netgroupTriple qui peuvent être assignés à une entrée netgroupObject:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.37 NAME 'netgroupTriple' DESC 'Case exact netgroup triple' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )\\
}
\vspace{8mm}
 
\hspace{1mm}  Un DUA devrait convertir les composant nom d'hôte et nom de domaine en minuscule avant de traiter un attribut netgroupTriple ou un filtre le contenant.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge exactNetgroup }
 
\
 
\hspace{1mm}  Les membres d'autres netgroup peuvent être hérités par ce netgroup en fournissant des noms de netgroup additionnels dans un ou plusieurs attributs exactNetgroup qui peuvent être assignés à une entrée netgroupObject:
\vspace{5mm} \\
 
 
\hspace{1mm}  Le DUA devrait valider qu'un netgroup référencé par cet attribut existe et est activé. Si le netgroup n'est pas définis, ou s'il a été désactivé avec l'attribut disableObject, il ne doit pas être inclus dans la réponse au client.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge manager }
 
\
 
\hspace{1mm}  L'attribut manager peut être associé avec une entrée netgroupObject pour fournir un ou plusieurs DN d'individus, groupes ou systèmes qui sont responsable de la maintenance de l'entrée.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge disableObject }
 
\
 
\hspace{1mm}  Une entrée netgroup peut être désactivée en définissant l'attribut disableObject à TRUE.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Exemple d'entrée Netgroup }
 
\
 
{\ttfamily
dn: en=sales-mgmt,ou=netgroup,ou=sales,o=infra\\ objectClass: top\\ objectClass: netgroupObject\\ en: sales-mgmt\\ netgroupHost: picard.sales.corp\\ netgroupHost: *.fleet.sales.corp\\ netgroupUser: mark@riker.sales.corp\\ netgroupUser: julie@*.market.sales.corp\\ exactNetgroup: board-mgmt\\ exactNetgroup: board-mgmt-remote\\ description: Sales Management Privileges\\
}
\vspace{8mm}
{\ttfamily
dn: en=sales-mgmt,ou=netgroup,ou=sales,o=infra\\ objectClass: top\\ objectClass: netgroupObject\\ en: sales-mgmt\\ netgroupHost: picard.sales.corp\\ netgroupHost: *.fleet.sales.corp\\ netgroupUser: mark@riker.sales.corp\\ netgroupUser: julie@*.market.sales.corp\\ exactNetgroup: board-mgmt\\ exactNetgroup: board-mgmt-remote\\ description: Sales Management Privileges\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Déterminer les hôtes membre }
 
\
 
\hspace{1mm}  Un utilisateur doit rencontrer un des conditions suivantes pour être considéré un membre d'un netgroup:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} a)]{L'attribut netgroupUser ne contient pas de ATSIGN et le nom d'utilisateur correspond exactement à l'attribut netgoupUser}
\item[\hspace{6mm} b)]{Le nom d'utilisateur correspond au composant user de l'attribut netgroupUser, et le nom d'hôte non-qualifié du DUA convertis en minuscule correspond au composant hôte de l'attribut netgroupUser.}
\item[\hspace{6mm} c)]{Le nom d'utilisateur correspond au composant user de netgroupUser, et le nom d'hôte pleinement qualifié du DUA convertis en minuscule correspond au composant de domaine hôte de l'attribut netgroupUser.}
\item[\hspace{6mm} d)]{Le nom d'utilisateur correspond au composant user de l'attribut netgroupUser, l'attribut netgroupUser utilise le motif all-domain et le nom de domaine pleinement qualifié du DUA convertis en minuscule correspond à cet attribut quand le préfix ASTERISK DOT est supprimé.}
\end{description}
 
\vspace{1cm}{\huge netservice }
 
\
 
\hspace{1mm}  Une base netservice mappe les netgroups à des services et privilèges. Les netservices peuvent être utilisé pour déterminer quelles applications devraient fonctionner sur un hôte, comment ils devraient être configurés, et quelles actions les utilisateurs peuvent faire ou non.
\vspace{5mm} \\
 
 
\hspace{1mm} La représentation chaîne d'un nom netservice pleinement qualifié devrait suivre la grammaire suivante, qui utilise les production ABNF:
 
{\ttfamily
service-name = keyname\\ service-descriptor = keyname *(SLASH keyname)\\ \hspace{2mm}\\ en = service-name COLON service-descriptor\\
}
\vspace{8mm}
 
\hspace{1mm}  Le composant service-name identifie le service, alors que le service-descriptor est un chemin délimité par les anti-slash qui identifie un sous-composant ou un sous-système dans le service. Une application est lible d'interpréter le nom d'un netservice de la manière qui lui convienne, bien qu'il soit suggéré qu'un netservice identifie soit un privilège ou une configuration qui peut être appliqué au niveau de l'hôte ou utilisateur.
\vspace{5mm} \\
 
 
\hspace{1mm}  service-name est représente dans LDAP par une entrée avec l'objectClass netserviceObject. Chaque composant délimité de service-descriptor sont des objets enfants dans LDAP avec l'objetClass netserviceDescriptor.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Classes d'objet }
 
\
 
\hspace{1mm}  Une entrée dbisMapConfig pour une base netservice devrait être assignée avec l'objectClass dbisNetserviceConfig
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge dbisNetserviceConfig }
 
\
 
\hspace{1mm} La classe dbisNetserviceConfig est définie comme suit:
 
{\ttfamily
objectclass ( 1.3.6.1.4.1.23780.219.1.5 NAME 'dbisNetserviceConfig' DESC 'DBIS netservice configuration map' SUP dbisMapConfig STRUCTURAL )\\
}
\vspace{8mm}
\hspace{1mm} La classe dbisNetserviceConfig est définie comme suit:
 
{\ttfamily
objectclass ( 1.3.6.1.4.1.23780.219.1.5 NAME 'dbisNetserviceConfig' DESC 'DBIS netservice configuration map' SUP dbisMapConfig STRUCTURAL )\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge netserviceObject }
 
\
 
\hspace{1mm} La classe netserviceObject devrait être assignée à l'entrée qui représente le service-name et est définie comme suit:
 
{\ttfamily
objectclass ( 1.3.6.1.4.1.23780.219.1.6 NAME 'netserviceObject' DESC 'DBIS netservice top-level entry' SUP netserviceDescriptor STRUCTURAL MUST en MAY ( description \$ manager \$ disableObject ) )\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge netserviceDescriptor }
 
\
 
\hspace{1mm} La classe netserviceDescriptor devrait être assignée à chaque entrée qui représente des composants service-descriptor et est définie comme suit:
 
{\ttfamily
objectclass ( 1.3.6.1.4.1.23780.219.1.7 NAME 'netserviceDescriptor' DESC 'DBIS netservice descriptor entry' SUP top STRUCTURAL MUST en MAY ( exactNetgroup \$ exactNetservice \$ description \$ manager \$ disableObject ) )\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Attributs }
 
\
 
 
 
\vspace{1cm}{\huge en }
 
\
 
\hspace{1mm}  Le service-name de netservice et chaque service-descriptor sont stockés dans des attributs LDAP de type en qui est définis dans draft-bannister-dbis-mapping. L'attribut en doit être associé avec une entrée netserviceObject et netserviceDescriptor, et devrait former le RDN. Si requis, des entrées alias peuvent être définies.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge exactNetgroup }
 
\
 
\hspace{1mm}  Les utilisateurs et les hôtes bénéficient d'un netservice s'ils sont membre d'un ou plusieurs netgroups identifiés par les attributs exactNetgroup qui peuvent être assignés à une entrée netserviceDescriptor.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge exactNetservice }
 
\
 
\hspace{1mm} d'autres netservices peuvent être hérités en utilisant un ou plusieurs attributs exactNetservice qui peuvent être assignés à une entrée netserviceDescriptor:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.11 NAME 'exactNetservice' DESC 'Case exact netservice name associated with this entry' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15\{32768\} )\\
}
\vspace{8mm}
 
\hspace{1mm}  Chaque netservice identifié par l'attribut exactNetservice devrait être un nom netservice pleinement qualifié. Le DUA devrait valider qu'un netservice référencé par cet attribut existe et est activé. Si le netservice n'est pas définis, ou s'il n'a pas été désactivé avec l'attribut disableObject, il ne devrait pas être considéré.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge description }
 
\
 
\hspace{1mm}  L'attribut description peut être associé avec une entrée netserviceObject ou netserviceDescriptor pour fournir une description arbitraire de l'entrée.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge manager }
 
\
 
\hspace{1mm}  L'attribut manager peut etre associé avec un netserviceObject ou netserviceDescriptor pour fournir un ou plusieurs DN des individus, groupes ou systèmes qui sont responsables de la maintenance de l'object.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge disableObject }
 
\
 
\hspace{1mm}  Une entrée netservice peut être désactivée en définissant l'attribut disableObject à TRUE. Si une entrée est désactivée, le DUA devrait se comporter comme si l'entrée n'existait pas. Le DUA peut optionnellement fournir un mécanisme séparé pour lister les entrées désactivées, mais doit les marquer clairement comme désactivés. L'attribut disableObject peut être définis sur soit dans l'entrée netserviceObject soit netserviceDescriptor. Si définis dans l'entrée netserviceObject, le DUA devrait traiter toutes les entrées netserviceDescriptor présents comme désactivés également.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Exemple d'entrées netservice }
 
\
 
\hspace{1mm} L'exemple suivante montre des entrées netservice au format ldif:
 
{\ttfamily
dn: en=ssh,ou=netservice,o=infra\\ objectClass: top\\ objectClass: netserviceDescriptor\\ objectClass: netserviceObject\\ en: ssh\\ description: Secure Shell Service\\ \hspace{2mm}\\ dn: en=login,en=ssh,ou=netservice,o=infra\\ objectClass: top\\ objectClass: netserviceDescriptor\\ en: login\\ exactNetgroup: all-hosts\\ exactNetservice: ftp:login\\ exactNetservice: web:login/anonymous\\ \hspace{2mm}\\ dn: en=ftp,ou=netservice,o=infra\\ objectClass: top\\ objectClass: netserviceDescriptor\\ objectClass: netserviceObject\\ en: ftp\\ description: FTP Service\\ \hspace{2mm}\\ dn: en=login,en=ftp,ou=netservice,o=infra\\ objectClass: top\\ objectClass: netserviceDescriptor\\ en: login\\ \hspace{2mm}\\ dn: en=web,ou=netservice,o=infra\\ objectClass: top\\ objectClass: netserviceDescriptor\\ objectClass: netserviceObject\\ en: web\\ description: Web Service\\ \hspace{2mm}\\ dn: en=login,en=web,ou=netservice,o=infra\\ objectClass: top\\ objectClass: netserviceDescriptor\\ en: login\\ \hspace{2mm}\\ dn: en=anonymous,en=login,en=web,ou=netservice,o=infra\\ objectClass: top\\ objectClass: netserviceDescriptor\\ en: anonymous\\
}
\vspace{8mm}
 
\hspace{1mm}  Ces entrées exemple définissent un netservice appelé ssh:login qui est permis aux membres de du netgroup all-hosts. Si ce netservice est activé, les netservices ftp:login et web:login, également définis, seront activés automatiquement.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Attributs communs }
 
\
 
\hspace{1mm}  Des attributs additionnels qui sont soit utilisés dans ce document ou requis par d'autres documents en utilisant les netgroups sont définis ou référencés ci-dessous.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge notNetgroup }
 
\
 
\hspace{1mm} Un ou plusieurs netgroups qui sont exclus d'une entrée de configuration particulière sont fournis dans les attributs notNetgroup:
 
{\ttfamily
attributetype ( 1.3.6.1.4.1.23780.219.2.12 NAME 'notNetgroup' DESC 'Case exact netgroup name NOT to be associated with this entry' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15\{32768\} )\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Syntaxe d'attribut }
 
\
 
\hspace{1mm} Les syntaxes suivantes sont utilisées par les attributs définis dans ce document:
 
{\ttfamily
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\\ Syntax OID Value Reference\\ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\\ 1.3.6.1.4.1.1466.115.121.1.15 Directory String \texttt{[}RFC4517\texttt{]}\\ 1.3.6.1.4.1.1466.115.121.1.26 IA5 String \texttt{[}RFC4517\texttt{]}\\ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}
\vspace{8mm}
 
\vspace{1cm}{\huge Notes d'implémentation }
 
\
 
 
 
\vspace{1cm}{\huge netgroups NIS }
 
\
 
\hspace{1mm}  les netgroups DBIS diffèrent des netgroups NIS et des netgroups définis dans la rfc2307, qui utilise des triplets au format: \textbf{(host,user,domain)}, où "host" est le nom d'hôte canonique du système client demandant un service, "user" est le nom d'utilisateur qui demande un service, et "domain" est le nom de domaine du service demandé. Il les champs host, user et domain sont vides, alors le netgroup NIS s'applique à tous les hôtes, utilisateurs, ou domaines respectivement.
\vspace{5mm} \\
 
 
\hspace{1mm}  L'utilisation la plus commune des netgroups NIS est pour définir des groupes d'hôte et d'utilisateurs alors que le domaine est généralement laissé vide.
\vspace{5mm} \\
 
 
\hspace{1mm}  DBIS sépare le triplet en 2 attributs séparés, netgroupHost et netgroupUser, et redéfinis également le composant domaine à utiliser pour représenter tous les hôtes dans un domaine donné. Un jeu de règles de mappage peut être utilisé pour convertir la représentation chaîne de netgroup DBIS et une liste de triplets netgroup NIS. Dans la grammaire suivante, la règle commençant par t- est sélectionnée en fonction de l'information fournie dans l'attribut netgroupHost ou netgoupUser. En supprimant le t- on peut déduire le nom de la règle de correspondance:
\vspace{5mm} \\
 
 
{\ttfamily
t-host = LPAREN host COMMA COMMA RPAREN\\ t-host-domain = LPAREN host-domain COMMA COMMA RPAREN\\ t-all-domain = LPAREN COMMA COMMA domain RPAREN\\ t-user = LPAREN COMMA user COMMA RPAREN\\ t-user-host = LPAREN host COMMA user COMMA RPAREN\\ t-user-host-domain = LPAREN host-domain COMMA user COMMA RPAREN\\ t-user-all-domain = LPAREN COMMA user COMMA domain RPAREN\\ \hspace{2mm}\\ triple-any = t-host / t-host-domain / t-all-domain\\ triple-any =/ t-user / t-user-host / t-user-host-domain\\ triple-any =/ t-user-all-domain\\ \hspace{2mm}\\ triples = t-any *(SPACE t-any)\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Former les entrées netgroupHost ou netgroupUser }
 
\
 
\hspace{1mm}  L'appartenance à un netgroup devrait être exprimé en termes de noms canoniques uniquement. Vu que le composant username de l'attribut netgroupUser est sensible à la casse alors que les autres composants ne le sont pas, un DUA devrait convertir les composants nom d'hôte et nom de domaine en minuscule avant de former un attribut netgroupHost ou netgroupUser ou un filtre le contenant. C'est pour s'assurer que la correspodance effectuée sur ces attributs n'échoueront pas sur le nom d'hôte ou le nom de domaine sur à une problème de casse.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Paramètres de recherche }
 
\
 
\hspace{1mm}  Cette section fournis des exemples de filtres de recherche pour obtenir des entrées de base avec les critères communément utilisés.
\vspace{5mm} \\
 
 
\hspace{1mm}  Pour simplifier les exemples, on assume que toutes les base ont une seul entrée de map de configuration (dbisMapConfig). Cependant, le draft-bannister-dbis-mapping permet d'utiliser plusieurs entrées, donc pour qu'une implémentation le supporte, le nombre d'opérations de recherche nécessaire pour localiser toutes les entrées de base doit être augmenté.
\vspace{5mm} \\
 
 
\hspace{1mm}  Ce document ne considère pas comment incorporer les entrées de base hosts ou passwd qui utilisent l'attribut exactNetgroup comme moyen alternatif pour spécifier les membre de netgroup.
\vspace{5mm} \\
 
 
\hspace{1mm}  Le DN de base utilisé dans les opérations de recherche décris dans cette section vient de l'attribut dbisMapDN assigné à l'entrée dbisMapConfig. Noter qu'une entrée dbisMapConfig peut en avoir plusieurs.
\vspace{5mm} \\
 
 
\hspace{1mm}  Quand il apparaît dans les filtres de recherche ci-dessous, le texte "dbisMapFilter" réfère à la valeur assignée à l'attribut de même nom dans l'entrée dbisMapConfig correspondante. Noter que les base netgroup et netservice utilisé dans ces filtres de recherche peuvent être modifiés par l'attribut dbisMapClass et dbisMapAttr assigné à l'entrée dbisMapConfig. Dans tous les filtres ci-dessous, les noms de domaine DNS pleinement qualifiés sont obtenus comme décris dans la section "Déterminer les hôtes membre".
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Trouver la Map de configuration pour le domaine }
 
\
 
\hspace{1mm}  Pour localiser la map de configuration pour un domaine DBIS donné, recherche les entrées sous l'entrée dbisDomainObject
\vspace{5mm} \\
 
 
\hspace{1mm} Les maps netgroup peuvent être trouvés avec le filtre de recherche suivant \\
\hspace{1mm} \textbf{(\&(objectClass=dbisNetgroupConfig)(!(disableObject=TRUE)))} \\
\hspace{1mm} Les maps netservice avec: \\
\hspace{1mm} \textbf{(\&(objectClass=dbisNetserviceConfig)(!(disableObject=TRUE)))} \\
 
\vspace{1cm}{\huge Lister toutes les entrées }
 
\
 
\hspace{1mm} Les netgroup et netservices sont énumérés en appliquant le dbisMapFilter comme suit: \\
\hspace{1mm} \textbf{(\&(dbisMapFilter)(!(disableObject=TRUE)))} \\
 
\vspace{1cm}{\huge Trouver un netgroup ou netservice particulier }
 
\
 
\hspace{1mm} Is un netgroup ou netservice est connu par "nom", sa définition est localisée en utilisant le filtre de recherche suivant: \\
\hspace{1mm} \textbf{(\&(dbisMapFilter)(!(disableObject=TRUE))(en=name))} \\
 
\hspace{1mm}  Si c'est un netservice et que l'entrée retournée est un netserviceDescriptor et pas un netserviceObject, alors un test additionnel devrait être effectué sur l'attribut disableObject sur le netserviceObject parent pour déterminer si le netservice est désactivé.
\vspace{5mm} \\
 
 
\hspace{1mm}  En recherchant des netservice spécifiques par nom, ce filtre peut retourner plus d'un résultat, vu que l'unicité de l'espace de nom est déterminé par le chemin et non par le nom dans une entrée LDAP.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Trouver des netgroup par membership }
 
\
 
\hspace{1mm} Pour obtenir une liste de tous les netgroups qu'un utilisateur avec le nom de login "user", qui est connecté sur un hôte nommé "host" avec le domaine DNS "domain" est un membre, le filtre de recherche suivant peut être utilisé: \\
\hspace{1mm} \textbf{(\&(dbisMapFilter)(!(disableObject=TRUE))(|(netgroupUser=user)(netgroupUser=user@host.domain)(netgroupUser=user@\textbackslash{}2a.domain)))} \\
 
\hspace{1mm} Pour obtenir une liste de tous les netgroups qu'un système nommé "host" avec le nom dns "domaine" est un membre, le filtre suivant peut être utilisé: \\
\hspace{1mm} \textbf{(\&(dbisMapFilter)(!(disableObject=TRUE))(|(netgroupHost=host)(netgroupHost=host.domain)(netgroupHost=\textbackslash{}2a.domain)))} \\
 
\hspace{1mm}  Si l'utilisateur ou l'hôte n'est pas un membre explicite du netgroup, le membreship implicite doit être déterminé en examinant récursivement chaque attribut exactNetgroup dans le jeu de résultat. Pour empêcher les boucles infinies, un DUA ne devrait pas tester un netgroup plus d'une fois durant une opération de membership.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Membre d'un netgroup spécifique }
 
\
 
\hspace{1mm} Pour déterminer si un utilisateur avec un nom "user", qui est loggé sur un hôte nommé "host", avec un nom de domaine "domain" est un membre d'un netgroup spécifique appelé "name", le filtre de recherche suivant peut être utilisé: \\
\hspace{1mm} \textbf{(\&(dbisMapFilter)(!(disableObject=TRUE))(en=name)(|(netgroupUser=user)(netgroupUser=user@host.domain)(netgroupUser=user@\textbackslash{}2a.domain)))} \\
 
\hspace{1mm} Pour déterminer si un système nommé "host" avec le nom de domaine "domain" est un membre d'un netgroup spécifique appelé "name", le filtre de recherche suivant peut être utilisé: \\
\hspace{1mm} \textbf{(\&(dbisMapFilter)(!(disableObject=TRUE))(en=name)(|(netgroupHost=host)(netgroupHost=host.domain)(netgroupHost=\textbackslash{}2a.domain)))} \\
 
\hspace{1mm}  Si l'utilisateur ou l'hôte n'est pas un membre explicite du netgroup, un membership implicite doit être détermineé en examinant récursivement chaque attribut exactNetgroup dans le jeu de résultat.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Quels Netgroups sont activés }
 
\
 
\hspace{1mm}  parfois il est nécessaire de déterminer depuis une liste de netgroups quels sont ceux qui sont activés. Cela peut être effectués en utilisant une opération de recherche. Dans cet exemple les netgroups testés sont appelés "netgr1", "netgr2" et "netgr3".
\vspace{5mm} \\
 
 
\hspace{1mm} Pour déterminer si une système nommé "host" avec le nom de domaine "domaine" est un membre d'un netgroup spécifique appelé "name", le filtre suivant peut être utilisé: \\
\hspace{1mm} \textbf{(\&(dbisMapFilter)(!(disableObject=TRUE))(|(en=netgr1)(en=netgr2)(en=netgr3)))} \\
 
\vspace{1cm}{\huge Trouver des netservices par membership }
 
\
 
\hspace{1mm} Pour obtenir une liste de tous les netservices qui sont assignés au netgroup appelé "netgroup", le filtre suivant peut être utilisé: \\
\hspace{1mm} \textbf{(\&(dbisMapFilter)(!(disableObject=TRUE))(exactNetgroup=netgroup))} \\
 
\hspace{1mm}  Le nom netservice peut être dérivé du DN des entrées retournées. Par exemple, "en=anonymous,en=login,en=web,dbisMapDN" représente le netservice web:login/anonymous.
\vspace{5mm} \\
 
 
\hspace{1mm}  Chaque entrée retournée peut lister des netservices additionnels assignés par l'attribut exactNetservice
\vspace{5mm} \\
 
 
\hspace{1mm}  Si une entrée netservice trouvé est un netserviceDescriptor et non un netserviceObject, un test supplémentaire devrait être effectué pour l'attribut disableObject sur le netserviceObject parent pour déterminer si le netservice est désactivé.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Membre d'un netservice spécifique }
 
\
 
\hspace{1mm}  Pour déterminer si un netgroup a été assigné à un netservice spécifique, le nom netservice doit être splitté en un nom de chemin consistant de 'en=...,en=...' pour qu'une entrée spécifique avec l'objectClass netserviceDescriptor puisse être recherchée sous dbisMapDN. Si cette entrée a un attribut exactNetgroup correspondant au nom de membre désiré, une correspondance est trouvée.
\vspace{5mm} \\
 
 
\hspace{1mm}  Par exemple, le netservice web:login/anonymous devient le chemin 'en=anonymous,en=login,en=web' sous dbisMapDN. Le netserviceDescriptor correspondant à ce DN contient la définition du netservice donné. L'attribut exactNetgroup associé avec cette entrée contient la liste des netgroups assignés au netservice web:login/anonymous.
\vspace{5mm} \\
 
 
\hspace{1mm} De plus, le filtre de recherche suivant peut être utilisé pour localiser les netservices qui incluent en netservice appelé "netservice" dans leur définitions et qui sont assignés au netgroup nommé "netgroup": \\
\hspace{1mm} \textbf{(\&(dbisMapFilter)(!(disableObject=TRUE))(exactNetservice=netservice)(exactNetgroup=netgroup))} \\
 
\hspace{1mm}  Si une entrée est retournée par une recherche avec ce filtre alors une correspondance a été trouvée.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
