|
Poznańskie
Centrum Superkomputerowo - Sieciowe |
PROJEKT LDAP |
|
Projekt aplikacji do przenoszenia danych z relacyjnej bazy danych (Oracle) do bazy LDAP-owej Jerzy Chochulski Mirosław Czyrnek Jarosław Glapski |
|
Poznań 2003 |
Spis treści
2 Środowisko
działania aplikacji
4.1 Skrypt tworzący schemat danych w
bazie relacyjnej (Oracle)
4.2 Schemat danych w bazie katalogowej
(iPlanet Directory Server)
W
Poznańskim Centrum Superkomputerowo-Sieciowym rozwijany jest uniwersalny pakiet
portalowy Joshua, implementowany w języku Java.
Pakiet
portalowy Joshua wykorzystuje interfejs narzędziowy do zarządzania
użytkownikami portalu. Interfejs ten pozwala na zarządzanie użytkownikami,
których dane składowane są w relacyjnej bazie danych lub bazie danych LDAP.
Portal może korzystać z dowolnej z tych baz danych przechowujących dane o
użytkownikach.
Dane
użytkowników portalu, w świetle ustawy z dnia 29 sierpnia
1997 o Ochronie danych osobowych (Dz.U. 1997 Nr 133 poz. 883), należy traktować jako dane
osobowe. Podlegają one prawnej ochronie przewidzianej w powołanej ustawie.
Pakiet portalowy Joshua został dostosowany w celu zapewnienia właściwej ochrony
danych osobowych użytkowników portalu. Zadanie to obejmowało wydzielenie i
separację danych wrażliwych od innych danych portalu i przeniesienie ich na
wydzielone konto bazodanowe oraz zastosowanie właściwej ochrony przy
przesyłaniu tych danych.
Ze
względu na to, że podczas prac rozwojowych nad portalem istnieje konieczność
utworzenia środowiska testowego, konieczne jest zapewnienie możliwości
tworzenia kopii bazy danych użytkowników portalu. Wykonanie takiej kopii
konieczne jest także w procesie migracji pomiędzy różnymi bazami danych.
Projektowana
aplikacja ma za zadanie zautomatyzować proces przenoszenia danych pomiędzy
bazami danych, a także pozwolić przeprowadzić proces anonimizacji danych,
mający na celu uniemożliwienie identyfikacji poszczególnych użytkowników
portalu. Anonimizacja danych ma kluczowe znaczenie w przypadku tworzenia bazy
danych użytkowników portalu, która ma być wykorzystana w środowisku testowym.
Pozwala ona usunąć cechę zbioru danych osobowych ze zbioru danych użytkowników
portalu testowego i ograniczyć jednocześnie liczbę osób mających dostęp do
chronionych danych.
Aplikacja do przenoszenia danych użytkowników
portalu pracującego w oparciu o pakiet portalowy Joshua pozwola przenosić dane
pomiędzy relacyjnymi bazami danych i bazami danych LDAP.
Środowisko portalowe Joshua dostarcza
zunifikowanego interfejsu zarządzania użytkownikami pozwalającego na
składowanie danych użytkowników w różnych bazach danych. Projektowana aplikacja
wykorzystuje ten interfejs w celu wykonania kopii bazy danych użytkowników.
Interfejs do zarządzania użytkownikami zdefiniowany
został jako zbiór operacji, które mogą być wykonane na danych opisujących
użytkowników. Interfejs ten posiada obecnie dwie implementacje obejmujące
współpracę z relacyjną bazą danych i bazą danych LDAP. W dokumencie "Projekt przeniesienia informacji
o użytkownikach aplikacji portalowej z relacyjnej bazy danych (Oracle) do bazy
LDAP-owej"
opisano schematy danych, które służą do składowania danych o użytkownikach. W
punkcie 4 zaprezentowano skrypty pozwalające utworzyć schematy
odpowiednich baz danych.
Projektowana aplikacja
abstrahuje od reprezentacji danych specyficznej dla wybranego rozwiązania
składowania danych i operuje na reprezentacji obiektowej zdefiniowanej w
interfejsie zarządzania użytkownikami środowiska portalowego Joshua. Możliwa
jest dzięki temu jej rozbudowa w przyszłości i dostosowanie do współpracy z
kolejnym źródłem danych. Zastosowanie takiego rozwiązania znacznie upraszcza
budowę aplikacji oraz zapewnia jej niezależność od ewentualnych przyszłych
zmian w atrybutach służących do opisywania użytkowników w pakiecie portalowym
Joshua.
Każdy użytkownik środowiska portalowego Joshua
opisany jest zbiorem atrybutów, może posiadać własności i przynależeć do wielu
grup użytkowników. W pakiecie portalowym Joshua użytkownik reprezentowany jest
przez obiekt o następujących atrybutach:
-
id - numeryczny
identyfikator użytkownika,
-
login - login
użytkownika w portalu,
-
imię - imię
użytkownika,
-
nazwisko -
nazwisko użytkownika,
-
e-mail - adres
e-mail,
-
mobile - numer
telefonu komórkowego,
-
isAdmin - czy
użytkownik może logować się w portalu administracyjnym,
-
modUser - kto
modyfikował dane użytkownika,
-
modDate - data
ostatniej modyfikacji.
Użytkownik portalu może posiadać dowolną liczbę
własności o unikalnych nazwach. Własności są wykorzystywane do przechowywania
specyficznych informacji o użytkowniku. Każda z usług portalu może składować
specyficzne informacje o użytkowniku w jego własnościach. Mechanizm ten używany
jest zwykle do współdzielenia cech użytkownika pomiędzy usługami portalu.
W pakiecie portalowym Joshua istnieje możliwość
definiowania grup użytkowników. Grupa użytkowników jest bytem abstrakcyjnym
służącym do agregowania użytkowników w celu nadawania im wspólnych uprawnień do
usług i zasobów. Każdy użytkownik może należeć do wielu grup użytkowników.
Projektowana aplikacja pozwala:
-
wykorzystać
dowolne źródło danych (bazę relacyjną, bazę LDAP)
-
wykonać kopię bazy
danych użytkowników do dowolnej docelowej bazy danych (baza relacyjna, baza
LDAP)
-
poddać
anonimizacji kopiowane dane.
Dla poprawnego wykonania operacji kopiowania bazy
danych użytkowników aplikacja wymaga:
-
dostarczenia
źródła danych które mają być kopiowane - źródło to musi być dostępne przez
jedną z implementacji zunifikowanego interfejsu zarządzania użytkownikami
pakietu portalowego Joshua.
-
dostarczenia
docelowej bazy danych (ze zdefiniowanym schematem przechowywania danych) - do
której kopiowane będą dane. Baza ta musi być dostępna przez jedną z
implementacji zunifikowanego interfejsu zarządzania użytkownikami pakietu
portalowego Joshua.
-
zaprzestania,
na czas kopiowania danych, modyfikowania źródłowej bazy użytkowników - dla
zapewnienia spójności przenoszonych danych.
Proces kopiowania bazy użytkowników realizowany
jest zgodnie z przedstawionym poniżej algorytmem.
1. Pobierz wszystkie grupy użytkowników ze źródłowej bazy danych użytkowników
i utwórz je w docelowej bazie danych.
2. Pobierz nie więcej niż packageSize kolejnych rekordów
opisujących użytkowników ze źródłowej bazy danych.
3. Dla każdego użytkownika z pobranego zbioru rekordów:
a. Zapisz rekord opisujący użytkownika do docelowej bazy danych
b. Pobierz własności, które posiada użytkownik i zapisz w docelowej bazie
danych.
c. Pobierz listę grup użytkowników, do których należy kopiowany użytkownik i
dodaj go do tych grup w docelowej bazie danych
4.
Jeżeli pozostali jeszcze
użytkownicy, którzy mają być kopiowani przejdź do pkt.2
Algorytm ten zapewnia przeniesienie wszystkich
danych opisujących użytkowników.
Proces kopiowania danych podlega konfiguracji za
pomocą następujących parametrów:
probeSize - liczba użytkowników do kopiowania. Jeśli jest mniejsza lub równa 0, to
kopiowane są wszyscy użytkownicy. Parametr pozwala tworzyć mniejsze (testowe)
zbiory danych.
packageSize - liczba rekordów opisujących użytkowników, która ma być jednorazowo
pobierana i kopiowana do docelowej bazy danych
Projektowana
aplikacja zapewnia możliwość anonimizacji przenoszonych danych użytkowników.
Anonimizacja danych realizowana jest
zgodnie z następującym algorytmem:
1. Pobierz wszystkie grupy użytkowników ze źródłowej bazy danych użytkowników
i utwórz je w docelowej bazie danych.
2. Pobierz packageSize kolejnych rekordów opisujących
użytkowników ze źródłowej bazy danych.
3. Pobierz packageSize zbiorów własności użytkowników
opisywanych przez rekordy pobrane w kroku 2 ze źródłowej bazy danych.
4. Dla każdej podlegającej anonimizacji cechy użytkownika:
a. Określ wektor przypadkowych zamienników PZ tj. wektor packageSize
ułożonych w losowej kolejności identyfikatorów rekordów pobranych w kroku 2.
b. dla każdego rekordu o identyfikatorze przechowywanym na parzystej pozycji (n)
w wektorze PZ - zamień wartości cechy między rekordem a jego
następnikiem (rozumianym jako rekord o identyfikatorze przechowywanym na
pozycji: (n+1) modulo packageSize w wektorze PZ) z
określonym prawdopodobieństwem.
5. Określ nowy wektor przypadkowych zamienników PZW.
6. Dla co drugiej własności każdego użytkownika o identyfikatorze
przechowywanym na parzystej pozycji (n) w wektorze PZW oraz jego
następnika (rozumianego jako rekord o identyfikatorze przechowywanym na
pozycji: (n+1) modulo packageSize w wektorze PZW):
a. jeśli istnieje odpowiednik własności u zamiennika - zamień wartości
własności (z prawdopodobieństwem PropChangeProp);
b. w przeciwnym wypadku - przekaż własność zamiennikowi (z prawdopodobieństwem
PropReplaceProp).
7. Powtórz kroki 5 i 6 dla pozostałej połowy własności użytkowników
przetwarzanego zbioru.
8. Dla każdego użytkownika z przetwarzanego wektora:
a. Zapisz w docelowej bazie danych rekord opisujący użytkownika po
anonimizacji danych;
b. Zapisz w docelowej bazie danych anonimizowane zbiory własności użytkownika
c. Pobierz listę grup użytkowników, do których należy i dodaj go do tych grup
w docelowej bazie danych.
9.
Jeżeli pozostali jeszcze
użytkownicy, którzy mają być kopiowani przejdź do pkt.2
Algorytm
(przy domyślnych wartościach parametrów konfiguracyjnych) zapewnia:
-
losowe
wymieszanie odpowiednich wartości cech użytkowników przy niezmienności cech:
identyfikator i hasło;
-
losowe
wymieszanie własności użytkowników;
-
niezmienność
przynależności użytkowników do grup użytkowników.
Proces
anonimizacji można konfigurować określając następujące parametry:
FNChangeProb - prawdopodobieństwo
zamiany wartości cechy FirstName użytkownika.
LNChange Prob - prawdopodobieństwo
zamiany wartości cechy LastName użytkownika.
EmailChangeProb - prawdopodobieństwo
zamiany wartości cechy E-mail użytkownika.
MobileChangeProb - prawdopodobieństwo
zamiany wartości cechy Mobile użytkownika.
PropChangeProb - prawdopodobieństwo
zamiany wartości jednej z własności użytkownika.
PropReplaceProb - prawdopodobieństwo utraty
własności (oraz jej wartości) przez użytkownika na rzecz innego użytkownika.
Parametry przyjmują wartości
z przedziału [0 - 1]. Wartością domyślną jest 1. Oznacza ona pewność
każdorazowej wymiany wartości cechy lub własności. Wymianie cechy lub własności
można zapobiec poprzez ustawienie odpowiedniego parametru na wartość 0.
Poniżej zaprezentowano skrypt tworzący obiekty w
relacyjnej bazie danych oraz opis struktury danych, w formacie LDIF,
przechowywanych w serwerze katalogowym.
drop sequence pt_lg_seq
/
drop table pt_users_groups
/
drop table pt_groups
/
drop table pt_user_props
/
drop table pt_users
/
create sequence pt_lg_seq
start with
1000
increment
by 1
order
nocache
/
prompt table pt_users
create table pt_users(
us_id number(10)
not null
,us_po_id
varchar2(80) not null
,us_login
varchar2(30) not null
,us_password
varchar2(30) not null
,us_enabled
varchar2(10) not null
,us_email varchar2(120) not null
,us_mobile varchar2(20)
,us_fname
varchar2(60) not null
,us_sname
varchar2(120) not null
,us_admin
varchar2(10) not null
,us_mod_date date not null
,us_mod_user
varchar2(30) null
,us_login_date date
,us_last_login_date date
,constraint
us_pk primary key(us_id)
,constraint
us_ck1 check(us_enabled in ('YES', 'NO'))
,constraint
us_ck2 unique(us_po_id, us_login)
,constraint
us_ck3 check(us_admin in ('YES', 'NO'))
)
/
prompt table pt_user_props
create table pt_user_props(
up_id number(10) not null
,up_us_id
number(10) not null
,up_name varchar2(250) not null
,up_value
varchar2(4000) not null
,constraint
up_pk primary key(up_id)
,constraint
up_fk1 foreign key(up_us_id)
references pt_users(us_id)
,constraint
up_ck1 unique(up_us_id, up_name)
)
/
prompt table pt_groups
create table pt_groups(
gr_id number(10) not null
,gr_po_id
varchar2(80) not null
,gr_name
varchar2(30) not null
,gr_title
varchar2(60) not null
,gr_description varchar2(4000) not null
,gr_mod_date date not null
,gr_mod_user
varchar2(30) null
,constraint
gr_pk primary t-size:9.0pt;mso-bidi-font-size:12.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'> ,constraint
gr_ck1 unique(gr_po_id, gr_name)
)
/
prompt table pt_users_groups
create table pt_users_groups(
ug_us_id
number(10) not
null
,ug_gr_id
number(10) not
null
,ug_mod_date date not null
,ug_mod_user
varchar2(30) null
,constraint
ug_pk primary key(ug_us_id, ug_gr_id)
,constraint
ug_fk1 foreign key(ug_us_id)
references pt_users(us_id) on delete cascade
,constraint
ug_fk2 foreign key(ug_gr_id)
references pt_groups(gr_id) on delete cascade
)
/
Poniżej przedstawiono plik w
formacie LDIF. Serwer katalogowy iPlanet Directory Server przechowuje w tym
formacie informacje o strukturze składowanych danych.
#
# psncPortal Schema
#
dn: cn=schema
#
# "psncPortal" attributes
#
attributeTypes: ( psncGroupId-oid
NAME 'psncGroupId'
DESC 'PSNC Portal Group Id'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE X-ORIGIN 'user defined')
attributeTypes: ( psncGroupTitle-oid
NAME 'psncGroupTitle'
DESC 'PSNC Portal Group Title'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'user defined' )
attributeTypes: ( psncPropertyId-oid
NAME 'psncPropertyId'
DESC 'PSNC Portal User'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE
X-ORIGIN 'user defined')
attributeTypes: ( psncPropertyValue-oid
NAME 'psncPropertyValue'
DESC 'PSNC Portal User Property'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE
X-ORIGIN 'user defined' )
attributeTypes: ( psncUserId-oid
NAME 'psncUserId'
DESC 'PSNC Portal User Id'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE
X-ORIGIN 'user defined')
attributeTypes: ( psncUserEnabled-oid
NAME 'psncUserEnabled'
DESC 'PSNC Portal User Enable Flag'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE X-ORIGIN 'user defined' )
attributeTypes: ( psncUserAdmin-oid
NAME 'psncUserAdmin'
DESC 'PSNC Portal User Admin Flag'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE
X-ORIGIN 'user defined' )
attributeTypes: ( psncModDate-oid
NAME 'psncModDate'
DESC 'PSNC Portal Modification Date'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'user defined')
attributeTypes: ( psncModUser-oid
NAME 'psncModUser'
DESC 'PSNC Portal Modification User'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE
X-ORIGIN 'user defined')
attributeTypes: ( psncLastLoginDate-oid
NAME 'psncLastLoginDate'
DESC 'PSNC Portal User'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE
X-ORIGIN 'user defined' )
attributeTypes: ( psncLoginDate-oid
NAME 'psncLoginDate'
DESC 'PSNC Portal User'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE
X-ORIGIN 'user defined')
#
# Object class
definitions
#
objectClasses: ( psncportaluser-oid
NAME 'psncportaluser'
SUP top
STRUCTURAL MUST ( givenName $ mail $ mobile $
psncLastLoginDate $ psncLoginDate
$ psncModDate $ psncModUser $ psncUserAdmin
$ psncUserEnabled $er:none;
mso-border-alt:solid windowtext .5pt;padding:0cm;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'> $ sn $ uid $
userPassword )
X-ORIGIN 'user defined' )
objectClasses: ( psncportaluserproperty-oid
NAME 'psncportaluserproperty'
SUP top
STRUCTURAL MUST ( cn $ psncPropertyId $
psncPropertyValue)
X-ORIGIN 'user defined' )
objectClasses: ( psncportalgroup-oid
NAME 'psncportalgroup'
SUP top
STRUCTURAL MUST ( cn $ description $ psncGroupId $
psncGroupTitle $ psncModDate
$ psncModUser )
X-ORIGIN 'user defined' )
objectClasses: ( psncportaluseringroup-oid
NAME 'psncportaluseringroup'
SUP top
STRUCTURAL MUST ( psncModDate $ psncModUser $
psncUserId $ seeAlso $ uid )
X-ORIGIN 'user defined' )
Aplikację do kopiowania danych użytkowników portalu
należy skonfigurować definiując następujące pliki konfiguracyjne.
dbLdap.properties
portalId=[identyfikator portalu]
dataSource=ikdev #nazwa
bazy źródłowej
dataSource.type=[db|ldap] #typ bazy źródłowej
dataTarget=ldaptest #nazwa bazy docelowej
dataTarget.type=[db|ldap] #typ bazy docelowej
#definicja
parametrów konfiguracyjnych relacyjnej bazy danych
#ikdev -
oznaczenie bazy, zdefiniowane powyżej
ikdev.db.connectString=jdbc:oracle:thin:@[host]:1521:[nazwa bazy danych]
ikdev.db.user=[nazwa konta bazy danych]
ikdev.db.password=[hasło do bazy danych]
ikdev.db.driverClassName=oracle.jdbc.driver.OracleDriver
ikdev.db.maxConnections=10
#definicja
parametrów konfiguracyjnych katalogowej bazy danych
# ldaptest -
oznaczenie bazy, zdefiniowane powyżej
ldaptest.ldap.minPoolSize=5
ldaptest.ldap.maxPoolSize=10
ldaptest.ldap.Host=[host]
ldaptest.ldap.Port=[port]
ldaptest.ldap.AuthDN=[DN użytkownika bazy
katalogowej]
ldaptest.ldap.AuthPW=[hasło użytkownika bazy
katalogowej]
ldaptest.ldap.RootDN=[korzeń drzewa w katalogu]
#UWAGA:
Interfejs służący do składowania danych w bazie katalogowej wykorzystuje
#mechanizmy
relacyjnej bazy danych do generowania unikalnych identyfikatorów użytkowników.
#Dostęp do bazy
relacyjnej należy zdefiniować następująco:
ldaptest.db.connectString=jdbc:oracle:thin:@[host]:1521:[nazwa
bazy danych]
ldaptest.db.user=[nazwa konta bazy danych]
ldaptest.db.password=[hasło do bazy danych]
ldaptest.db.driverClassName=oracle.jdbc.driver.OracleDriver
ldaptest.db.maxConnections=10
log4j.props
# global
log4j.rootCategory=ALL, LC, LF
# ograniczenia
log4j.category.man7=ERROR, LC
log4j.category.PoolManStat=ERROR, LC
log4j.category.pl.psnc.portal.sql=ERROR, LC
#log4j.category.pl.psnc.portal.cache=DEBUG, LC
# console
log4j.appender.LC=org.apache.log4j.ConsoleAppender
log4j.appender.LC.layout=org.apache.log4j.PatternLayout
log4j.appender.LC.Threshold=ALL
log4j.appender.LC.layout.ConversionPattern=%d
%-11t %-5p %-25c %m%n
# global file
log4j.appender.LF=org.apache.log4j.RollingFileAppender
log4j.appender.LF.File=[ścieżka
do pliku logu]
log4j.appender.LF.MaxFileSize=1MB
log4j.appender.LF.MaxBackupIndex=9
log4j.appender.LF.layout=org.apache.log4j.PatternLayout
log4j.appender.LF.layout.ConversionPattern=%d
%-11t %-5p %-25c %m%n
Do poprawnego działania aplikacja wymaga wirtualnej
maszyny Javy w wersji 1.4 oraz dostępności następujących bibliotek:
log4j-1.2.8.jar - pakiet log4j
joshua40-core.jar - pakiet portalowy Joshua
freemarker.jar - pakiet obsługi szablonów Freemarker
poolman.jar - pakiet z implementacją puli połączeń do bazy
danych
classes12.jar - pakiet sterowników JDBC firmy Oracle
ocrs12.jar - pakiet sterowników JDBC firmy Oracle
dbldap.jar - pakiet aplikacji
ldapfilt41.jar - pakiet sterowników dla dostępu do bazy
katalogowej LDAP
ldapjdk41.jar - pakiet sterowników dla dostępu do bazy
katalogowej LDAP
ldapsp41.jar - pakiet sterowników dla dostępu do bazy katalogowej
LDAP
Uruchomienie aplikacji należy poprzedzić utworzeniem
konta docelowej bazy danych, utworzeniem docelowego schematu danych i
zdefiniowaniem plików konfiguracyjnych. Uruchomienie aplikacji realizowane jest
z linii poleceń.
Aplikacja przyjmuje następujące parametry
uruchomieniowe:
DbLdapCopy [-mix] [-props
s] [-probe i] [-package i] [-mcprob d]
[-fcprob
d] [-lcprob d] [-ecprob d] [-pcprob d] [-prprob d]
gdzie:
-mix -> kopiuj z anonimizacją
danych
-props s -> ścieżka do pliku z własnościami
-probe
i -> liczba
rekordów do skopiowania (jeśli nie cała baza)
-package
i ->
wielkość pakietu jednorazowo kopiowanego/anonimizowanego
-mcprob
d ->
prawdopodobieństwo jednorazowej zmiany numeru telefonu komórkowego
-fcprob d -> prawdopodobieństwo jednorazowej zmiany imienia
-lcprob d -> prawdopodobieństwo jednorazowej zmiany nazwiska
-ecprob
d ->
prawdopodobieństwo jednorazowej zmiany adresu e-mail
-pcprob d -> prawdopodobieństwo jednorazowej zmiany własności
-prprob
d ->
prawdopodobieństwo jednorazowego przeniesienia własności
s -
łańcuch znaków
i - liczba całkowita
d - liczba zmiennoprzecinkowa [0-1]
Przykładowe uruchomienie, w którego wyniku nastąpi
skopiowanie 200 rekordów opisujących użytkowników wraz z anonimizacją ich
danych osobowych.
java
-Dlog4j.configuration=file:log4j.props -classpath \
.\lib\dbldap.jar; \
.\lib\ldapfilt41.jar;
\
.\lib\ldapjdk41.jar;
\
.\lib\ldapsp41.jar; \
.\lib\log4j-1.2.8.jar;
\
.\lib\joshua40-core.jar;
\
.\lib\classes12.jar;
\
.\lib\nls_charset12.jar;
\
.\lib\ocrs12.jar; \
.\lib\poolman.jar; \
.\lib\freemarker.jar
\
pl.psnc.dbldap.DbLdapCopy
-props .\DbLdapCopy.properties -mix -probe 200
Zaprezentowana aplikacja pozwala na kopiowanie
danych użytkowników portalu działającego w oparciu o pakiet portalowy Joshua.
Aplikacja została zaimplementowana w języku Java i wykorzystuje mechanizmy
dostarczane przez zunifikowany interfejs zarządzania użytkownikami pakietu
portalowego Joshua.
Aplikacja konfigurowana jest za pomocą pliku
konfiguracyjnego, w którym określane są parametry źródłowej oraz docelowej bazy
danych (relacyjnej lub LDAP), co pozwala w łatwy sposób dokonywać kopiowania
danych. Przed uruchomieniem aplikacji konieczne jest przygotowanie docelowej
bazy danych i utworzenie w niej właściwego schematu danych. Wykonywane operacje
kopiowania danych są logowane do pliku z wykorzystaniem pakietu log4j.
Wykorzystanie aplikacji pozwoli wykonywać kopie baz danych użytkowników portali działających w oparciu o pakiet portalowy Joshua w celu ewentualnej migracji danych i tworzenia środowisk testowych rozwijanych portali.
[ 1 ] |
T.A. Howes, M.C. Smith, G.S. Good
"Understanding and Deploying LDAP Directory Services", 1999 |
[ 2 ] |
Netscape Directory SDK for Java http://developer.netscape.com/tech/directory/index.html |
[ 3 ] |
Ustawa z dnia 29
sierpnia 1997 o Ochronie danych osobowych (Dz.U. 1997 Nr 133 poz. 883) http://isip.sejm.gov.pl/PRAWO.nsf/Main/WDU19971330883?OpenDocument |
[ 4 ] |
Opis portalu działającego w oparciu o pakiet portalowy Joshua |