SlideShare a Scribd company logo
1 of 142
Download to read offline
LDAP Theory and Management
Brad Marshall
brad.marshall@member.sage-au.org.au
SAGE-AU Conf 2003 – p. 1
Contents
What is LDAP?
Directory services
LDAP Models
Namespaces
Schema
Replication
LDIF and DSML
Search Filters
LDAP Protocol
SAGE-AU Conf 2003 – p. 2
Contents cont
Directory Life Cycle
Directory Management
Namespace Design
Topology Design
Replication Design
Management Models
Data Maintanence
Metadirectories
Virtual directories
SAGE-AU Conf 2003 – p. 3
History of LDAP
Originally started as a front end to X.500
Provides much of X.500’s functionality at a lower
implementation cost
Removed redundant and rarely used operations
Uses TCP rather than OSI stack
University of Michigan wrote first LDAP implementation
Most early LDAP implementations were based on it
U.Mich eventually realized didn’t need X.500 and wrote
lightweight server
Meant it was easier to deploy, and more people started
using it
SAGE-AU Conf 2003 – p. 4
What is LDAP?
LDAP = Lightweight Directory Access Protocol
Stanard protocol that can be used to access information
over a network
Based on X.500
Directory Service
Described in RFC1777 and RFC2251
Stores attribute based data
SAGE-AU Conf 2003 – p. 5
What is LDAP cont
Data generally read more than written to
No transactions
No rollback
Client-server model
Based on entries
Collection of attributes
Globally unique distinguished name (DN) - like
domain name
Entries arranged in hierarchical tree structure
SAGE-AU Conf 2003 – p. 6
Directory Services
Directories are a specialized database
Used in everyday lives - phone book, TV guides, etc
Everyday directories fairly static
Online directories are dynamic, flexible, secure and can
be personalized
Examples of online directories are finger, DNS, NIS and
unix password file
SAGE-AU Conf 2003 – p. 7
Why use LDAP
Centrally manage users, groups and other data
Don’t have to manage separate directories for each
application - stops the “N + 1 directory problem”
Distribute management of data to appropriate people
Allow users to find data that they need
Not locked into a particular server
Ability to distribute servers to where they are needed
Standards available for sharing data
SAGE-AU Conf 2003 – p. 8
What LDAP can do
Find things - local office phone book, Internet
directories such as Four11, BigFoot etc
Manage things - users and groups. Removes “N + 1”
directory problem
Lightweight database applications - sort bookmarks,
small bits of data
Security - store username and passwords, digital
certificates, PKI etc
SAGE-AU Conf 2003 – p. 9
What LDAP can’t do
LDAP isn’t a relational database
No rollback for failed operations
LDAP isn’t a filesystem
No locking or seeking
Can’t search blobs of data
LDAP isn’t good for dynamic objects
Optimized for read, not write
No locking to ensure transactions occur in a certain
order - corruption could occur
No generic SQL-like reporting language
Not useful without applications
SAGE-AU Conf 2003 – p. 10
LDAP vs Databases
Read-write ratio - LDAP is read optimized
Extensibility - LDAP schemas are more easily changed
Distribution - with LDAP data can be near where it is
needed, and highly distributed
Replication - with LDAP data can be stored in multiple
locations
Different performance - directories used for many
different applications, and queries are usually simpler,
but many more of them
Data sharing - LDAP is designed for sharing data,
databases designed for one application
SAGE-AU Conf 2003 – p. 11
LDAP vs Databases cont
Database objects have complex relationships
Transaction model - LDAP transactions are simple -
usually changing one entry, databases can modify
much more
Size of information - LDAP is better at storing small bits
of information
Type of information - LDAP stores information in
attributes
Naming model - LDAP is hierachical
Schemas - database schemas are entirely user defined,
directories have core schemas to help interoperability
Standards are more important for directories - LDAP
clients can talk to any LDAP server, but database client
can only talk to the database it was designed for SAGE-AU Conf 2003 – p. 12
LDAP vs NIS
Uses arbitrary ports
No data encryption
No access-control mechanism
Uses a flat (non scalable) namespace
Uses a single-key database (providing only basic
searching abilities)
All changes had to be made by the superuser on the
domain master
Does not provide directory services for non name
service applications
No ability for clustering (slapd replication and round
robin DNS for LDAP)
SAGE-AU Conf 2003 – p. 13
X.500
Designed by International Telecom Union (ITU) and
International Organization for Standards (ISO)
First designed in 1988
First general purpose directory system
Designed to be extensible - rich search operations
Open standard
Relies on large suite of protocols
Early implementations buggy and slow
Based on OSI network protocols, not TCP/IP
SAGE-AU Conf 2003 – p. 14
LDAP Directory Services
Two general types of directory servers:
Stand alone LDAP servers
LDAP is only access mechanism
Data stores tuned for LDAP
LDAP gateway servers
Translate betwen LDAP and some other protocol
Original use of LDAP - gateway to X.500
Doesn’t really matter where data is stored, as long as it is
accessible via LDAP
SAGE-AU Conf 2003 – p. 15
Common LDAP Applications
White pages
Authentication and authorization
Personalization
Roaming profiles
Public Key Infrastructure (PKI)
Message delivery
SAGE-AU Conf 2003 – p. 16
LDAP Models
Information Model - defines the types of data and basic
units of info stored in directory
Naming Model - defines how to organise and refer to
the data
Functional Model - defines operations in LDAP protocol
Security Model - defines framework for protecting
information
SAGE-AU Conf 2003 – p. 17
Acronyms
Acronym Definition
LDAP Lightweight Directory Access Protocol
DN Distinguish Name
RDN Relative Distinguished Name
DIT Directory Information Tree
LDIF LDAP Data Interchange Format
DSML Directory Services Markup Language
OID Object Identifier
SAGE-AU Conf 2003 – p. 18
Namespaces
Hierarchical data structure
Entries are in a tree-like structure called Directory
Information Tree (DIT)
Consistent view of data - uniform namespace
Answers request
Refer to server with answer
SAGE-AU Conf 2003 – p. 19
Namespaces - Hierarchal
dc=com
dc=pisoftware
ou=People ou=Group
uid=bmarshal
uid=jparker
cn=dev cn=sysadmin
SAGE-AU Conf 2003 – p. 20
Namespaces - Flat
dc=com
dc=pisoftware
uid=bmarshal
uid=jparker
...
SAGE-AU Conf 2003 – p. 21
Namespaces cont
Directory tree is similar to unix file system
No root entry in ldap
Each entry in ldap can both contain data and be a
container
In unix, an entry is either a file or a directory - not
both
LDAP distinguished names are read from bottom to
top, unix file systems from top to bottom
SAGE-AU Conf 2003 – p. 22
Namespaces cont
/
usr
local
bin
X11R6
bin
sshd
lib
dc=com
dc=pisoftware
ou=People
ou=Sysadmin
ou=Group
cn=dev
uid=bmarshal
dc=sun
SAGE-AU Conf 2003 – p. 23
Global View
LDAP
Server 1
LDAP
Server 2
LDAP
Server 3
Note each server must contain a subtree
SAGE-AU Conf 2003 – p. 24
Distinguished Names
Defined in RFC2253 “Lightweight Directory Access
Protocol (v3): UTF-8 String Representation of
Distinguished Names”
Built up by starting at the bottom, and connecting each
level together with commas
Contain two parts
Left most part is called relative distinguished name
Remainder is base distinguished name
Eg: uid=bmarshal,ou=People,dc=pisoftware,dc=com
RDN is uid=bmarshal
Base DN is ou=People,dc=pisoftware,dc=com
SAGE-AU Conf 2003 – p. 25
Distinguished Names cont
In each base DN, each RDN is unique
This ensures no two entries have the same DN
dc=com
dc=pisoftware dc=sun
ou=Peopleou=People
Same RDN
SAGE-AU Conf 2003 – p. 26
LDAP Entry
Entries are composed of attributes
Attributes consist of types with one or more values
Type describes what the information is
Value is the actual information in text format
Attributes have a syntax which specifies what type of
data - see Schema later on
SAGE-AU Conf 2003 – p. 27
Referrals
1
2
3
4
LDAP
Server 1
LDAP
Server 2
1. Client requests
information
2. Server 1 returns referral
to server 2
3. Client resends request
to server 2
4. Server 2 returns
information to client
SAGE-AU Conf 2003 – p. 28
Aliases
Aliases are used to point one LDAP entry to another
Allows you to have structures that aren’t hierarchal
Similar in sense to using a symlink in unix
Not all LDAP servers support aliases - big performance
hit
SAGE-AU Conf 2003 – p. 29
Aliases cont
Created by:
Entry with object class of alias
Attribute named aliasedObjectName that points to
DN of the alias
Can use either referrals or putting a LDAP url in an entry
SAGE-AU Conf 2003 – p. 30
Schema
Set of rules that describes what kind of data is stored
Helps maintain consistency and quality of data
Reduces duplication of data
Ensures applications have consistent interface to the
data
Object class attribute determines schema rules the
entry must follow
SAGE-AU Conf 2003 – p. 31
Schema cont
Schema contains the following:
Required attributes
Allowed attributes
How to compare attributes
Limit what the attributes can store - ie, restrict to
integer etc
Restrict what information is stored - ie, stops
duplication etc
SAGE-AU Conf 2003 – p. 32
Objectclass
Used to group information
Provides the following rules:
Required attributes
Allowed attributes
Easy way to retrieve groups of information
Entries can have multiple object classes
Required and allowed attributes are the union of the
attributes of each of the classes
SAGE-AU Conf 2003 – p. 33
Objectclass inheritance
Object classes can be derived from others
Extends attributes of other objectclass
No multiple inheritance
Can’t override any of the rules
Special class called top - all classes extend
Only required attribute is objectclass
Ensures all entries have a objectclass
SAGE-AU Conf 2003 – p. 34
Attributes
Attributes have:
Name - unique identifier, not case sensitive
Object identifier (OID) - sequence of integers separated
by dots
Attribute syntax:
Data attributes can store - eg integer, string etc
How comparisons are made
If multi valued or single valued
SAGE-AU Conf 2003 – p. 35
Attribute Abbreviations
See RFC2256
uid User id
cn Common Name
sn Surname
l Location
ou Organizational Unit
o Organization
dc Domain Component
st State
c Country
SAGE-AU Conf 2003 – p. 36
Replication
Replication is method used to keep copy of directory
data on multiple servers
Increases:
Reliability - if one copy of the directory is down
Availability - more likely to find an available server
Performance - can use a server closer to you
Speed - can take more queries as replicas are added
Temporary inconsistencies are ok
Having replicas close to clients is important - network
going down is same as server going down
Removes single point of failure
SAGE-AU Conf 2003 – p. 37
Replication Options - Mods to Master
LDAP
Client
Modifications
Searches
LDAP
master
(read/write)
LDAP
slave
(read only)
Updates
replica
SAGE-AU Conf 2003 – p. 38
Replication Options - Referrals
LDAP
Client
LDAP
slave
(read only)1
2
3
4
5
LDAP
master
(read/write)
1. Client sends modification to replica
2. Replica returns referral of master to client
3. Client resubmits modification to master
4. Master returns results to client
5. Master updates replica with change
SAGE-AU Conf 2003 – p. 39
Replication Options - Chaining
1
23
4
5
LDAP
Master
LDAP
Slave
Client
1. Client sends
modification to replica
2. Replica forwards request
to master
3. Master returns result to
replica
4. Replica forwards result
to client
5. Master updates replica
SAGE-AU Conf 2003 – p. 40
Replication - Single Master
Single master
Single server with read-write copy of data
Use read-only replicas to handle load of reading and
searching
Uses referrals or chaining to deal with mods being
sent to replicas
Obvious single point of failure
Simplest to implement
SAGE-AU Conf 2003 – p. 41
Replication - Floating Master
Floating master
Only one server with writeable copy of data at any
time
If master becomes unavailable, new master is
chosen from remaining servers
Actual alogorithm used depends on server - usually
voting
SAGE-AU Conf 2003 – p. 42
Replication - Cascading
Cascading replication
Master replicates to hub which replays updates to
futher servers
Helps balance very heavy loads - master can be
used for all writes, and pass off all replication to hub
Can replicate out to local hubs in geographically
disperse topologies - reduces cost
Increase performance - put all reads on “bottom”
servers
SAGE-AU Conf 2003 – p. 43
Replication - Fractional
Fractional replication
Replicates subsets of attributes
Useful for synchronizing from intranet to extranet
and removing data for security reasons
Can help reduce replication costs by removing
unneeded data
SAGE-AU Conf 2003 – p. 44
Replication - Multi-master
Multi-master
More than one server with writable copy of data
Servers are responsible for ensuring data
propogates
Need a conflict resolution policy - most current
servers use a last writer wins policy
Can have automatic failover when one is unavailable
Most complex to implement
SAGE-AU Conf 2003 – p. 45
LDIF
LDAP Data Interchange Format
Represents LDAP entries in text
Human readable format
Allows easy modification of data
Useful for doing bulk changes
dump db, run a script over, import back
Can use templates for additions
Good for backups and transferring data to another
system
SAGE-AU Conf 2003 – p. 46
LDIF Cont
If attribute contains non-ascii chars, begins with a
space, colon or less than, the value is stored in base64
and type separator is ::
Can mix plain text and encoded values
Can specify URLs, type separator is :<
Entries in LDIF are separated with a blank line
Continued lines start with spaces
Utilities to convert from database to ldif and back
slapcat: ldbm database to ldif
slapadd: ldif to ldbm database
Few non-LDAP related servers know how to deal with it
SAGE-AU Conf 2003 – p. 47
LDIF Example
dn: uid=bmarshal,ou=People,
dc=pisoftware,dc=com
uid: bmarshal
cn: Brad Marshall
objectclass: account
objectclass: posixAccount
objectclass: top
loginshell: /bin/bash
uidnumber: 500
gidnumber: 120
homedirectory: /mnt/home/bmarshal
gecos: Brad Marshall,,,,
userpassword: {crypt}lDIOnUp17x2jc
SAGE-AU Conf 2003 – p. 48
DSML
XML-based file format
Can store both schema and data
Can use as generic import/export format for directory
data
Many existing servers can deal with XML
More complex than LDIF
Not all LDAP servers support it
SAGE-AU Conf 2003 – p. 49
DSML Example
<dsml:dsml xmlns:dsml="http://www.dsml.org/DSML">
<dsml:directory-entries>
<dsml:entry dn="uid=bmarshal,dc=example,dc=com"
<dsml:objectclass>
<dsml:oc-value>top</dsml:oc-value>
<dsml:oc-value>account</dsml:oc-value>
</dsml:objectclass>
<dsml:attr name="cn">
<dsml:value>Brad Marshall</dsml:value>
</dsml:attr>
<dsml:attr name=loginShell>
<dsml:value>/bin/bash</dsml:value>
</dsml:attr>
</dsml:entry>
</dsml:directory-entries>
</dsml:dsml> SAGE-AU Conf 2003 – p. 50
Search Filters
Consists of:
Base and scope - what part to search
Filter - what criteria attributes must fulfill to be
returned
Attributes - what attributes to return
Prefix notation
Standards
RFC 1960: LDAP String Representation of Search
Filters
RFC 2254: LDAPv3 Search Filters
SAGE-AU Conf 2003 – p. 51
Search Filters Operators
Basic filter types
Presence
Equality
Substring
Greater-than or equal
Less-than or equal
Approximate
Extensible
Joining filters
& and
| or
! not
SAGE-AU Conf 2003 – p. 52
Search Filter Details
Presence
Simple checks for presence of attribute
Can return everything by using (objectClass=*)
Equality
Checks for entries containing given attribute and
value
Most commonly used search
Fastest and easiest to index
Case sensitivity depends on attribute syntax
SAGE-AU Conf 2003 – p. 53
Search Filter Details cont
Substring matching
Returns entries with values matching given
substrings
Useful for finding information, eg in white pages etc
Not wildcard or regular expression matching
Restricted to matching start, middle or end of strings
Slower than presence or equality
Middle substring matches slower than start or end
SAGE-AU Conf 2003 – p. 54
Search Filter Details cont
Ordered matching (greater-than, less-than)
Order determined by attributes syntax and matching
rules
Approximate filter
Algorithm used determined by server
Common to have soundex
Extensible
Allows applying an explicit matching rule to a search
filter
Not very common, but powerful
SAGE-AU Conf 2003 – p. 55
Search Filters Examples
(objectclass=posixAccount)
(cn=Mickey M*)
(|(uid=fred)(uid=bill))
(&(|(uid=jack)(uid=jill))(objectclass=posixAccount))
SAGE-AU Conf 2003 – p. 56
Search Scope
3 types of scope:
base limits to just the base object
onelevel limits to just the immediate children
sub search the entire subtree from base down
SAGE-AU Conf 2003 – p. 57
Base Scope
SAGE-AU Conf 2003 – p. 58
One Level Scope
SAGE-AU Conf 2003 – p. 59
Subtree Scope
SAGE-AU Conf 2003 – p. 60
Optimizing Searches
Index commonly accessed attributes and appropriate
filters
Reduce opening and closing connections
Only request attributes you need
Limit the search scope if possible
Minimize number of searches - combine searches into
one, if possible
Minimize updates - writes are slow
Use replicas / high availability techniques on the server
SAGE-AU Conf 2003 – p. 61
Operational Attributes
Attributes used by server that usually aren’t displayed
Vary by directory vendor
Usually time stamps, server access controls, admin
information, last updated dates etc
SAGE-AU Conf 2003 – p. 62
Extending Schema
To extend schemas, the process is as follows:
Obtain Object Identifier (OID)
Choose name prefix
Create local schema file
Define custom attribute types (if necessary)
Define custom object classes
(Note these examples are from OpenLDAP, others should
be similar)
SAGE-AU Conf 2003 – p. 63
Obtaining OID
OIDs found in protocols described by ASN.1, eg SNMP
OIDs are hierachical
Do not just arbitrarily pick an OID
OIDs are obtained from IANA, under Private Enterprise
arc at no cost
OID from IANA will be something like 1.3.6.1.4.1.X
For experiments, OID 1.1 is available (regarded as
dead namespace)
SAGE-AU Conf 2003 – p. 64
Choose name prefix
Schema elements all have names
Names should be descriptive and not likely to clash
Convention is to prefix names with few letters to localize
the changes
The smaller the organization, the longer the prefix
should be
Examples are auFirm (Aust company) or
comPisoftware (elements for pisoftware.com)
SAGE-AU Conf 2003 – p. 65
Attribute Types and Object Classes
attributetype directive used to define new attribute types
Uses Attribute Type Description, as per RFC2252
objectclasses directive used to define new object class
Uses Object Class Description, as per RFC2252
SAGE-AU Conf 2003 – p. 66
Attribute Type Description
AttributeTypeDescription = "(" whsp
numericoid whsp ; AttributeType identifier
[ "NAME" qdescrs ] ; name used in
; AttributeType
[ "DESC" qdstring ] ; description
[ "OBSOLETE" whsp ]
[ "SUP" woid ] ; derived from this
; other AttributeType
[ "EQUALITY" woid ; Matching Rule name
[ "ORDERING" woid ; Matching Rule name
[ "SUBSTR" woid ] ; Matching Rule name
SAGE-AU Conf 2003 – p. 67
Attribute Type Description cont
[ "SYNTAX" whsp noidlen whsp ]
[ "SINGLE-VALUE" whsp ]
; default multi-valued
[ "COLLECTIVE" whsp ]
; default not collective
[ "NO-USER-MODIFICATION" whsp ]
; default user modifiable
[ "USAGE" whsp AttributeUsage ]
; default userApplications
whsp ")"
AttributeUsage =
"userApplications" /
"directoryOperation" /
"distributedOperation" /
"dSAOperation" SAGE-AU Conf 2003 – p. 68
Attribute Type Example
attributetype ( 2.5.4.41 NAME ’name’
DESC ’names associated with the object’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.5.4.4 NAME ( ’sn’ ’surname’ )
DESC ’surnames associated with the object’
SUP name )
SAGE-AU Conf 2003 – p. 69
Object Class Description
ObjectClassDescription = "(" whsp
numericoid whsp ; ObjectClass identifier
[ "NAME" qdescrs ]
[ "DESC" qdstring ]
[ "OBSOLETE" whsp ]
[ "SUP" oids ] ; Superior ObjectClasses
[ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" )
whsp ] ; default structural
[ "MUST" oids ] ; AttributeTypes
[ "MAY" oids ] ; AttributeTypes
whsp ")"
SAGE-AU Conf 2003 – p. 70
Object Class Example
objectclass ( 1.3.6.1.1.1.2.0
NAME ’posixAccount’
SUP top
AUXILIARY
DESC ’Abstraction of an account
with POSIX attributes’
MUST ( cn $ uid $ uidNumber $
gidNumber $ homeDirectory )
MAY ( userPassword $ loginShell $
gecos $ description ) )
SAGE-AU Conf 2003 – p. 71
LDAP Protocol
Uses client server model
Message oriented protocol - client sends messages to
server and gets replies
Can issue multiple requests at once - each response
has message id to identify
9 basic protocol operations - interrogation, update and
authentication
LDAPv3 provides extended operations and controls
Uses simplified version of Basic Encoding Rules (BER)
- not plain text
SAGE-AU Conf 2003 – p. 72
LDAP Protocol Operations
Interrogation operations
search
compare
Update operations
add
delete
modify
rename
Authentication and control operations
bind
unbind
abandon
SAGE-AU Conf 2003 – p. 73
Typical LDAP conversation
Client Server
Open connection and bind
Result of bind operation
Search operation
Returned entry 1
Returned entry 2
Results of search operation
Unbind operation
Close connection
SAGE-AU Conf 2003 – p. 74
Bind Operations
How client authenticates to directory
Opens TCP connection, gives distinguished name and
credentials
Server checks credentials are correct, returns result to
client
If credentials fail, returns an anonymous bind
Authentication lasts while connection is open, or until
client reauthenticates
Credentials can be password, digital certificate or other
SAGE-AU Conf 2003 – p. 75
Authentication Levels
There are 3 basic levels of authentication:
Anonymous - no username and password
Enabled by default, disable using “disallow
bind_anon” in slapd.conf
Unauthenticated - only username (sometimes called
reference bind)
Disabled by default, enable using “allow
bind_anon_cred” in slapd.conf
Authenticated - username and correct password
Enabled by default, disable using “disallow
bind_anon_simple” in slapd.conf
SAGE-AU Conf 2003 – p. 76
LDAP Security Model
Authentication
How to verify identities
Password policies
Criteria passwords must satisfy to be valid - ie,
length, age etc
Encryption
Ensuring data is private
Access control
Who can access what data
Auditing
Determine if security model is being followed - ie,
logs
SAGE-AU Conf 2003 – p. 77
Security Model - Authentication
Anonymous access
Simple password
Proxy authentication
Simple password over encrypted connection
Certificate based authentication
SASL based authentication
SAGE-AU Conf 2003 – p. 78
Password policies
Minimum length
Maximum age
Syntax checking
History keeping
Expiration policy
Account lockout policy
SAGE-AU Conf 2003 – p. 79
Access Control
Set permissions on:
Entire directory
Subtree
Specific entries
Specific attributes
Any entry that matches a search filter
SAGE-AU Conf 2003 – p. 80
LDAP URLs
Definition taken from RFC2255
<ldapurl> ::= "ldap://" [ <hostport> ]
"/" <dn> [ "?" <attributes>
[ "?" <scope> "?" <filter> ] ]
<hostport> ::= <hostname>
[ ":" <portnumber> ]
<dn> ::= a string as defined in RFC 1485
<attributes> ::= NULL | <attributelist>
<attributelist> ::= <attributetype>
| <attributetype>
[ "," <attributelist> ]
<attributetype> ::= a string as defined
in RFC 1777
<scope> ::= "base" | "one" | "sub"
<filter> ::= a string as defined in RFC 1558
SAGE-AU Conf 2003 – p. 81
LDAP URLs
DN Distinguished name
Attribute list List of attributes you want returned
Scope
base base object search
one one level search
sub subtree search
Filter Standard LDAP search filter
SAGE-AU Conf 2003 – p. 82
LDAP URL examples
ldap://foo.bar.com/dc=bar,dc=com
ldap://argle.bargle.com/dc=bar,
dc=com??sub?uid=barney
ldap://ldap.bedrock.com/dc=bar,
dc=com?cn?sub?uid=barney
SAGE-AU Conf 2003 – p. 83
LDAP Related Standards Bodies
Consortiums and Standard Bodies
OASIS
Directory Services Markup Language
Distributed Management Task Force (DMTF)
Common Informational Model (CIM)
Network Applications Consortium (NAC)
Users Group
Open Group Directory Interoperability Forum (DIF)
LDAP2000 Interoperability
Internet Engineering Task Force (IETF)
LDAP Standards
SAGE-AU Conf 2003 – p. 84
IETF Working Groups
IETF Working Groups
LDAPExt
Access Controls
APIs
LDUP
Replication
LDAPbis
LDAPv3 Protocol revisions
SAGE-AU Conf 2003 – p. 85
LDAPv3
Internationalization - using UTF-8
Referrals and Continuations
Security
Authentication via SASL
Integrity and Confidentiality Protection via TLS or
SSL
Extensibility
Feature and schema discovery
LDAPv3 servers have a directory entry called root
DSE (Directory Server Entry)
Contains: protocol supported, schemas, other useful
info
SAGE-AU Conf 2003 – p. 86
Directory Uses
3 main uses of directories
Network directory
Provides user account management
Enterprise directory
Global repository for shared information
Details about people, organisations and devices
Business directory
Details about trading partners, customers, suppliers
etc
SAGE-AU Conf 2003 – p. 87
Directory Life Cycle
3 main parts to life cycle:
Design
Understand directory requirements and gather data
Deployment
Actually try out directory
Maintenance
Update data, keep service running, and improve
SAGE-AU Conf 2003 – p. 88
Design Cycle
Directory needs
Understand what applications require
Data
Find existing data sources
Determine relationship to directory
Schema
Develop schemas for applications requirements
Namespace
Organise data layout
SAGE-AU Conf 2003 – p. 89
Design Cycle cont
Topology
Determine where servers are located
Determine how data is divided
Replication
Ensure data is available where it is needed
Security
Essential to meeting security and privacy
requirements of users
SAGE-AU Conf 2003 – p. 90
Deployment Cycle
Choose directory software
Evaluate and choose software
Piloting
Inital testing to check design
Performance and scaling testing
Testing to see if system can handle the task
Tuning
Check process as well as technical
User feedback
Expose users to test system
Going into production
Move from pilot to production
SAGE-AU Conf 2003 – p. 91
Maintenance Cycle
Data maintenance
Keeping data up to date
Data backups
Ensure backups don’t interfer with operations
Replication can help here
Schema additions
Extend schemas when adding new applications
Monitoring
Integrate with existing system if possible
Expansion
Try to plan for expansion - growth may surprise you
Changing requirements
Don’t get caught out SAGE-AU Conf 2003 – p. 92
Directory Management
Directory management consists of:
Namespace and directory tree design
Determine root naming context
Integration with existing data
Synchronization
Maintaining data
Choosing mangement model
SAGE-AU Conf 2003 – p. 93
Basic Design Steps
Define applications for directory
Find data sources and relationships
Schema design
Namespace design and topology
Replication
Extraction and population
Testing and deployment
SAGE-AU Conf 2003 – p. 94
Schema Design
Be aware of existing schemas and use them if possible
Use schemas provided with applications
Define and document any new schemas required
Be prepared for schema evolution as things change
SAGE-AU Conf 2003 – p. 95
Namespace Design
Designing a namespace is Hard
Requires indepth knowledge of what the directory will
be used for
Hard to reorganise once data is put in - requires
downtime, etc
Needs to support applications that want to use it - be
aware of existing standards
SAGE-AU Conf 2003 – p. 96
Namespace Design cont
Try not to break out into different departments - what
happens when person moves?
Avoid designs that will have to change - eg, don’t base
on org chart
Don’t go overboard - too much hierachy can get
confusing
Probably won’t get it right first - will take some iterations
SAGE-AU Conf 2003 – p. 97
Namespace Design cont
Good namespace design helps with:
Delegation of authority
Replication of data
Security and access control
Scalability
Physical placement of servers
SAGE-AU Conf 2003 – p. 98
Tree Design
3 most commonly used tree designs for a single company
Organizational
Flat
Geographical
SAGE-AU Conf 2003 – p. 99
Organizational Based Tree
dc=pisoftware
dc=com
ou=Sales
ou=Devel ou=Sysadmin
ou=People ou=Groups ou=Apps
SAGE-AU Conf 2003 – p. 100
Organizational Based Details
Mirrors organizational structure
Good for using delegated administration management
model
People changing jobs mean a change to distinguished
name
Groups refer to distinguished names - no referential
integrity checking
SAGE-AU Conf 2003 – p. 101
Flat Tree
dc=pisoftware
dc=com
ou=People ou=Groups ou=Apps
SAGE-AU Conf 2003 – p. 102
Flat Details
Simplest layout - all people and groups are in one level
down from root
Entries only added or removed on hiring and firing - not
internal job changes
Most directory servers can’t split single branch across
multiple servers
Harder to delegate admin control
SAGE-AU Conf 2003 – p. 103
Geographical Tree
dc=pisoftware
dc=com
ou=Australia
ou=Asia ou=America
ou=People ou=Groups ou=Apps
SAGE-AU Conf 2003 – p. 104
Geographical Details
Branch for each geographical location of the company
Each geographical location has a master, also
replicates rest of tree
Rarer for people to move between geographical
locations
Geographical dispersement of company might not
match political
SAGE-AU Conf 2003 – p. 105
Choosing Root Naming Context
Root naming context is servers top level entry
Some servers can have multiple root naming contexts
Two main choices:
Traditional
Domain component
Active Directory doesn’t give a choice for root naming
context, most others do
SAGE-AU Conf 2003 – p. 106
Traditional Style
Traditionally has been ‘o=company,c=country’
Company is free-form string of company name
Country is ISO 2 letter country code
Inherited from X.500
Can cause conflicts between similarly named
companies
SAGE-AU Conf 2003 – p. 107
Domain Component Style
Use DNS name to generate base DN
See RFC2377 for more details - "Naming Plan for
Internet Directory-Enabled Applications"
example.com gives dc=example,dc=com
Already globally unique
Already registered
Can trace back to who owns it easily
Some CAs only allow traditional X.500 attributes, which
doesn’t include dc
SAGE-AU Conf 2003 – p. 108
Topology Design
Directory tree can be spread over multiple physical
servers
Design is important to:
Increase performance
Increase availability
Better manage directory
Hold more entries than a single server could
Users see one large directory
Closely related to replication design
SAGE-AU Conf 2003 – p. 109
Topology Design
Each server is delegated a partition of the directory
Similar to DNS
One server is the root and is common ancestor to all
subpartitions
Partitions must be a complete subtree, and not exclude
any entries
Servers can hold more than one partition, eg read-only
copies
SAGE-AU Conf 2003 – p. 110
Topology Design - References
Directory glued together using knowledge references
Immediate superior knowledge references
Points up the tree
Hooks back up to ancestor
Subordinate knowledge references
Points down the tree to other partitions
Hook to hang other partitions off
SAGE-AU Conf 2003 – p. 111
Topology Design - Why Partition
Too many entries for a single server
Increase performance and scalability
Applications mostly read and modify entries in local
section of tree
Replication traffic to a single partition is too large
If partitioning allows traffic to remain local, won’t have to
cross slow WAN links
If directory use will rapidly expand
SAGE-AU Conf 2003 – p. 112
Topology Design - Why Not Partition
All entries can fit on a single server
Applications modify entries across whole tree
Not much replication traffic
Organisation is centrally located, no slow WAN links
Directory use is static and won’t exceed capabilities of
single server
SAGE-AU Conf 2003 – p. 113
Topology Design - Considerations
Consider directory enabled applications and
performance requirements
Understand server software limitations and capabilities
Consider physical layout of network and location of
applications
Ensure namespace design fits within constraints - ie,
flat namespace isn’t good for partitioning
SAGE-AU Conf 2003 – p. 114
Replication Design
Increases reliability and performance
Allows locating data close to users and applications that
need them
Can manage data where it is being used
Gives redundancy - applications can fail over to replicas
Can distribute load across multiple servers, increasing
performance
Closely related to topology design
SAGE-AU Conf 2003 – p. 115
Replication Design Strategy
High availability
Multiple directories at one site
Use multi-master to ensure write-failover
Local availability
Replicas at local offices
Useful if network links are unreliable or intermittant
Helps reduce load on master server
Masters can be at:
Central office
Local server is master for local part of directory
tree
SAGE-AU Conf 2003 – p. 116
Replication Design Strategy cont
Disaster recovery
Two masters at geograhically disperse locations
Provides failover and data protection
Load balancing
Spread user connections over servers
Dedicate servers to read-only activities
Dedicate servers to particular activities - ie, server
for mail
SAGE-AU Conf 2003 – p. 117
Replication Issues to Consider
Quality of links between remote sites
Amount of bandwidth between sites
Is replication traffic too much for link
Physical location of users
How many users
What type of work they do
Number of applications
Type and proportion of operations done
Size of directory
SAGE-AU Conf 2003 – p. 118
Management Models
3 main management models
Centralized administration
Distributed administration
User self-administration
SAGE-AU Conf 2003 – p. 119
Centralized Administration
Good for smaller organisations
All changes are made in the one location or group of
people
Minimal admin infrastruture
Low potential for duplication of data
Can cause bottlenecks in changes being made - long
delays
Often seen as most secure - not always the case
Possibly too much trust in central group
Within sub-departments, possibility that changes
may not happen quickly enough - eg, employee is
fired and notification takes time to make it to central
accounts department
SAGE-AU Conf 2003 – p. 120
Distributed Administration
Centralised department co-ordinates sub-groups, who
do actual admin work
Reduces admin bottlenecks
Very scalable
Similar to how DNS admin is done - root nameservers
handle top level, then delegated out
Namespace design is important - hard to distribute
across flat namespace
SAGE-AU Conf 2003 – p. 121
User Self-Administrated
User creates and manages own account - eg Internet
shopping
Web forms often used to let end users admin own
accounts
Common to seperate end user admined accounts from
other part of directory
Lower level of trust of data done this way
Usually use other form of data / contact - eg frequent
flyers database, using email address
SAGE-AU Conf 2003 – p. 122
Data Maintenance
Maintenance is most important part
Usually involved with maintance the longest, often least
though about aspect
Configuration is comparitively simple, managing
contents is hard
The best designed directory is useless with out of date
or incomplete data
SAGE-AU Conf 2003 – p. 123
Managing Directory Contents
People can have multiple accounts, or a single account
(or group) can have multiple people associated
Need to manage association between accounts and
people, as well as managing the people
This is essential to be able to terminate all accounts
associated with a terminated employee
Important as ldap doesn’t ensure referential integrity -
can be left with dangling references
SAGE-AU Conf 2003 – p. 124
Managing Data Flow
Managing data integration between directories has a
number of approaches:
Replication
Data export/import
Scripting
Metadirectories
Virtual Directories
SAGE-AU Conf 2003 – p. 125
Replication
Exactly duplicating data between directories
This creates a copy of data for distribution,
performance, scalability and redundancy
No LDAP standard for replication, so hard to replicate
between different vendors
IETF is developing LDUP, an independant replication
protocol
SAGE-AU Conf 2003 – p. 126
Data export/import
Export data out from one directory, then import into next
Can manipulate data after exporting
Servers must support either of 2 main standards
LDIF
DSML
Updates only happen periodically, data is out of sync
between these times
SAGE-AU Conf 2003 – p. 127
Scripting
Writing scripts to manipulate data between servers
Allows choosing subset of data to transfer
Easy to change / manipulate data
Common languages are Perl, Java and C
SAGE-AU Conf 2003 – p. 128
Metadirectories
Consolidates subsets of data from various locations
Presents it as LDAP, XML, HTTP etc
Consolidates and aggregates details about objects
Can provide multiple views of data
Helps manage relationships between directories
Manages data flow between directories
Can reflect information back to original or new data
sources
Not just a consolidated directory of all information
SAGE-AU Conf 2003 – p. 129
Metadirectories cont
Consists of:
Metadirectory namespace
Join engine
Connectors
Comes in two different forms
Add on to existing directory
Stand alone directory
SAGE-AU Conf 2003 – p. 130
Metadirectories Namespace
Also called meta view
Unified view of underlying directories / data sources
Usually stored in a LDAP directory
Uses join engine to synchronize underlying sources
SAGE-AU Conf 2003 – p. 131
Metadirectories Join Engine
Managed data flow between external sources and
metadirectory views
Defines authoritive source for each bit of data
Controls which data sources can be changed via meta
directory
Manipulates and unifies connector views to provide
meta view
Links items in connector views with items in meta view
Can construct attributes from other values
SAGE-AU Conf 2003 – p. 132
Metadirectories Connectors
Provides data from external sources to join engine
Connects between directory and data sources
Can provide name mapping to translate from original
data source to LDAP
Defines which attributes to use or discard
Provides a connector view
Two types:
Direct connector: talks directly to source, usually
either LDAP or SQL
Indirect connector: converts from source data into
LDAP
SAGE-AU Conf 2003 – p. 133
Virtual Directories
LDAP frontend to databases / directories
Provides schema adaptors
Failover and load balancing
Namespace conversions
Value manipulations
Add/modify/delete attributes
Remove or construct attributes based on criteria
SAGE-AU Conf 2003 – p. 134
Data Flow Analysis
Schema mapping
Mapping schemas between directories
Determining authoritative source
Find which directory has most up to date for each
part of data
Data tranformation
Not all systems store data in the same format, eg
may use extra lookup tables
Change data representation to be the same format
in each directory
Namespace translation
Sometimes can’t translate directly - can get conflicts
Sometimes can just change root naming context
SAGE-AU Conf 2003 – p. 135
Data Sources
Existing directory services
Operating systems
Existing databases
Flat files or spreadsheets
Applications
Sysadmins
End users
SAGE-AU Conf 2003 – p. 136
Common Data Problems
Things to be careful of:
Too much information - can’t find what is needed
Not enough information
Poor quality information
Out of date information
SAGE-AU Conf 2003 – p. 137
Tips for Success
Carefully pick and stick to scope of project
Start small, show incremental successes
Pick low hanging fruit, and stay visible
Deploy in parallel with existing systems
Design for end result - doesn’t have to get there straight
away
Identify who’s responsible early
Use info with greatest value first
Allow time for political and process issues
Be careful what you promise and manage expectations
SAGE-AU Conf 2003 – p. 138
Important RFCs
RFC Title
RFC2247 Using Domains in LDAP DNs
RFC2251 LDAPv3 Protocol
RFC2252 LDAPv3 Attribute Types
RFC2253 LDAPv3 Disinguished Name
RFC2254 LDAPv3 Search Filters
RFC2255 LDAPv3 URL Format
RFC2256 A Summary of the X.500(96) User Schema
RFC2307 LDAP Network Information Services Schema
RFC2377 LDAP Naming Plan
SAGE-AU Conf 2003 – p. 139
Important RFCs cont
RFC Title
RFC2798 LDAP inetOrgPerson schema
RFC2829 LDAPv3: Authentication Methods
RFC2830 LDAPv3: Start TLS
RFC2849 LDIFv1
RFC2891 LDAPv3: Server Side Sorting of Search Results
RFC3112 LDAP Authentication Password Schema
RFC3377 LDAP(v3): Technical Specification
SAGE-AU Conf 2003 – p. 140
References
Understanding and Deploying LDAP Directory Services
Timothy A. Howes, Mark C. Smith and Gordon S. Good
Macmillan Network Architecture and Development Series
Implementing LDAP
Mark Wilcox
Wrox Press Ltd
LDAP Programming, Management and Integration
Clayton Donley
Manning Publications
SAGE-AU Conf 2003 – p. 141
References cont
Summary Report from Catalyst 99 Directory
Namespace and Best Practices Workshop, The Burton
Group and The Network Applications Consortium
OpenLDAP 2.1 Administrators Guide,
http://www.openldap.org/doc/admin21/
LDAP Linux HOWTO, Luiz Ernesto Pinheiro Malere,
Linux Documentation Project
LDAP Implementation HOWTO, Roel van Meer, Linux
Documentation Project
SunONE Directory Server 5.2 Deployment Guide
SunONE Meta Directory Server 5.1 Deployment Guide
The Slapd and Slurpd Administrator’s Guide, University
of Michigan, Release 3.3
SAGE-AU Conf 2003 – p. 142

More Related Content

What's hot

Migration Spring Boot PetClinic REST to Quarkus 1.2.0
Migration Spring Boot PetClinic REST to Quarkus 1.2.0Migration Spring Boot PetClinic REST to Quarkus 1.2.0
Migration Spring Boot PetClinic REST to Quarkus 1.2.0Jonathan Vila
 
Docker Compose | Docker Compose Tutorial | Docker Tutorial For Beginners | De...
Docker Compose | Docker Compose Tutorial | Docker Tutorial For Beginners | De...Docker Compose | Docker Compose Tutorial | Docker Tutorial For Beginners | De...
Docker Compose | Docker Compose Tutorial | Docker Tutorial For Beginners | De...Simplilearn
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker ComposeAjeet Singh Raina
 
LDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access ProtocolLDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access ProtocolS. Hasnain Raza
 
Introduction To Docker, Docker Compose, Docker Swarm
Introduction To Docker, Docker Compose, Docker SwarmIntroduction To Docker, Docker Compose, Docker Swarm
Introduction To Docker, Docker Compose, Docker SwarmAn Nguyen
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introductionejlp12
 
How To Configure Nginx Load Balancer on CentOS 7
How To Configure Nginx Load Balancer on CentOS 7How To Configure Nginx Load Balancer on CentOS 7
How To Configure Nginx Load Balancer on CentOS 7VCP Muthukrishna
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a DockerfileKnoldus Inc.
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction Robert Reiz
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageejlp12
 
Using Vault to decouple MySQL Secrets
Using Vault to decouple MySQL SecretsUsing Vault to decouple MySQL Secrets
Using Vault to decouple MySQL SecretsDerek Downey
 
Building Open Source Identity Management with FreeIPA
Building Open Source Identity Management with FreeIPABuilding Open Source Identity Management with FreeIPA
Building Open Source Identity Management with FreeIPALDAPCon
 
Docker introduction
Docker introductionDocker introduction
Docker introductionPhuc Nguyen
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerLuong Vo
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVCIndicThreads
 

What's hot (20)

Migration Spring Boot PetClinic REST to Quarkus 1.2.0
Migration Spring Boot PetClinic REST to Quarkus 1.2.0Migration Spring Boot PetClinic REST to Quarkus 1.2.0
Migration Spring Boot PetClinic REST to Quarkus 1.2.0
 
Docker Compose | Docker Compose Tutorial | Docker Tutorial For Beginners | De...
Docker Compose | Docker Compose Tutorial | Docker Tutorial For Beginners | De...Docker Compose | Docker Compose Tutorial | Docker Tutorial For Beginners | De...
Docker Compose | Docker Compose Tutorial | Docker Tutorial For Beginners | De...
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker Compose
 
Docker swarm
Docker swarmDocker swarm
Docker swarm
 
LDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access ProtocolLDAP - Lightweight Directory Access Protocol
LDAP - Lightweight Directory Access Protocol
 
Ldap
LdapLdap
Ldap
 
Ansible - Introduction
Ansible - IntroductionAnsible - Introduction
Ansible - Introduction
 
Introduction To Docker, Docker Compose, Docker Swarm
Introduction To Docker, Docker Compose, Docker SwarmIntroduction To Docker, Docker Compose, Docker Swarm
Introduction To Docker, Docker Compose, Docker Swarm
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introduction
 
How To Configure Nginx Load Balancer on CentOS 7
How To Configure Nginx Load Balancer on CentOS 7How To Configure Nginx Load Balancer on CentOS 7
How To Configure Nginx Load Balancer on CentOS 7
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a Dockerfile
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and image
 
Using Vault to decouple MySQL Secrets
Using Vault to decouple MySQL SecretsUsing Vault to decouple MySQL Secrets
Using Vault to decouple MySQL Secrets
 
Building Open Source Identity Management with FreeIPA
Building Open Source Identity Management with FreeIPABuilding Open Source Identity Management with FreeIPA
Building Open Source Identity Management with FreeIPA
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
AD & LDAP
AD & LDAPAD & LDAP
AD & LDAP
 
ansible why ?
ansible why ?ansible why ?
ansible why ?
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
 

Viewers also liked

LDAP Presentation
LDAP PresentationLDAP Presentation
LDAP Presentationcyberleon95
 
Introduccion LDAP
Introduccion LDAPIntroduccion LDAP
Introduccion LDAPcyberleon95
 
Guia Funcionamiento LDAP
Guia Funcionamiento LDAPGuia Funcionamiento LDAP
Guia Funcionamiento LDAPcyberleon95
 
Servicio de Directorio
Servicio de DirectorioServicio de Directorio
Servicio de Directoriocyberleon95
 
OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2cyberleon95
 
Instalación y Configuración Firewall ENDIAN
Instalación y Configuración Firewall ENDIANInstalación y Configuración Firewall ENDIAN
Instalación y Configuración Firewall ENDIANcyberleon95
 
Configuración VPN Sitio a Sitio en ENDIAN
Configuración VPN Sitio a Sitio en ENDIANConfiguración VPN Sitio a Sitio en ENDIAN
Configuración VPN Sitio a Sitio en ENDIANcyberleon95
 
Configuración VPN de Acceso remoto con TMG
Configuración VPN de Acceso remoto con TMGConfiguración VPN de Acceso remoto con TMG
Configuración VPN de Acceso remoto con TMGcyberleon95
 
Integración LDAP + SAMBA
Integración LDAP + SAMBAIntegración LDAP + SAMBA
Integración LDAP + SAMBAcyberleon95
 
Manual Instalación y Configuración Firewall TMG
Manual Instalación y Configuración Firewall TMGManual Instalación y Configuración Firewall TMG
Manual Instalación y Configuración Firewall TMGcyberleon95
 
Lessons Learned from Federal ICAM - User Group
Lessons Learned from Federal ICAM - User GroupLessons Learned from Federal ICAM - User Group
Lessons Learned from Federal ICAM - User GroupJoel Rader, CISSP
 
CIS13: A Breakthrough in Directory Technology: Meet the Elephant in the Room ...
CIS13: A Breakthrough in Directory Technology: Meet the Elephant in the Room ...CIS13: A Breakthrough in Directory Technology: Meet the Elephant in the Room ...
CIS13: A Breakthrough in Directory Technology: Meet the Elephant in the Room ...CloudIDSummit
 
Distributed computing time
Distributed computing timeDistributed computing time
Distributed computing timeDeepak John
 
Flexible Symmetric Global Snapshot
Flexible Symmetric Global Snapshot Flexible Symmetric Global Snapshot
Flexible Symmetric Global Snapshot Ashutosh Jaiswal
 
Distributed Snapshots
Distributed SnapshotsDistributed Snapshots
Distributed Snapshotsawesomesos
 
network filesystem briefs
network filesystem briefsnetwork filesystem briefs
network filesystem briefsbergwolf
 
Global state recording in Distributed Systems
Global state recording in Distributed SystemsGlobal state recording in Distributed Systems
Global state recording in Distributed SystemsArsnet
 
Benchmarks on LDAP directories
Benchmarks on LDAP directoriesBenchmarks on LDAP directories
Benchmarks on LDAP directoriesLDAPCon
 

Viewers also liked (20)

LDAP Presentation
LDAP PresentationLDAP Presentation
LDAP Presentation
 
Ldap
LdapLdap
Ldap
 
Introduccion LDAP
Introduccion LDAPIntroduccion LDAP
Introduccion LDAP
 
Guia Funcionamiento LDAP
Guia Funcionamiento LDAPGuia Funcionamiento LDAP
Guia Funcionamiento LDAP
 
Servicio de Directorio
Servicio de DirectorioServicio de Directorio
Servicio de Directorio
 
OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2
 
Instalación y Configuración Firewall ENDIAN
Instalación y Configuración Firewall ENDIANInstalación y Configuración Firewall ENDIAN
Instalación y Configuración Firewall ENDIAN
 
Configuración VPN Sitio a Sitio en ENDIAN
Configuración VPN Sitio a Sitio en ENDIANConfiguración VPN Sitio a Sitio en ENDIAN
Configuración VPN Sitio a Sitio en ENDIAN
 
Configuración VPN de Acceso remoto con TMG
Configuración VPN de Acceso remoto con TMGConfiguración VPN de Acceso remoto con TMG
Configuración VPN de Acceso remoto con TMG
 
Integración LDAP + SAMBA
Integración LDAP + SAMBAIntegración LDAP + SAMBA
Integración LDAP + SAMBA
 
Manual Instalación y Configuración Firewall TMG
Manual Instalación y Configuración Firewall TMGManual Instalación y Configuración Firewall TMG
Manual Instalación y Configuración Firewall TMG
 
Lessons Learned from Federal ICAM - User Group
Lessons Learned from Federal ICAM - User GroupLessons Learned from Federal ICAM - User Group
Lessons Learned from Federal ICAM - User Group
 
CIS13: A Breakthrough in Directory Technology: Meet the Elephant in the Room ...
CIS13: A Breakthrough in Directory Technology: Meet the Elephant in the Room ...CIS13: A Breakthrough in Directory Technology: Meet the Elephant in the Room ...
CIS13: A Breakthrough in Directory Technology: Meet the Elephant in the Room ...
 
Distributed computing time
Distributed computing timeDistributed computing time
Distributed computing time
 
LDAP
LDAPLDAP
LDAP
 
Flexible Symmetric Global Snapshot
Flexible Symmetric Global Snapshot Flexible Symmetric Global Snapshot
Flexible Symmetric Global Snapshot
 
Distributed Snapshots
Distributed SnapshotsDistributed Snapshots
Distributed Snapshots
 
network filesystem briefs
network filesystem briefsnetwork filesystem briefs
network filesystem briefs
 
Global state recording in Distributed Systems
Global state recording in Distributed SystemsGlobal state recording in Distributed Systems
Global state recording in Distributed Systems
 
Benchmarks on LDAP directories
Benchmarks on LDAP directoriesBenchmarks on LDAP directories
Benchmarks on LDAP directories
 

Similar to LDAP Theory

Open LDAP vs. Active Directory
Open LDAP vs. Active DirectoryOpen LDAP vs. Active Directory
Open LDAP vs. Active DirectoryAhmad Haghighi
 
Ldap system administration
Ldap system administrationLdap system administration
Ldap system administrationAli Abdo
 
network administration directory access and remote access
network administration directory access and remote accessnetwork administration directory access and remote access
network administration directory access and remote accessSangeetha Rangarajan
 
What is active directory
What is active directoryWhat is active directory
What is active directoryrajasekar1712
 
Overview of oracle database
Overview of oracle databaseOverview of oracle database
Overview of oracle databaseSamar Prasad
 
Overview of oracle database
Overview of oracle databaseOverview of oracle database
Overview of oracle databaseSamar Prasad
 
Directory Introduction
Directory IntroductionDirectory Introduction
Directory IntroductionAidy Tificate
 
Lecture 4 -_internet_infrastructure_2_updated_2011
Lecture 4 -_internet_infrastructure_2_updated_2011Lecture 4 -_internet_infrastructure_2_updated_2011
Lecture 4 -_internet_infrastructure_2_updated_2011Serious_SamSoul
 
Security and LDAP integration in InduSoft Web Studio
Security and LDAP integration in InduSoft Web StudioSecurity and LDAP integration in InduSoft Web Studio
Security and LDAP integration in InduSoft Web StudioAVEVA
 
Server interview[1]
Server interview[1]Server interview[1]
Server interview[1]sourav nanda
 
Hadoop training in bangalore-kellytechnologies
Hadoop training in bangalore-kellytechnologiesHadoop training in bangalore-kellytechnologies
Hadoop training in bangalore-kellytechnologiesappaji intelhunt
 
Oracle DBA Tutorial for Beginners -Oracle training institute in bangalore
Oracle DBA Tutorial for Beginners -Oracle training institute in bangaloreOracle DBA Tutorial for Beginners -Oracle training institute in bangalore
Oracle DBA Tutorial for Beginners -Oracle training institute in bangaloreTIB Academy
 
Active Directory Ii
Active Directory   IiActive Directory   Ii
Active Directory Iideshvikas
 
Active directory ii
Active directory   iiActive directory   ii
Active directory iideshvikas
 

Similar to LDAP Theory (20)

Open LDAP vs. Active Directory
Open LDAP vs. Active DirectoryOpen LDAP vs. Active Directory
Open LDAP vs. Active Directory
 
70 640 Lesson01 Ppt 041009
70 640 Lesson01 Ppt 04100970 640 Lesson01 Ppt 041009
70 640 Lesson01 Ppt 041009
 
Ldap system administration
Ldap system administrationLdap system administration
Ldap system administration
 
network administration directory access and remote access
network administration directory access and remote accessnetwork administration directory access and remote access
network administration directory access and remote access
 
Directory services
Directory servicesDirectory services
Directory services
 
What is active directory
What is active directoryWhat is active directory
What is active directory
 
Oracle archi ppt
Oracle archi pptOracle archi ppt
Oracle archi ppt
 
Overview of oracle database
Overview of oracle databaseOverview of oracle database
Overview of oracle database
 
Overview of oracle database
Overview of oracle databaseOverview of oracle database
Overview of oracle database
 
Directory Introduction
Directory IntroductionDirectory Introduction
Directory Introduction
 
Lecture 4 -_internet_infrastructure_2_updated_2011
Lecture 4 -_internet_infrastructure_2_updated_2011Lecture 4 -_internet_infrastructure_2_updated_2011
Lecture 4 -_internet_infrastructure_2_updated_2011
 
Security and LDAP integration in InduSoft Web Studio
Security and LDAP integration in InduSoft Web StudioSecurity and LDAP integration in InduSoft Web Studio
Security and LDAP integration in InduSoft Web Studio
 
Hadoop
HadoopHadoop
Hadoop
 
Server interview[1]
Server interview[1]Server interview[1]
Server interview[1]
 
RDBMS
RDBMS RDBMS
RDBMS
 
Hadoop training in bangalore-kellytechnologies
Hadoop training in bangalore-kellytechnologiesHadoop training in bangalore-kellytechnologies
Hadoop training in bangalore-kellytechnologies
 
Active Directory
Active DirectoryActive Directory
Active Directory
 
Oracle DBA Tutorial for Beginners -Oracle training institute in bangalore
Oracle DBA Tutorial for Beginners -Oracle training institute in bangaloreOracle DBA Tutorial for Beginners -Oracle training institute in bangalore
Oracle DBA Tutorial for Beginners -Oracle training institute in bangalore
 
Active Directory Ii
Active Directory   IiActive Directory   Ii
Active Directory Ii
 
Active directory ii
Active directory   iiActive directory   ii
Active directory ii
 

More from cyberleon95

Documentación ACL - Firewall ASA
Documentación ACL - Firewall ASADocumentación ACL - Firewall ASA
Documentación ACL - Firewall ASAcyberleon95
 
Plan de continuidad
Plan de continuidadPlan de continuidad
Plan de continuidadcyberleon95
 
Análisis de riesgos y vulnerabilidades
Análisis de riesgos y vulnerabilidades Análisis de riesgos y vulnerabilidades
Análisis de riesgos y vulnerabilidades cyberleon95
 
Manual PXE - RHEL 6.2
Manual PXE - RHEL 6.2Manual PXE - RHEL 6.2
Manual PXE - RHEL 6.2cyberleon95
 
Manual WDS - Windows Server 2008 R2
Manual WDS - Windows Server 2008 R2Manual WDS - Windows Server 2008 R2
Manual WDS - Windows Server 2008 R2cyberleon95
 
Manual WSUS - Windows Server 2008 R2
Manual WSUS - Windows Server 2008 R2Manual WSUS - Windows Server 2008 R2
Manual WSUS - Windows Server 2008 R2cyberleon95
 
Manual Monitoreo de Servidores
Manual  Monitoreo de ServidoresManual  Monitoreo de Servidores
Manual Monitoreo de Servidorescyberleon95
 
Teoría Plataformas de Monitoreo
Teoría  Plataformas de Monitoreo  Teoría  Plataformas de Monitoreo
Teoría Plataformas de Monitoreo cyberleon95
 
Autodiagnostico 5 Trimestre
Autodiagnostico 5 TrimestreAutodiagnostico 5 Trimestre
Autodiagnostico 5 Trimestrecyberleon95
 
Actividad Topologías VoIP
Actividad Topologías VoIPActividad Topologías VoIP
Actividad Topologías VoIPcyberleon95
 
Integración GNS3 - VirtualBox - Wireshark
Integración GNS3 - VirtualBox - WiresharkIntegración GNS3 - VirtualBox - Wireshark
Integración GNS3 - VirtualBox - Wiresharkcyberleon95
 
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2cyberleon95
 
Centos 6.5 Servidor Básico
Centos 6.5 Servidor BásicoCentos 6.5 Servidor Básico
Centos 6.5 Servidor Básicocyberleon95
 
Configuración DHCP - NAT
Configuración DHCP - NATConfiguración DHCP - NAT
Configuración DHCP - NATcyberleon95
 
Trabajo IOS de CISCO
Trabajo IOS de CISCOTrabajo IOS de CISCO
Trabajo IOS de CISCOcyberleon95
 
Herramientas Administrativas de Red
Herramientas Administrativas de RedHerramientas Administrativas de Red
Herramientas Administrativas de Redcyberleon95
 
Correo Red Hat Enterprise Linux 6.2
Correo Red Hat Enterprise Linux 6.2Correo Red Hat Enterprise Linux 6.2
Correo Red Hat Enterprise Linux 6.2cyberleon95
 
Sendero del Hacker
Sendero del HackerSendero del Hacker
Sendero del Hackercyberleon95
 
Gestión del Talento Humano
Gestión del Talento HumanoGestión del Talento Humano
Gestión del Talento Humanocyberleon95
 

More from cyberleon95 (20)

Documentación ACL - Firewall ASA
Documentación ACL - Firewall ASADocumentación ACL - Firewall ASA
Documentación ACL - Firewall ASA
 
Plan de continuidad
Plan de continuidadPlan de continuidad
Plan de continuidad
 
Análisis de riesgos y vulnerabilidades
Análisis de riesgos y vulnerabilidades Análisis de riesgos y vulnerabilidades
Análisis de riesgos y vulnerabilidades
 
Manual PXE - RHEL 6.2
Manual PXE - RHEL 6.2Manual PXE - RHEL 6.2
Manual PXE - RHEL 6.2
 
Manual WDS - Windows Server 2008 R2
Manual WDS - Windows Server 2008 R2Manual WDS - Windows Server 2008 R2
Manual WDS - Windows Server 2008 R2
 
Manual WSUS - Windows Server 2008 R2
Manual WSUS - Windows Server 2008 R2Manual WSUS - Windows Server 2008 R2
Manual WSUS - Windows Server 2008 R2
 
Manual Monitoreo de Servidores
Manual  Monitoreo de ServidoresManual  Monitoreo de Servidores
Manual Monitoreo de Servidores
 
Teoría Plataformas de Monitoreo
Teoría  Plataformas de Monitoreo  Teoría  Plataformas de Monitoreo
Teoría Plataformas de Monitoreo
 
Autodiagnostico 5 Trimestre
Autodiagnostico 5 TrimestreAutodiagnostico 5 Trimestre
Autodiagnostico 5 Trimestre
 
Actividad Topologías VoIP
Actividad Topologías VoIPActividad Topologías VoIP
Actividad Topologías VoIP
 
Conceptos VoIP
Conceptos VoIPConceptos VoIP
Conceptos VoIP
 
Integración GNS3 - VirtualBox - Wireshark
Integración GNS3 - VirtualBox - WiresharkIntegración GNS3 - VirtualBox - Wireshark
Integración GNS3 - VirtualBox - Wireshark
 
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
Instalación y Configuración SSH CentOS 6.5 / RHEL 6.2
 
Centos 6.5 Servidor Básico
Centos 6.5 Servidor BásicoCentos 6.5 Servidor Básico
Centos 6.5 Servidor Básico
 
Configuración DHCP - NAT
Configuración DHCP - NATConfiguración DHCP - NAT
Configuración DHCP - NAT
 
Trabajo IOS de CISCO
Trabajo IOS de CISCOTrabajo IOS de CISCO
Trabajo IOS de CISCO
 
Herramientas Administrativas de Red
Herramientas Administrativas de RedHerramientas Administrativas de Red
Herramientas Administrativas de Red
 
Correo Red Hat Enterprise Linux 6.2
Correo Red Hat Enterprise Linux 6.2Correo Red Hat Enterprise Linux 6.2
Correo Red Hat Enterprise Linux 6.2
 
Sendero del Hacker
Sendero del HackerSendero del Hacker
Sendero del Hacker
 
Gestión del Talento Humano
Gestión del Talento HumanoGestión del Talento Humano
Gestión del Talento Humano
 

Recently uploaded

Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
PSYCHIATRIC History collection FORMAT.pptx
PSYCHIATRIC   History collection FORMAT.pptxPSYCHIATRIC   History collection FORMAT.pptx
PSYCHIATRIC History collection FORMAT.pptxPoojaSen20
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfUmakantAnnand
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docxPoojaSen20
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991RKavithamani
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docxPoojaSen20
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 

Recently uploaded (20)

Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
PSYCHIATRIC History collection FORMAT.pptx
PSYCHIATRIC   History collection FORMAT.pptxPSYCHIATRIC   History collection FORMAT.pptx
PSYCHIATRIC History collection FORMAT.pptx
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.Compdf
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docx
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docx
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 

LDAP Theory

  • 1. LDAP Theory and Management Brad Marshall brad.marshall@member.sage-au.org.au SAGE-AU Conf 2003 – p. 1
  • 2. Contents What is LDAP? Directory services LDAP Models Namespaces Schema Replication LDIF and DSML Search Filters LDAP Protocol SAGE-AU Conf 2003 – p. 2
  • 3. Contents cont Directory Life Cycle Directory Management Namespace Design Topology Design Replication Design Management Models Data Maintanence Metadirectories Virtual directories SAGE-AU Conf 2003 – p. 3
  • 4. History of LDAP Originally started as a front end to X.500 Provides much of X.500’s functionality at a lower implementation cost Removed redundant and rarely used operations Uses TCP rather than OSI stack University of Michigan wrote first LDAP implementation Most early LDAP implementations were based on it U.Mich eventually realized didn’t need X.500 and wrote lightweight server Meant it was easier to deploy, and more people started using it SAGE-AU Conf 2003 – p. 4
  • 5. What is LDAP? LDAP = Lightweight Directory Access Protocol Stanard protocol that can be used to access information over a network Based on X.500 Directory Service Described in RFC1777 and RFC2251 Stores attribute based data SAGE-AU Conf 2003 – p. 5
  • 6. What is LDAP cont Data generally read more than written to No transactions No rollback Client-server model Based on entries Collection of attributes Globally unique distinguished name (DN) - like domain name Entries arranged in hierarchical tree structure SAGE-AU Conf 2003 – p. 6
  • 7. Directory Services Directories are a specialized database Used in everyday lives - phone book, TV guides, etc Everyday directories fairly static Online directories are dynamic, flexible, secure and can be personalized Examples of online directories are finger, DNS, NIS and unix password file SAGE-AU Conf 2003 – p. 7
  • 8. Why use LDAP Centrally manage users, groups and other data Don’t have to manage separate directories for each application - stops the “N + 1 directory problem” Distribute management of data to appropriate people Allow users to find data that they need Not locked into a particular server Ability to distribute servers to where they are needed Standards available for sharing data SAGE-AU Conf 2003 – p. 8
  • 9. What LDAP can do Find things - local office phone book, Internet directories such as Four11, BigFoot etc Manage things - users and groups. Removes “N + 1” directory problem Lightweight database applications - sort bookmarks, small bits of data Security - store username and passwords, digital certificates, PKI etc SAGE-AU Conf 2003 – p. 9
  • 10. What LDAP can’t do LDAP isn’t a relational database No rollback for failed operations LDAP isn’t a filesystem No locking or seeking Can’t search blobs of data LDAP isn’t good for dynamic objects Optimized for read, not write No locking to ensure transactions occur in a certain order - corruption could occur No generic SQL-like reporting language Not useful without applications SAGE-AU Conf 2003 – p. 10
  • 11. LDAP vs Databases Read-write ratio - LDAP is read optimized Extensibility - LDAP schemas are more easily changed Distribution - with LDAP data can be near where it is needed, and highly distributed Replication - with LDAP data can be stored in multiple locations Different performance - directories used for many different applications, and queries are usually simpler, but many more of them Data sharing - LDAP is designed for sharing data, databases designed for one application SAGE-AU Conf 2003 – p. 11
  • 12. LDAP vs Databases cont Database objects have complex relationships Transaction model - LDAP transactions are simple - usually changing one entry, databases can modify much more Size of information - LDAP is better at storing small bits of information Type of information - LDAP stores information in attributes Naming model - LDAP is hierachical Schemas - database schemas are entirely user defined, directories have core schemas to help interoperability Standards are more important for directories - LDAP clients can talk to any LDAP server, but database client can only talk to the database it was designed for SAGE-AU Conf 2003 – p. 12
  • 13. LDAP vs NIS Uses arbitrary ports No data encryption No access-control mechanism Uses a flat (non scalable) namespace Uses a single-key database (providing only basic searching abilities) All changes had to be made by the superuser on the domain master Does not provide directory services for non name service applications No ability for clustering (slapd replication and round robin DNS for LDAP) SAGE-AU Conf 2003 – p. 13
  • 14. X.500 Designed by International Telecom Union (ITU) and International Organization for Standards (ISO) First designed in 1988 First general purpose directory system Designed to be extensible - rich search operations Open standard Relies on large suite of protocols Early implementations buggy and slow Based on OSI network protocols, not TCP/IP SAGE-AU Conf 2003 – p. 14
  • 15. LDAP Directory Services Two general types of directory servers: Stand alone LDAP servers LDAP is only access mechanism Data stores tuned for LDAP LDAP gateway servers Translate betwen LDAP and some other protocol Original use of LDAP - gateway to X.500 Doesn’t really matter where data is stored, as long as it is accessible via LDAP SAGE-AU Conf 2003 – p. 15
  • 16. Common LDAP Applications White pages Authentication and authorization Personalization Roaming profiles Public Key Infrastructure (PKI) Message delivery SAGE-AU Conf 2003 – p. 16
  • 17. LDAP Models Information Model - defines the types of data and basic units of info stored in directory Naming Model - defines how to organise and refer to the data Functional Model - defines operations in LDAP protocol Security Model - defines framework for protecting information SAGE-AU Conf 2003 – p. 17
  • 18. Acronyms Acronym Definition LDAP Lightweight Directory Access Protocol DN Distinguish Name RDN Relative Distinguished Name DIT Directory Information Tree LDIF LDAP Data Interchange Format DSML Directory Services Markup Language OID Object Identifier SAGE-AU Conf 2003 – p. 18
  • 19. Namespaces Hierarchical data structure Entries are in a tree-like structure called Directory Information Tree (DIT) Consistent view of data - uniform namespace Answers request Refer to server with answer SAGE-AU Conf 2003 – p. 19
  • 20. Namespaces - Hierarchal dc=com dc=pisoftware ou=People ou=Group uid=bmarshal uid=jparker cn=dev cn=sysadmin SAGE-AU Conf 2003 – p. 20
  • 22. Namespaces cont Directory tree is similar to unix file system No root entry in ldap Each entry in ldap can both contain data and be a container In unix, an entry is either a file or a directory - not both LDAP distinguished names are read from bottom to top, unix file systems from top to bottom SAGE-AU Conf 2003 – p. 22
  • 24. Global View LDAP Server 1 LDAP Server 2 LDAP Server 3 Note each server must contain a subtree SAGE-AU Conf 2003 – p. 24
  • 25. Distinguished Names Defined in RFC2253 “Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names” Built up by starting at the bottom, and connecting each level together with commas Contain two parts Left most part is called relative distinguished name Remainder is base distinguished name Eg: uid=bmarshal,ou=People,dc=pisoftware,dc=com RDN is uid=bmarshal Base DN is ou=People,dc=pisoftware,dc=com SAGE-AU Conf 2003 – p. 25
  • 26. Distinguished Names cont In each base DN, each RDN is unique This ensures no two entries have the same DN dc=com dc=pisoftware dc=sun ou=Peopleou=People Same RDN SAGE-AU Conf 2003 – p. 26
  • 27. LDAP Entry Entries are composed of attributes Attributes consist of types with one or more values Type describes what the information is Value is the actual information in text format Attributes have a syntax which specifies what type of data - see Schema later on SAGE-AU Conf 2003 – p. 27
  • 28. Referrals 1 2 3 4 LDAP Server 1 LDAP Server 2 1. Client requests information 2. Server 1 returns referral to server 2 3. Client resends request to server 2 4. Server 2 returns information to client SAGE-AU Conf 2003 – p. 28
  • 29. Aliases Aliases are used to point one LDAP entry to another Allows you to have structures that aren’t hierarchal Similar in sense to using a symlink in unix Not all LDAP servers support aliases - big performance hit SAGE-AU Conf 2003 – p. 29
  • 30. Aliases cont Created by: Entry with object class of alias Attribute named aliasedObjectName that points to DN of the alias Can use either referrals or putting a LDAP url in an entry SAGE-AU Conf 2003 – p. 30
  • 31. Schema Set of rules that describes what kind of data is stored Helps maintain consistency and quality of data Reduces duplication of data Ensures applications have consistent interface to the data Object class attribute determines schema rules the entry must follow SAGE-AU Conf 2003 – p. 31
  • 32. Schema cont Schema contains the following: Required attributes Allowed attributes How to compare attributes Limit what the attributes can store - ie, restrict to integer etc Restrict what information is stored - ie, stops duplication etc SAGE-AU Conf 2003 – p. 32
  • 33. Objectclass Used to group information Provides the following rules: Required attributes Allowed attributes Easy way to retrieve groups of information Entries can have multiple object classes Required and allowed attributes are the union of the attributes of each of the classes SAGE-AU Conf 2003 – p. 33
  • 34. Objectclass inheritance Object classes can be derived from others Extends attributes of other objectclass No multiple inheritance Can’t override any of the rules Special class called top - all classes extend Only required attribute is objectclass Ensures all entries have a objectclass SAGE-AU Conf 2003 – p. 34
  • 35. Attributes Attributes have: Name - unique identifier, not case sensitive Object identifier (OID) - sequence of integers separated by dots Attribute syntax: Data attributes can store - eg integer, string etc How comparisons are made If multi valued or single valued SAGE-AU Conf 2003 – p. 35
  • 36. Attribute Abbreviations See RFC2256 uid User id cn Common Name sn Surname l Location ou Organizational Unit o Organization dc Domain Component st State c Country SAGE-AU Conf 2003 – p. 36
  • 37. Replication Replication is method used to keep copy of directory data on multiple servers Increases: Reliability - if one copy of the directory is down Availability - more likely to find an available server Performance - can use a server closer to you Speed - can take more queries as replicas are added Temporary inconsistencies are ok Having replicas close to clients is important - network going down is same as server going down Removes single point of failure SAGE-AU Conf 2003 – p. 37
  • 38. Replication Options - Mods to Master LDAP Client Modifications Searches LDAP master (read/write) LDAP slave (read only) Updates replica SAGE-AU Conf 2003 – p. 38
  • 39. Replication Options - Referrals LDAP Client LDAP slave (read only)1 2 3 4 5 LDAP master (read/write) 1. Client sends modification to replica 2. Replica returns referral of master to client 3. Client resubmits modification to master 4. Master returns results to client 5. Master updates replica with change SAGE-AU Conf 2003 – p. 39
  • 40. Replication Options - Chaining 1 23 4 5 LDAP Master LDAP Slave Client 1. Client sends modification to replica 2. Replica forwards request to master 3. Master returns result to replica 4. Replica forwards result to client 5. Master updates replica SAGE-AU Conf 2003 – p. 40
  • 41. Replication - Single Master Single master Single server with read-write copy of data Use read-only replicas to handle load of reading and searching Uses referrals or chaining to deal with mods being sent to replicas Obvious single point of failure Simplest to implement SAGE-AU Conf 2003 – p. 41
  • 42. Replication - Floating Master Floating master Only one server with writeable copy of data at any time If master becomes unavailable, new master is chosen from remaining servers Actual alogorithm used depends on server - usually voting SAGE-AU Conf 2003 – p. 42
  • 43. Replication - Cascading Cascading replication Master replicates to hub which replays updates to futher servers Helps balance very heavy loads - master can be used for all writes, and pass off all replication to hub Can replicate out to local hubs in geographically disperse topologies - reduces cost Increase performance - put all reads on “bottom” servers SAGE-AU Conf 2003 – p. 43
  • 44. Replication - Fractional Fractional replication Replicates subsets of attributes Useful for synchronizing from intranet to extranet and removing data for security reasons Can help reduce replication costs by removing unneeded data SAGE-AU Conf 2003 – p. 44
  • 45. Replication - Multi-master Multi-master More than one server with writable copy of data Servers are responsible for ensuring data propogates Need a conflict resolution policy - most current servers use a last writer wins policy Can have automatic failover when one is unavailable Most complex to implement SAGE-AU Conf 2003 – p. 45
  • 46. LDIF LDAP Data Interchange Format Represents LDAP entries in text Human readable format Allows easy modification of data Useful for doing bulk changes dump db, run a script over, import back Can use templates for additions Good for backups and transferring data to another system SAGE-AU Conf 2003 – p. 46
  • 47. LDIF Cont If attribute contains non-ascii chars, begins with a space, colon or less than, the value is stored in base64 and type separator is :: Can mix plain text and encoded values Can specify URLs, type separator is :< Entries in LDIF are separated with a blank line Continued lines start with spaces Utilities to convert from database to ldif and back slapcat: ldbm database to ldif slapadd: ldif to ldbm database Few non-LDAP related servers know how to deal with it SAGE-AU Conf 2003 – p. 47
  • 48. LDIF Example dn: uid=bmarshal,ou=People, dc=pisoftware,dc=com uid: bmarshal cn: Brad Marshall objectclass: account objectclass: posixAccount objectclass: top loginshell: /bin/bash uidnumber: 500 gidnumber: 120 homedirectory: /mnt/home/bmarshal gecos: Brad Marshall,,,, userpassword: {crypt}lDIOnUp17x2jc SAGE-AU Conf 2003 – p. 48
  • 49. DSML XML-based file format Can store both schema and data Can use as generic import/export format for directory data Many existing servers can deal with XML More complex than LDIF Not all LDAP servers support it SAGE-AU Conf 2003 – p. 49
  • 50. DSML Example <dsml:dsml xmlns:dsml="http://www.dsml.org/DSML"> <dsml:directory-entries> <dsml:entry dn="uid=bmarshal,dc=example,dc=com" <dsml:objectclass> <dsml:oc-value>top</dsml:oc-value> <dsml:oc-value>account</dsml:oc-value> </dsml:objectclass> <dsml:attr name="cn"> <dsml:value>Brad Marshall</dsml:value> </dsml:attr> <dsml:attr name=loginShell> <dsml:value>/bin/bash</dsml:value> </dsml:attr> </dsml:entry> </dsml:directory-entries> </dsml:dsml> SAGE-AU Conf 2003 – p. 50
  • 51. Search Filters Consists of: Base and scope - what part to search Filter - what criteria attributes must fulfill to be returned Attributes - what attributes to return Prefix notation Standards RFC 1960: LDAP String Representation of Search Filters RFC 2254: LDAPv3 Search Filters SAGE-AU Conf 2003 – p. 51
  • 52. Search Filters Operators Basic filter types Presence Equality Substring Greater-than or equal Less-than or equal Approximate Extensible Joining filters & and | or ! not SAGE-AU Conf 2003 – p. 52
  • 53. Search Filter Details Presence Simple checks for presence of attribute Can return everything by using (objectClass=*) Equality Checks for entries containing given attribute and value Most commonly used search Fastest and easiest to index Case sensitivity depends on attribute syntax SAGE-AU Conf 2003 – p. 53
  • 54. Search Filter Details cont Substring matching Returns entries with values matching given substrings Useful for finding information, eg in white pages etc Not wildcard or regular expression matching Restricted to matching start, middle or end of strings Slower than presence or equality Middle substring matches slower than start or end SAGE-AU Conf 2003 – p. 54
  • 55. Search Filter Details cont Ordered matching (greater-than, less-than) Order determined by attributes syntax and matching rules Approximate filter Algorithm used determined by server Common to have soundex Extensible Allows applying an explicit matching rule to a search filter Not very common, but powerful SAGE-AU Conf 2003 – p. 55
  • 56. Search Filters Examples (objectclass=posixAccount) (cn=Mickey M*) (|(uid=fred)(uid=bill)) (&(|(uid=jack)(uid=jill))(objectclass=posixAccount)) SAGE-AU Conf 2003 – p. 56
  • 57. Search Scope 3 types of scope: base limits to just the base object onelevel limits to just the immediate children sub search the entire subtree from base down SAGE-AU Conf 2003 – p. 57
  • 58. Base Scope SAGE-AU Conf 2003 – p. 58
  • 59. One Level Scope SAGE-AU Conf 2003 – p. 59
  • 60. Subtree Scope SAGE-AU Conf 2003 – p. 60
  • 61. Optimizing Searches Index commonly accessed attributes and appropriate filters Reduce opening and closing connections Only request attributes you need Limit the search scope if possible Minimize number of searches - combine searches into one, if possible Minimize updates - writes are slow Use replicas / high availability techniques on the server SAGE-AU Conf 2003 – p. 61
  • 62. Operational Attributes Attributes used by server that usually aren’t displayed Vary by directory vendor Usually time stamps, server access controls, admin information, last updated dates etc SAGE-AU Conf 2003 – p. 62
  • 63. Extending Schema To extend schemas, the process is as follows: Obtain Object Identifier (OID) Choose name prefix Create local schema file Define custom attribute types (if necessary) Define custom object classes (Note these examples are from OpenLDAP, others should be similar) SAGE-AU Conf 2003 – p. 63
  • 64. Obtaining OID OIDs found in protocols described by ASN.1, eg SNMP OIDs are hierachical Do not just arbitrarily pick an OID OIDs are obtained from IANA, under Private Enterprise arc at no cost OID from IANA will be something like 1.3.6.1.4.1.X For experiments, OID 1.1 is available (regarded as dead namespace) SAGE-AU Conf 2003 – p. 64
  • 65. Choose name prefix Schema elements all have names Names should be descriptive and not likely to clash Convention is to prefix names with few letters to localize the changes The smaller the organization, the longer the prefix should be Examples are auFirm (Aust company) or comPisoftware (elements for pisoftware.com) SAGE-AU Conf 2003 – p. 65
  • 66. Attribute Types and Object Classes attributetype directive used to define new attribute types Uses Attribute Type Description, as per RFC2252 objectclasses directive used to define new object class Uses Object Class Description, as per RFC2252 SAGE-AU Conf 2003 – p. 66
  • 67. Attribute Type Description AttributeTypeDescription = "(" whsp numericoid whsp ; AttributeType identifier [ "NAME" qdescrs ] ; name used in ; AttributeType [ "DESC" qdstring ] ; description [ "OBSOLETE" whsp ] [ "SUP" woid ] ; derived from this ; other AttributeType [ "EQUALITY" woid ; Matching Rule name [ "ORDERING" woid ; Matching Rule name [ "SUBSTR" woid ] ; Matching Rule name SAGE-AU Conf 2003 – p. 67
  • 68. Attribute Type Description cont [ "SYNTAX" whsp noidlen whsp ] [ "SINGLE-VALUE" whsp ] ; default multi-valued [ "COLLECTIVE" whsp ] ; default not collective [ "NO-USER-MODIFICATION" whsp ] ; default user modifiable [ "USAGE" whsp AttributeUsage ] ; default userApplications whsp ")" AttributeUsage = "userApplications" / "directoryOperation" / "distributedOperation" / "dSAOperation" SAGE-AU Conf 2003 – p. 68
  • 69. Attribute Type Example attributetype ( 2.5.4.41 NAME ’name’ DESC ’names associated with the object’ EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) attributetype ( 2.5.4.4 NAME ( ’sn’ ’surname’ ) DESC ’surnames associated with the object’ SUP name ) SAGE-AU Conf 2003 – p. 69
  • 70. Object Class Description ObjectClassDescription = "(" whsp numericoid whsp ; ObjectClass identifier [ "NAME" qdescrs ] [ "DESC" qdstring ] [ "OBSOLETE" whsp ] [ "SUP" oids ] ; Superior ObjectClasses [ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" ) whsp ] ; default structural [ "MUST" oids ] ; AttributeTypes [ "MAY" oids ] ; AttributeTypes whsp ")" SAGE-AU Conf 2003 – p. 70
  • 71. Object Class Example objectclass ( 1.3.6.1.1.1.2.0 NAME ’posixAccount’ SUP top AUXILIARY DESC ’Abstraction of an account with POSIX attributes’ MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ description ) ) SAGE-AU Conf 2003 – p. 71
  • 72. LDAP Protocol Uses client server model Message oriented protocol - client sends messages to server and gets replies Can issue multiple requests at once - each response has message id to identify 9 basic protocol operations - interrogation, update and authentication LDAPv3 provides extended operations and controls Uses simplified version of Basic Encoding Rules (BER) - not plain text SAGE-AU Conf 2003 – p. 72
  • 73. LDAP Protocol Operations Interrogation operations search compare Update operations add delete modify rename Authentication and control operations bind unbind abandon SAGE-AU Conf 2003 – p. 73
  • 74. Typical LDAP conversation Client Server Open connection and bind Result of bind operation Search operation Returned entry 1 Returned entry 2 Results of search operation Unbind operation Close connection SAGE-AU Conf 2003 – p. 74
  • 75. Bind Operations How client authenticates to directory Opens TCP connection, gives distinguished name and credentials Server checks credentials are correct, returns result to client If credentials fail, returns an anonymous bind Authentication lasts while connection is open, or until client reauthenticates Credentials can be password, digital certificate or other SAGE-AU Conf 2003 – p. 75
  • 76. Authentication Levels There are 3 basic levels of authentication: Anonymous - no username and password Enabled by default, disable using “disallow bind_anon” in slapd.conf Unauthenticated - only username (sometimes called reference bind) Disabled by default, enable using “allow bind_anon_cred” in slapd.conf Authenticated - username and correct password Enabled by default, disable using “disallow bind_anon_simple” in slapd.conf SAGE-AU Conf 2003 – p. 76
  • 77. LDAP Security Model Authentication How to verify identities Password policies Criteria passwords must satisfy to be valid - ie, length, age etc Encryption Ensuring data is private Access control Who can access what data Auditing Determine if security model is being followed - ie, logs SAGE-AU Conf 2003 – p. 77
  • 78. Security Model - Authentication Anonymous access Simple password Proxy authentication Simple password over encrypted connection Certificate based authentication SASL based authentication SAGE-AU Conf 2003 – p. 78
  • 79. Password policies Minimum length Maximum age Syntax checking History keeping Expiration policy Account lockout policy SAGE-AU Conf 2003 – p. 79
  • 80. Access Control Set permissions on: Entire directory Subtree Specific entries Specific attributes Any entry that matches a search filter SAGE-AU Conf 2003 – p. 80
  • 81. LDAP URLs Definition taken from RFC2255 <ldapurl> ::= "ldap://" [ <hostport> ] "/" <dn> [ "?" <attributes> [ "?" <scope> "?" <filter> ] ] <hostport> ::= <hostname> [ ":" <portnumber> ] <dn> ::= a string as defined in RFC 1485 <attributes> ::= NULL | <attributelist> <attributelist> ::= <attributetype> | <attributetype> [ "," <attributelist> ] <attributetype> ::= a string as defined in RFC 1777 <scope> ::= "base" | "one" | "sub" <filter> ::= a string as defined in RFC 1558 SAGE-AU Conf 2003 – p. 81
  • 82. LDAP URLs DN Distinguished name Attribute list List of attributes you want returned Scope base base object search one one level search sub subtree search Filter Standard LDAP search filter SAGE-AU Conf 2003 – p. 82
  • 84. LDAP Related Standards Bodies Consortiums and Standard Bodies OASIS Directory Services Markup Language Distributed Management Task Force (DMTF) Common Informational Model (CIM) Network Applications Consortium (NAC) Users Group Open Group Directory Interoperability Forum (DIF) LDAP2000 Interoperability Internet Engineering Task Force (IETF) LDAP Standards SAGE-AU Conf 2003 – p. 84
  • 85. IETF Working Groups IETF Working Groups LDAPExt Access Controls APIs LDUP Replication LDAPbis LDAPv3 Protocol revisions SAGE-AU Conf 2003 – p. 85
  • 86. LDAPv3 Internationalization - using UTF-8 Referrals and Continuations Security Authentication via SASL Integrity and Confidentiality Protection via TLS or SSL Extensibility Feature and schema discovery LDAPv3 servers have a directory entry called root DSE (Directory Server Entry) Contains: protocol supported, schemas, other useful info SAGE-AU Conf 2003 – p. 86
  • 87. Directory Uses 3 main uses of directories Network directory Provides user account management Enterprise directory Global repository for shared information Details about people, organisations and devices Business directory Details about trading partners, customers, suppliers etc SAGE-AU Conf 2003 – p. 87
  • 88. Directory Life Cycle 3 main parts to life cycle: Design Understand directory requirements and gather data Deployment Actually try out directory Maintenance Update data, keep service running, and improve SAGE-AU Conf 2003 – p. 88
  • 89. Design Cycle Directory needs Understand what applications require Data Find existing data sources Determine relationship to directory Schema Develop schemas for applications requirements Namespace Organise data layout SAGE-AU Conf 2003 – p. 89
  • 90. Design Cycle cont Topology Determine where servers are located Determine how data is divided Replication Ensure data is available where it is needed Security Essential to meeting security and privacy requirements of users SAGE-AU Conf 2003 – p. 90
  • 91. Deployment Cycle Choose directory software Evaluate and choose software Piloting Inital testing to check design Performance and scaling testing Testing to see if system can handle the task Tuning Check process as well as technical User feedback Expose users to test system Going into production Move from pilot to production SAGE-AU Conf 2003 – p. 91
  • 92. Maintenance Cycle Data maintenance Keeping data up to date Data backups Ensure backups don’t interfer with operations Replication can help here Schema additions Extend schemas when adding new applications Monitoring Integrate with existing system if possible Expansion Try to plan for expansion - growth may surprise you Changing requirements Don’t get caught out SAGE-AU Conf 2003 – p. 92
  • 93. Directory Management Directory management consists of: Namespace and directory tree design Determine root naming context Integration with existing data Synchronization Maintaining data Choosing mangement model SAGE-AU Conf 2003 – p. 93
  • 94. Basic Design Steps Define applications for directory Find data sources and relationships Schema design Namespace design and topology Replication Extraction and population Testing and deployment SAGE-AU Conf 2003 – p. 94
  • 95. Schema Design Be aware of existing schemas and use them if possible Use schemas provided with applications Define and document any new schemas required Be prepared for schema evolution as things change SAGE-AU Conf 2003 – p. 95
  • 96. Namespace Design Designing a namespace is Hard Requires indepth knowledge of what the directory will be used for Hard to reorganise once data is put in - requires downtime, etc Needs to support applications that want to use it - be aware of existing standards SAGE-AU Conf 2003 – p. 96
  • 97. Namespace Design cont Try not to break out into different departments - what happens when person moves? Avoid designs that will have to change - eg, don’t base on org chart Don’t go overboard - too much hierachy can get confusing Probably won’t get it right first - will take some iterations SAGE-AU Conf 2003 – p. 97
  • 98. Namespace Design cont Good namespace design helps with: Delegation of authority Replication of data Security and access control Scalability Physical placement of servers SAGE-AU Conf 2003 – p. 98
  • 99. Tree Design 3 most commonly used tree designs for a single company Organizational Flat Geographical SAGE-AU Conf 2003 – p. 99
  • 100. Organizational Based Tree dc=pisoftware dc=com ou=Sales ou=Devel ou=Sysadmin ou=People ou=Groups ou=Apps SAGE-AU Conf 2003 – p. 100
  • 101. Organizational Based Details Mirrors organizational structure Good for using delegated administration management model People changing jobs mean a change to distinguished name Groups refer to distinguished names - no referential integrity checking SAGE-AU Conf 2003 – p. 101
  • 102. Flat Tree dc=pisoftware dc=com ou=People ou=Groups ou=Apps SAGE-AU Conf 2003 – p. 102
  • 103. Flat Details Simplest layout - all people and groups are in one level down from root Entries only added or removed on hiring and firing - not internal job changes Most directory servers can’t split single branch across multiple servers Harder to delegate admin control SAGE-AU Conf 2003 – p. 103
  • 105. Geographical Details Branch for each geographical location of the company Each geographical location has a master, also replicates rest of tree Rarer for people to move between geographical locations Geographical dispersement of company might not match political SAGE-AU Conf 2003 – p. 105
  • 106. Choosing Root Naming Context Root naming context is servers top level entry Some servers can have multiple root naming contexts Two main choices: Traditional Domain component Active Directory doesn’t give a choice for root naming context, most others do SAGE-AU Conf 2003 – p. 106
  • 107. Traditional Style Traditionally has been ‘o=company,c=country’ Company is free-form string of company name Country is ISO 2 letter country code Inherited from X.500 Can cause conflicts between similarly named companies SAGE-AU Conf 2003 – p. 107
  • 108. Domain Component Style Use DNS name to generate base DN See RFC2377 for more details - "Naming Plan for Internet Directory-Enabled Applications" example.com gives dc=example,dc=com Already globally unique Already registered Can trace back to who owns it easily Some CAs only allow traditional X.500 attributes, which doesn’t include dc SAGE-AU Conf 2003 – p. 108
  • 109. Topology Design Directory tree can be spread over multiple physical servers Design is important to: Increase performance Increase availability Better manage directory Hold more entries than a single server could Users see one large directory Closely related to replication design SAGE-AU Conf 2003 – p. 109
  • 110. Topology Design Each server is delegated a partition of the directory Similar to DNS One server is the root and is common ancestor to all subpartitions Partitions must be a complete subtree, and not exclude any entries Servers can hold more than one partition, eg read-only copies SAGE-AU Conf 2003 – p. 110
  • 111. Topology Design - References Directory glued together using knowledge references Immediate superior knowledge references Points up the tree Hooks back up to ancestor Subordinate knowledge references Points down the tree to other partitions Hook to hang other partitions off SAGE-AU Conf 2003 – p. 111
  • 112. Topology Design - Why Partition Too many entries for a single server Increase performance and scalability Applications mostly read and modify entries in local section of tree Replication traffic to a single partition is too large If partitioning allows traffic to remain local, won’t have to cross slow WAN links If directory use will rapidly expand SAGE-AU Conf 2003 – p. 112
  • 113. Topology Design - Why Not Partition All entries can fit on a single server Applications modify entries across whole tree Not much replication traffic Organisation is centrally located, no slow WAN links Directory use is static and won’t exceed capabilities of single server SAGE-AU Conf 2003 – p. 113
  • 114. Topology Design - Considerations Consider directory enabled applications and performance requirements Understand server software limitations and capabilities Consider physical layout of network and location of applications Ensure namespace design fits within constraints - ie, flat namespace isn’t good for partitioning SAGE-AU Conf 2003 – p. 114
  • 115. Replication Design Increases reliability and performance Allows locating data close to users and applications that need them Can manage data where it is being used Gives redundancy - applications can fail over to replicas Can distribute load across multiple servers, increasing performance Closely related to topology design SAGE-AU Conf 2003 – p. 115
  • 116. Replication Design Strategy High availability Multiple directories at one site Use multi-master to ensure write-failover Local availability Replicas at local offices Useful if network links are unreliable or intermittant Helps reduce load on master server Masters can be at: Central office Local server is master for local part of directory tree SAGE-AU Conf 2003 – p. 116
  • 117. Replication Design Strategy cont Disaster recovery Two masters at geograhically disperse locations Provides failover and data protection Load balancing Spread user connections over servers Dedicate servers to read-only activities Dedicate servers to particular activities - ie, server for mail SAGE-AU Conf 2003 – p. 117
  • 118. Replication Issues to Consider Quality of links between remote sites Amount of bandwidth between sites Is replication traffic too much for link Physical location of users How many users What type of work they do Number of applications Type and proportion of operations done Size of directory SAGE-AU Conf 2003 – p. 118
  • 119. Management Models 3 main management models Centralized administration Distributed administration User self-administration SAGE-AU Conf 2003 – p. 119
  • 120. Centralized Administration Good for smaller organisations All changes are made in the one location or group of people Minimal admin infrastruture Low potential for duplication of data Can cause bottlenecks in changes being made - long delays Often seen as most secure - not always the case Possibly too much trust in central group Within sub-departments, possibility that changes may not happen quickly enough - eg, employee is fired and notification takes time to make it to central accounts department SAGE-AU Conf 2003 – p. 120
  • 121. Distributed Administration Centralised department co-ordinates sub-groups, who do actual admin work Reduces admin bottlenecks Very scalable Similar to how DNS admin is done - root nameservers handle top level, then delegated out Namespace design is important - hard to distribute across flat namespace SAGE-AU Conf 2003 – p. 121
  • 122. User Self-Administrated User creates and manages own account - eg Internet shopping Web forms often used to let end users admin own accounts Common to seperate end user admined accounts from other part of directory Lower level of trust of data done this way Usually use other form of data / contact - eg frequent flyers database, using email address SAGE-AU Conf 2003 – p. 122
  • 123. Data Maintenance Maintenance is most important part Usually involved with maintance the longest, often least though about aspect Configuration is comparitively simple, managing contents is hard The best designed directory is useless with out of date or incomplete data SAGE-AU Conf 2003 – p. 123
  • 124. Managing Directory Contents People can have multiple accounts, or a single account (or group) can have multiple people associated Need to manage association between accounts and people, as well as managing the people This is essential to be able to terminate all accounts associated with a terminated employee Important as ldap doesn’t ensure referential integrity - can be left with dangling references SAGE-AU Conf 2003 – p. 124
  • 125. Managing Data Flow Managing data integration between directories has a number of approaches: Replication Data export/import Scripting Metadirectories Virtual Directories SAGE-AU Conf 2003 – p. 125
  • 126. Replication Exactly duplicating data between directories This creates a copy of data for distribution, performance, scalability and redundancy No LDAP standard for replication, so hard to replicate between different vendors IETF is developing LDUP, an independant replication protocol SAGE-AU Conf 2003 – p. 126
  • 127. Data export/import Export data out from one directory, then import into next Can manipulate data after exporting Servers must support either of 2 main standards LDIF DSML Updates only happen periodically, data is out of sync between these times SAGE-AU Conf 2003 – p. 127
  • 128. Scripting Writing scripts to manipulate data between servers Allows choosing subset of data to transfer Easy to change / manipulate data Common languages are Perl, Java and C SAGE-AU Conf 2003 – p. 128
  • 129. Metadirectories Consolidates subsets of data from various locations Presents it as LDAP, XML, HTTP etc Consolidates and aggregates details about objects Can provide multiple views of data Helps manage relationships between directories Manages data flow between directories Can reflect information back to original or new data sources Not just a consolidated directory of all information SAGE-AU Conf 2003 – p. 129
  • 130. Metadirectories cont Consists of: Metadirectory namespace Join engine Connectors Comes in two different forms Add on to existing directory Stand alone directory SAGE-AU Conf 2003 – p. 130
  • 131. Metadirectories Namespace Also called meta view Unified view of underlying directories / data sources Usually stored in a LDAP directory Uses join engine to synchronize underlying sources SAGE-AU Conf 2003 – p. 131
  • 132. Metadirectories Join Engine Managed data flow between external sources and metadirectory views Defines authoritive source for each bit of data Controls which data sources can be changed via meta directory Manipulates and unifies connector views to provide meta view Links items in connector views with items in meta view Can construct attributes from other values SAGE-AU Conf 2003 – p. 132
  • 133. Metadirectories Connectors Provides data from external sources to join engine Connects between directory and data sources Can provide name mapping to translate from original data source to LDAP Defines which attributes to use or discard Provides a connector view Two types: Direct connector: talks directly to source, usually either LDAP or SQL Indirect connector: converts from source data into LDAP SAGE-AU Conf 2003 – p. 133
  • 134. Virtual Directories LDAP frontend to databases / directories Provides schema adaptors Failover and load balancing Namespace conversions Value manipulations Add/modify/delete attributes Remove or construct attributes based on criteria SAGE-AU Conf 2003 – p. 134
  • 135. Data Flow Analysis Schema mapping Mapping schemas between directories Determining authoritative source Find which directory has most up to date for each part of data Data tranformation Not all systems store data in the same format, eg may use extra lookup tables Change data representation to be the same format in each directory Namespace translation Sometimes can’t translate directly - can get conflicts Sometimes can just change root naming context SAGE-AU Conf 2003 – p. 135
  • 136. Data Sources Existing directory services Operating systems Existing databases Flat files or spreadsheets Applications Sysadmins End users SAGE-AU Conf 2003 – p. 136
  • 137. Common Data Problems Things to be careful of: Too much information - can’t find what is needed Not enough information Poor quality information Out of date information SAGE-AU Conf 2003 – p. 137
  • 138. Tips for Success Carefully pick and stick to scope of project Start small, show incremental successes Pick low hanging fruit, and stay visible Deploy in parallel with existing systems Design for end result - doesn’t have to get there straight away Identify who’s responsible early Use info with greatest value first Allow time for political and process issues Be careful what you promise and manage expectations SAGE-AU Conf 2003 – p. 138
  • 139. Important RFCs RFC Title RFC2247 Using Domains in LDAP DNs RFC2251 LDAPv3 Protocol RFC2252 LDAPv3 Attribute Types RFC2253 LDAPv3 Disinguished Name RFC2254 LDAPv3 Search Filters RFC2255 LDAPv3 URL Format RFC2256 A Summary of the X.500(96) User Schema RFC2307 LDAP Network Information Services Schema RFC2377 LDAP Naming Plan SAGE-AU Conf 2003 – p. 139
  • 140. Important RFCs cont RFC Title RFC2798 LDAP inetOrgPerson schema RFC2829 LDAPv3: Authentication Methods RFC2830 LDAPv3: Start TLS RFC2849 LDIFv1 RFC2891 LDAPv3: Server Side Sorting of Search Results RFC3112 LDAP Authentication Password Schema RFC3377 LDAP(v3): Technical Specification SAGE-AU Conf 2003 – p. 140
  • 141. References Understanding and Deploying LDAP Directory Services Timothy A. Howes, Mark C. Smith and Gordon S. Good Macmillan Network Architecture and Development Series Implementing LDAP Mark Wilcox Wrox Press Ltd LDAP Programming, Management and Integration Clayton Donley Manning Publications SAGE-AU Conf 2003 – p. 141
  • 142. References cont Summary Report from Catalyst 99 Directory Namespace and Best Practices Workshop, The Burton Group and The Network Applications Consortium OpenLDAP 2.1 Administrators Guide, http://www.openldap.org/doc/admin21/ LDAP Linux HOWTO, Luiz Ernesto Pinheiro Malere, Linux Documentation Project LDAP Implementation HOWTO, Roel van Meer, Linux Documentation Project SunONE Directory Server 5.2 Deployment Guide SunONE Meta Directory Server 5.1 Deployment Guide The Slapd and Slurpd Administrator’s Guide, University of Michigan, Release 3.3 SAGE-AU Conf 2003 – p. 142