Merge sshkeys check with the alioth userdir-ldap-common
[mirror/userdir-ldap.git] / userdir-ldap.schema
1 # Revision history:
2 #
3 # XXX
4 #   - [PP] Now version controlled in db.d.o bzr repository - 2007-12-25
5 #   - [HE] Add 'purpose', 'physicalHost' to debianServer - 2007-12-25
6 #   - [zobel] Add 'VoIP' - 2008-05-10
7 #
8 # 0.7 [RM]
9 #   - Add 'gender' and 'birthDate' to debianDeveloper
10 #   - Add 'mailDisableMessage' to debianAccount
11 #   - Add 'mailDisableMessage', 'mailCallout', 'mailGreylisting', 'mailRBL',
12 #         'mailRHSBL', and 'mailWhitelist' to debianDeveloper and debianRoleAccount
13
14 # 0.6 [JT]
15 #   - Add 'access' as a MAY for debianServer objectclass.
16 #   - Make activity-from a UTF-8 string rather than ASCII.
17 #   - add new debianRoleAccount objectclass.
18 #
19 # 0.5 [JT]
20 #   - Add 'access' as a MAY for debianDeveloper objectclass.
21 #   - Add 'gid' attribute.
22 #   - Make homeDirectory a MAY not MUST for debianAccount.
23 #   - drop userPassword and memberUID MAYs from debianGroup.
24 #   - add SUP top STRUCTURAL to debianGroup.
25 #
26 # 0.4
27 #   - add a UTF8-enabled 'gecos' attribute type, conflicts with RFC2307
28 #   - add debianAccount, which is roughly equivalent to posixAccount but
29 #     permits UTF8 gecos fields
30 #   - add debianGroup, which is the same as above but for posixGroup
31 #
32 # 0.3
33 #   - Remove labeledURI, jpegPhoto from the list of supported 
34 #     attributes; using inetOrgPerson instead of organizationalPerson as
35 #     a structural objectclass gives us both of these, and several other 
36 #     attributes that may be useful.
37 #   - Add echelon attributes for MIA work to the debiandeveloper
38 #     objectclass. (accountcomment,accountstatus)
39 #   - Add specification for debianServer objectclass, used for Debian 
40 #     server listings
41 #
42 # 0.2
43 #   - grammarfied 'allowedHosts' to 'allowedHost' as
44 #      1.3.6.1.4.1.9586.100.4.2.12.
45 #   - add 'privateSub' as 1.3.6.1.4.1.9586.100.4.4.5.
46 #   - add 'jabberJID' as 1.3.6.1.4.1.9586.100.4.2.13.
47 #   - change 'icqUIN' to an integer type (see? I told you it wasn't
48 #     approved for use yet! ;)
49 #
50 # 0.1
51 #   - initial revision
52 #
53 #
54 # Project: db.debian.org
55 # Contact: Debian directory administrators <admin@db.debian.org>
56 # Type:    X.500/LDAP
57 # Section: Project
58 #
59 # enterprise.Debian.project.userdir / 1.3.6.1.4.1.9586.100.4
60 #
61 # .1 - public LDAP objectClasses
62 #   .1 - debianAccount
63 #   .2 - debianGroup
64 #
65 # .2 - public LDAP attributeTypes
66 #   .1 - sshRSAAuthKey
67 #   .2 - activity-from
68 #   .3 - activity-pgp
69 #   .4 - comment
70 #   .5 - icqUin
71 #   .6 - ircNick
72 #   .7 - latitude
73 #   .8 - longitude
74 #   .9 - middlename (mn)
75 #   .10 - onVacation
76 #   .11 - supplementaryGid
77 #   .12 - allowedHost
78 #   .13 - jabberJID
79 #   .14 - access
80 #   .15 - admin
81 #   .16 - architecture
82 #   .17 - bandwidth
83 #   .18 - disk
84 #   .19 - distribution
85 #   .20 - host
86 #   .21 - hostname
87 #   .22 - machine
88 #   .23 - memory
89 #   .24 - sponsor
90 #   .25 - sponsor-admin
91 #   .26 - sshRSAHostKey
92 #   .27 - status
93 #   .28 - gecos
94 #   .29 - gid
95 #   .30 - gender
96 #   .31 - birthdate
97 #   .32 - mailDisableMessage
98 #   .33 - purpose
99 #   .34 - physicalHost
100 #   .35 - VoIP
101 #
102 # .3 - experimental LDAP objectClasses
103 #   .1 - debianDeveloper
104 #   .2 - debianServer
105 #   .3 - debianRoleAccount
106
107 # .4 - experimental LDAP attributeTypes
108 #   .1 - allowedHosts - OBSOLETED
109 #   .2 - dnsZoneEntry
110 #   .3 - emailForward
111 #   .4 - keyFingerPrint
112 #   .5 - privateSub
113 #   .6 - accountComment
114 #   .7 - accountStatus
115 #   .8 - perform callouts
116 #   .9 - perform greylisting
117 #   .11 - DNS RBL
118 #   .12 - RHS RBL
119 #   .13 - whitelist
120
121 # Public attribute types
122 attributetype ( 1.3.6.1.4.1.9586.100.4.2.1 
123         NAME 'sshRSAAuthKey'
124         DESC 'textual form of an SSH public key compatible with authorized_keys'
125         EQUALITY caseIgnoreMatch
126         SUBSTR caseIgnoreSubstringsMatch
127         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
128
129 attributetype ( 1.3.6.1.4.1.9586.100.4.2.2
130         NAME 'activity-from'
131         DESC 'last known activity from user email address'
132         EQUALITY caseExactMatch
133         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
134
135 attributetype ( 1.3.6.1.4.1.9586.100.4.2.3
136         NAME 'activity-pgp'
137         DESC 'last known activity from user PGP key'
138         EQUALITY caseExactIA5Match
139         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
140
141 attributetype ( 1.3.6.1.4.1.9586.100.4.2.4
142         NAME 'comment'
143         DESC 'user-editable comment'
144         EQUALITY caseExactIA5Match
145         SUBSTR caseIgnoreIA5SubstringsMatch
146         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
147
148 attributetype ( 1.3.6.1.4.1.9586.100.4.2.5
149         NAME 'icqUin'
150         DESC 'UIN for ICQ instant messaging system'
151         EQUALITY integerMatch
152         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
153
154 attributetype ( 1.3.6.1.4.1.9586.100.4.2.6
155         NAME 'ircNick'
156         DESC 'Internet Relay Chat nickname'
157         EQUALITY caseIgnoreIA5Match
158         SUBSTR caseIgnoreIA5SubstringsMatch
159         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
160
161 attributetype ( 1.3.6.1.4.1.9586.100.4.2.7
162         NAME 'latitude'
163         DESC 'latitude coordinate'
164         EQUALITY caseExactIA5Match
165         SUBSTR caseExactIA5SubstringsMatch
166         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
167
168 attributetype ( 1.3.6.1.4.1.9586.100.4.2.8
169         NAME 'longitude'
170         DESC 'longitude coordinate'
171         EQUALITY caseExactIA5Match
172         SUBSTR caseExactIA5SubstringsMatch
173         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
174
175 attributetype ( 1.3.6.1.4.1.9586.100.4.2.9
176         NAME ( 'mn' 'middlename' )
177         SUP name )
178
179 attributetype ( 1.3.6.1.4.1.9586.100.4.2.10
180         NAME 'onVacation'
181         DESC 'vacation message'   
182         EQUALITY caseIgnoreMatch
183         SUBSTR caseIgnoreSubstringsMatch
184         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
185
186 attributetype ( 1.3.6.1.4.1.9586.100.4.2.11
187         NAME 'supplementaryGid'
188         DESC 'additional Unix group id of user'
189         EQUALITY caseIgnoreMatch
190         SUBSTR caseIgnoreSubstringsMatch
191         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
192
193 attributetype ( 1.3.6.1.4.1.9586.100.4.2.12
194         NAME 'allowedHost'
195         DESC 'host name this account is allowed access to'
196         EQUALITY caseIgnoreIA5Match
197         SUBSTR caseIgnoreIA5SubstringsMatch
198         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
199
200 attributetype ( 1.3.6.1.4.1.9586.100.4.2.13
201         NAME 'jabberJID'
202         DESC 'JID for Jabber instant messaging protocol'
203         EQUALITY caseIgnoreIA5Match
204         SUBSTR caseIgnoreIA5SubstringsMatch
205         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
206
207 attributetype ( 1.3.6.1.4.1.9586.100.4.2.14
208         NAME 'access'
209         DESC 'nature of access allowed to server'
210         EQUALITY caseIgnoreMatch
211         SUBSTR caseIgnoreSubstringsMatch
212         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
213
214 attributetype ( 1.3.6.1.4.1.9586.100.4.2.15
215         NAME 'admin'
216         DESC 'email address of server administrator'
217         EQUALITY caseIgnoreIA5Match
218         SUBSTR caseIgnoreIA5SubstringsMatch
219         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
220
221 attributetype ( 1.3.6.1.4.1.9586.100.4.2.16
222         NAME 'architecture'
223         DESC 'hardware architecture of server'
224         EQUALITY caseIgnoreIA5Match
225         SUBSTR caseIgnoreIA5SubstringsMatch
226         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE )
227
228 attributetype ( 1.3.6.1.4.1.9586.100.4.2.17
229         NAME 'bandwidth'
230         DESC 'type of network connection for server'
231         EQUALITY caseIgnoreMatch
232         SUBSTR caseIgnoreSubstringsMatch
233         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
234
235 attributetype ( 1.3.6.1.4.1.9586.100.4.2.18
236         NAME 'disk'
237         DESC 'amount of disk space available to server'
238         EQUALITY caseIgnoreMatch
239         SUBSTR caseIgnoreSubstringsMatch
240         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
241
242 attributetype ( 1.3.6.1.4.1.9586.100.4.2.19
243         NAME 'distribution'
244         DESC 'host OS distribution'
245         EQUALITY caseIgnoreIA5Match
246         SUBSTR caseIgnoreIA5SubstringsMatch
247         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE )
248
249 #attributetype ( 1.3.6.1.4.1.9586.100.4.2.20
250 #       NAME 'host'
251 #       DESC '(short) host name of server'
252 #       EQUALITY caseIgnoreIA5Match
253 #       SUBSTR caseIgnoreIA5SubstringsMatch
254 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE )
255
256 attributetype ( 1.3.6.1.4.1.9586.100.4.2.21
257         NAME 'hostname'
258         DESC 'FQDN of the server'
259         EQUALITY caseIgnoreIA5Match
260         SUBSTR caseIgnoreIA5SubstringsMatch
261         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
262
263 attributetype ( 1.3.6.1.4.1.9586.100.4.2.22
264         NAME 'machine'
265         DESC 'description of physical hardware'
266         EQUALITY caseIgnoreMatch
267         SUBSTR caseIgnoreSubstringsMatch
268         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} SINGLE-VALUE )
269
270 attributetype ( 1.3.6.1.4.1.9586.100.4.2.23
271         NAME 'memory'
272         DESC 'amount of RAM available to server'
273         EQUALITY caseIgnoreMatch
274         SUBSTR caseIgnoreSubstringsMatch
275         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
276
277 attributetype ( 1.3.6.1.4.1.9586.100.4.2.24
278         NAME 'sponsor'
279         DESC 'name of the sponsor of this server'
280         EQUALITY caseIgnoreMatch
281         SUBSTR caseIgnoreSubstringsMatch
282         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
283
284 attributetype ( 1.3.6.1.4.1.9586.100.4.2.25
285         NAME 'sponsor-admin'
286         DESC 'email address of sponsoring server administrator'
287         EQUALITY caseIgnoreIA5Match
288         SUBSTR caseIgnoreIA5SubstringsMatch
289         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
290
291 attributetype ( 1.3.6.1.4.1.9586.100.4.2.26
292         NAME 'sshRSAHostKey'
293         DESC 'textual form of an SSH public host key compatible with known_hosts'
294         EQUALITY caseIgnoreMatch
295         SUBSTR caseIgnoreSubstringsMatch
296         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
297
298 attributetype ( 1.3.6.1.4.1.9586.100.4.2.27
299         NAME 'status'
300         DESC 'administrative status of server'
301         EQUALITY caseIgnoreMatch
302         SUBSTR caseIgnoreSubstringsMatch
303         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
304
305 attributetype ( 1.3.6.1.4.1.9586.100.4.2.28
306         NAME 'gecos'
307         DESC 'The GECOS field; the common name'
308         EQUALITY caseIgnoreMatch
309         SUBSTR caseIgnoreSubstringsMatch
310         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
311
312 attributetype ( 1.3.6.1.4.1.9586.100.4.2.29
313         NAME 'gid'
314         DESC 'Group Name'
315         EQUALITY caseExactIA5Match
316         SUBSTR caseExactIA5SubstringsMatch
317         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
318
319 attributetype ( 1.3.6.1.4.1.9586.100.4.2.30
320         NAME 'gender'
321         DESC 'ISO 5218 representation of human gender'
322         EQUALITY integerMatch
323         SINGLE-VALUE
324         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27{1} )
325
326 attributetype ( 1.3.6.1.4.1.9586.100.4.2.31
327         NAME 'birthDate'
328         DESC 'Date of birth in YYYYMMDD format'
329         EQUALITY numericStringMatch
330         SINGLE-VALUE
331         SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{8} )
332
333 attributetype ( 1.3.6.1.4.1.9586.100.4.2.32
334         NAME 'mailDisableMessage'
335         DESC 'Message returned when all mail is disabled'
336         EQUALITY caseIgnoreIA5Match
337         SUBSTR caseIgnoreIA5SubstringsMatch
338         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
339
340 attributetype ( 1.3.6.1.4.1.9586.100.4.2.33
341         NAME 'purpose'
342         DESC 'purposes of this server'
343         EQUALITY caseIgnoreMatch
344         SUBSTR caseIgnoreSubstringsMatch
345         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
346
347 attributetype ( 1.3.6.1.4.1.9586.100.4.2.34
348         NAME 'physicalHost'
349         DESC 'FQDN of the physical host of this virtual server'
350         EQUALITY caseIgnoreIA5Match
351         SUBSTR caseIgnoreIA5SubstringsMatch
352         SINGLE-VALUE
353         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
354
355 attributetype ( 1.3.6.1.4.1.9586.100.4.2.35
356         NAME 'VoIP'
357         DESC 'VoIP URL to communicate with that person'
358         EQUALITY caseIgnoreIA5Match
359         SUBSTR caseIgnoreIA5SubstringsMatch
360         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
361
362 # Public object classes
363
364 objectclass ( 1.3.6.1.4.1.9586.100.4.1.1
365         NAME 'debianAccount'
366         DESC 'Abstraction of an account with POSIX attributes and UTF8 support'
367         SUP top AUXILIARY
368         MUST ( cn $ uid $ uidNumber $ gidNumber )
369         MAY ( userPassword $ loginShell $ gecos $ homeDirectory $ description $ mailDisableMessage ) )
370
371 objectclass ( 1.3.6.1.4.1.9586.100.4.1.2
372         NAME 'debianGroup'
373         SUP top STRUCTURAL
374         DESC 'attributes used for Debian groups'
375         MUST ( gid $ gidNumber )
376         MAY ( description ) )
377
378 # Experimental attribute types
379
380 # There are existing schemas for doing DNS in LDAP; would one of
381 # these be better?  c.f. draft-miller-dns-ldap-schema-00 (expired)
382 attributetype ( 1.3.6.1.4.1.9586.100.4.4.2
383         NAME 'dnsZoneEntry'
384         DESC 'DNS zone record for user'
385         EQUALITY octetStringMatch
386         SUBSTR caseIgnoreSubstringsMatch
387         SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
388
389 # rfc822mailbox (RFC1274) is recommended as a replacement for this in
390 # general.
391 attributetype ( 1.3.6.1.4.1.9586.100.4.4.3
392         NAME 'emailForward'
393         DESC 'forwarding address for email sent to this account'
394         EQUALITY caseIgnoreIA5Match
395         SUBSTR caseIgnoreIA5SubstringsMatch
396         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
397
398 # Network Associates also has a schema for PGP keys / key IDs which may
399 # or may not be applicable:
400 # http://www.openldap.org/lists/openldap-devel/200010/msg00071.html
401 attributetype ( 1.3.6.1.4.1.9586.100.4.4.4 
402         NAME 'keyFingerPrint'
403         EQUALITY caseIgnoreMatch  
404         SUBSTR caseIgnoreSubstringsMatch
405         SYNTAX  1.3.6.1.4.1.1466.115.121.1.15 )
406
407 # Rather Debian-specific, not useful to the public.
408 attributetype ( 1.3.6.1.4.1.9586.100.4.4.5 
409         NAME 'privateSub'
410         DESC 'email subscription address for debian-private mailing list'
411         EQUALITY caseIgnoreIA5Match
412         SUBSTR caseIgnoreIA5SubstringsMatch
413         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
414
415 # Echelon attributes; re-evaluate later
416 attributetype ( 1.3.6.1.4.1.9586.100.4.4.6
417         NAME 'accountComment'
418         DESC 'additional comments regarding the account status'
419         EQUALITY caseIgnoreIA5Match
420         SUBSTR caseIgnoreIA5SubstringsMatch
421         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
422
423 attributetype ( 1.3.6.1.4.1.9586.100.4.4.7
424         NAME 'accountStatus'
425         DESC 'Debian developer account status'
426         EQUALITY caseIgnoreIA5Match
427         SUBSTR caseIgnoreIA5SubstringsMatch
428         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
429
430 # mail attributes; not public information
431 attributetype ( 1.3.6.1.4.1.9586.100.4.4.8
432         NAME 'mailCallout'
433         DESC 'Whether or not to require a successful callout attempt on email delivery'
434         EQUALITY booleanMatch
435         SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
436
437 attributetype ( 1.3.6.1.4.1.9586.100.4.4.9
438         NAME 'mailGreylisting'
439         DESC 'Whether or not to perform greylisting on email delivery'
440         EQUALITY booleanMatch
441         SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
442
443 attributetype ( 1.3.6.1.4.1.9586.100.4.4.11
444         NAME 'mailRBL'
445         DESC 'RBL sites to check at SMTP accept time'
446         EQUALITY caseIgnoreIA5Match
447         SUBSTR caseIgnoreIA5SubstringsMatch
448         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
449
450 attributetype ( 1.3.6.1.4.1.9586.100.4.4.12
451         NAME 'mailRHSBL'
452         DESC 'RHSBL sites to check at SMTP accept time'
453         EQUALITY caseIgnoreIA5Match
454         SUBSTR caseIgnoreIA5SubstringsMatch
455         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
456
457 attributetype ( 1.3.6.1.4.1.9586.100.4.4.13
458         NAME 'mailWhitelist'
459         DESC 'sites to whitelist from additional SMTP accept time checks'
460         EQUALITY caseIgnoreIA5Match
461         SUBSTR caseIgnoreIA5SubstringsMatch
462         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
463
464 # Experimental objectclasses:
465
466 objectclass ( 1.3.6.1.4.1.9586.100.4.3.1
467         NAME 'debianDeveloper'
468         DESC 'additional account attributes used by Debian'
469         SUP top AUXILIARY
470         MUST ( uid $ cn $ sn )
471         MAY ( accountComment $ accountStatus $ activity-from $
472               activity-pgp $ allowedHost $ comment $ countryName $
473               dnsZoneEntry $ emailForward $ icqUin $ ircNick $
474               jabberJID $ keyFingerPrint $ latitude $ longitude $ mn $
475               onVacation $ privateSub $ sshRSAAuthKey $ supplementaryGid $
476               access $ gender $ birthDate $ mailCallout $ mailGreylisting $
477               mailRBL $ mailRHSBL $ mailWhitelist
478         ) )
479
480 objectclass ( 1.3.6.1.4.1.9586.100.4.3.2
481         NAME 'debianServer'
482         DESC 'Internet-connected server associated with Debian'
483         SUP top STRUCTURAL
484         MUST ( host $ hostname )
485         MAY ( c $ access $ admin $ architecture $ bandwidth $ description $ disk $
486               distribution $ l $ machine $ memory $ sponsor $
487               sponsor-admin $ sshRSAHostKey $ status $ purpose $ physicalHost
488         ) )
489
490 objectclass ( 1.3.6.1.4.1.9586.100.4.3.3
491         NAME 'debianRoleAccount'
492         DESC 'Abstraction of an account with POSIX attributes and UTF8 support'
493         SUP account STRUCTURAL
494         MAY ( emailForward $ supplementaryGid $ allowedHost $ labeledURI $
495               mailCallout $ mailGreylisting $ mailRBL $ mailRHSBL $
496               mailWhitelist
497         ) )