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

 

 

1       Wstęp. 3

2       Środowisko działania aplikacji. 4

3       Funkcjonalność aplikacji. 6

3.1     Kopiowanie danych.. 6

3.2     Anonimizacja danych.. 7

4       Schematy danych.. 9

4.1     Skrypt tworzący schemat danych w bazie relacyjnej (Oracle) 9

4.2     Schemat danych w bazie katalogowej (iPlanet Directory Server) 10

5       Konfiguracja i uruchomienie.. 13

5.1     Konfiguracja aplikacji 13

5.2     Uruchomienie aplikacji 14

6       Podsumowanie.. 16

7       Bibliografia.. 17

 

 

 


1         Wstęp

 

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.

 


2         Środowisko działania aplikacji

 

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.


3         Funkcjonalność aplikacji

 

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.

3.1      Kopiowanie 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

 

3.2      Anonimizacja 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.

 


4         Schematy danych

 

Poniżej zaprezentowano skrypt tworzący obiekty w relacyjnej bazie danych oraz opis struktury danych, w formacie LDIF, przechowywanych w serwerze katalogowym.

4.1    Skrypt tworzący schemat danych w bazie relacyjnej (Oracle)

 

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

)

/

 

4.2    Schemat danych w bazie katalogowej (iPlanet Directory Server)

 

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' )

 


5         Konfiguracja i uruchomienie

5.1      Konfiguracja aplikacji

 

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

 

5.2      Uruchomienie aplikacji

 

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


6         Podsumowanie

 

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.

 


7         Bibliografia

 

[ 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

http://www.man.poznan.pl/badania/interklasa/index.html