If you can't read please download the document
Upload
sbahloul
View
3.134
Download
0
Embed Size (px)
Citation preview
Prsentation PowerPoint
LSC @ 2011 . RMLL
Sbastien BahloulJonathan Clarke
What?
LSC @ 2011
Why?
Goals
3 minutes quick start
New version : 2.0
Roadmap
Why ?
LDAP directories
Present in a vast majority of corporations
Central authentication, identity management,
Contain user accounts (identities)
Simple, right? well, yes, but
HR already has software that only stores identity information in a database
We use Active Directory for our desktops and we need users' identities there too
XYZ software only uses a database
Why ?
Several different identity repositories
How to make sure the same changes apply?
New employees
Name changes (marriage), transfers...
Employees leaving
Jim just got fired.
Boss asks you to disable his account.
AccountS, that is. You do it... All done!
But what about the account on the company blog?
ARGH! Too late. What now!?
FIRE THE SYSADMIN!!!?
Why ?
Synchronize the repositories
Spread the account status, information, etc...
Manual synchronization?
Leads to a mess, leaving old accounts active
Automatic synchronization?
Introduction
Automatic synchronization
It already exists, and works great
Directory- / database-specific replication
Application-specific connectors (AD, SAP, etc)
What about the rest?
Between different databases, directories, files?
Different data models?
Using standards: LDAP, SQL, etc...?
About LSC Project
What is LSC?
LDAP Synchronization Connector
Open Source project
BSD licence
Written in Java
5 years in the making
3 years ago LSC-project.org created
~10 regular contributors
Website: http://lsc-project.org
Goals functionality
Read/write to any repository
Database or LDAP directory or ?
Standard LDAPv3 operations
JDBC connectors for databases
Transform data on-the-fly
Adapt to a different data model
JavaScript based engine to manipulate data
Adjustable updates: force values, insert defaults, merge values, don't touch...
Goals usability
Quickly implement a new synchronization
Highly configurable
What exactly do we read?
Powerful transformations (correctness is important)
What exactly do we write?
Run fast (performance is important)
Easy to setup
Philosophy
Make it possible, now!
Make it more stable and safer
Open Source benefits over home-grown scripts
More secure and better tested
Don't reinvent a buggy wheel!
Make it faster and simpler
Faster than writing home-grown scripts
Provide methods for IAM and directory-specific tasks
This may not be the ultimate solution
LSC synchronization principles
Two levels of information per identity
Existence equivalent to an account (object)
Identity specific details names, phone numbers (datasets)
A unique ID: the pivot dataset(s)
Could be an email address, user ID ...
Synchronization operations
Create: Add objects from source to destination
Delete: Delete objects from destination not in source
Update: Compare and set specific details
Change ID: Specific update for the main identifier
LSC synchronization principles
A taskdefines:
source and destination service
pivot datasets
synchronization options
A connectoris defined by :
A connection for network and general settings (hostname, username, password, ...)
A service for per task connector specific settings (LDAP filter , SQL request, ...)
LSC synchronization principles
First step: sync
Get a list of all pivots from the source
For each pivot
Read the source object
Search for the destination object with pivot
Build up desired destination object by applying
transformations to source object
If the destination object exists, calculate modifications
Apply: create or modify
LSC synchronization principles
Second step: clean (optional)
Get a list of all pivots from the destination
For each pivot
Search for the source object with pivot
If the source object doesn't exists, delete from destination
Apply: delete
Defining a synchronization
Source type: LDAP / SQL database / CSV file ?
Population: Which users? Which pivot?
Information: Datasets ? Transformations?
Example: CSV to OpenLDAP
CSV: a simple export file (HR for example)
CSV is loaded in a temporary database (HSQLDB)
Embedded database is considered has a standard implementation
Example: CSV to OpenLDAP
Configuring the source database
JDBC connector: org.hsqldb.jdbcDriver
URL, username, password
Simple SQL request
SELECT 'inetOrgPerson' objectClass, pers."ID", pers."MAIL",
...
FROM csvdata pers WHERE ID like #mail#
Example: CSV to OpenLDAP
OpenLDAP: inetOrgPerson entries
Example: CSV to OpenLDAP
Configuring the destination directory
dst-ldap ldap://localhost:33389/dc=lsc-project,dc=org cn=Directory Manager secret SIMPLE IGNORE NEVER VERSION_3 -1 com.sun.jndi.ldap.LdapCtxFactory false
Example: CSV to OpenLDAP
Configure the synchronization task
Source directory searching
DN generation
MySyncTask-dst ou=Sample mail descriptioncnsn userPasswordobjectClass (objectClass=inetOrgPerson) (&(objectClass=inetOrgPerson)(mail={mail}))
"mail=" + srcBean.getAttributeValueById("mail") + ",ou=Sample"
Example: CSV to OpenLDAP
Configuration data transformations (syncoptions)
FORCE cn srcBean.getAttributeValueById("sn").toUpperCase() + " " srcBean.getAttributeValueById("givenName") userPassword KEEP SecurityUtils.hash(SecurityUtils.MD5, "CHANGEME")
Demonstration
Installation
Simple CSV to LDAP synchronization
Online tutorial
http://lsc-project.org/wiki/documentation/2.0/sample (ongoing :)
Features overview
Syncoptions offer unlimited possibilites
Text transformations
cn = givenName + SPACE + SN in caps
Filter accents: convert Hlne to Helene
Hash passwords (SSHA, MD5, etc)
Simple LDAP bind test
Active Directory specifics:
UserAccountControl: deactivate accounts, force password changes, etc
UnicodePwd: update passwords in AD-style
Anything else you can write in Java!
Features overview
Operation conditions
Perform CREATE / UPDATE / DELETE / Change ID conditionally
Use-cases:
Update-only synchronizations
(never create, never delete)
Only update the password if it's changed
(perform a LDAP bind operation to check on the fly)
Delete an account after 60 days of inactivity
Features overview
Dataset-level priorities for update
FORCE: replace the destination value whatever
KEEP: leave the destination value as-is
DEFAULT: value to use if the destination is empty
CREATE: default value for new entries
Use cases:
Provide a default password but don't squash real one
Force phone numbers if we're authoritative for them
Features overview
Detailed and configurable logging
LDIF format (fully RFC-compliant)
CSV format
Audit or play back modifications
Dryrun mode
Block create/delete/update/changeid operation per task
Standards based Wide support
Any LDAP server should be supported, tested on:
OpenLDAP
OpenDS
Sun DSEE
Microsoft Active Directory
Novell Directory Services
Any database with a JDBC connector, tested on:
MySQL, PostgreSQL, Oracle, HSQLDB
Latest version LSC 2.0
A major new release for new features :
Daemon mode with on the fly updates
Support for scripting languages (JSR 223)
Read and write everywhere
Plugin API : connectors, libraries, scripting engine,
Graphical interface
LSC: a connected entity!
Start LSC to benefit of asynchronous mode: detect and propagate on the fly update events for supported datasource (currently Web Service and LDAP)
Interact with LSC instance through command line tool or JMX
LSC: scripting
Use your prefered language to write LSC rules!
LSC builtin and historical support for JavaScript
Extensible to any JSR 223 compliant engines:
Php
Groovy
Unix tools (awk, TCL),
Python, Ruby, Scheme (Lisp)
...
LSC: read and write everywhere
Original and best supported connector to LDAP directories
Additional sources: NIS, database, CSV, Web Services, LDAP through Syncrepl
Additional destinations: Scripting destination
And many other to come :)
LSC: builtin extensibility API
Write your own connector to read or write inside your custom space
public class MySourceService {public IBean getBean(...);
public Map getListPivots(...);
}
public class MyTargetService {public IBean getBean(...);
public Map getListPivots;
public boolean apply(...)
}
public class MyServiceConfiguration {private String mySpecialParameter;
public String getMySpecialParameter();public void setMySpecialParameter(...);}
LSC: graphical interface
LSC: graphical interface
LSC: graphical interface
Perspectives
Project is currently in stable status
Version 1.2.1
This presentation is based on the beta version
Version 2.0 (almost) released
Perspectives
Ideas for improvement are everywhere:
Event based model (ESB)
DirSync support for Microsoft AD
Datasource aggregation on the fly
Scheduler integration (ongoing)
Data reconciliation
Anything else
Try it out! Get involved!
Main website: http://lsc-project.org/
Tutorials: quickstart demo, detailed tutorials
Reference documentation
Try it out! Get involved!
Getting help (keep in touch!)
Mailing lists: http://lists.lsc-project.org/
IRC: #lsc-project on Freenode
Development tools:
Redmine forge: http://tools.lsc-project.org/
Bugtracker, SVN repository
Continuous build server
Numerous automated tests
Thanks for your attention!Any questions?
Sebastien [email protected]
Page
13/07/11
http://lsc-project.org