LDAP i Active Directory Plugin dla Baculi

Kolejny zestaw pluginów dla środowiska backupowego Bacula wchodzi w fazę stabilizacji. Tym razem są to bliźniacze pluginy służące do wykonywani kopii zapasowych i odtwarzania na poziomie pojedynczych obiektów w środowiskach Microsoft Active Directory oraz LDAP Directory Server. Pluginy otrzymały nazwy odpowiednio:

Pluginy te instalowane są po stronie klienckiej (File Daemon). Aktualnie pluginy wspierają:

  • backupy poziomów: Full, Diff, Incr, Since
  • pełny tryb Accurate (w backupach innych niż pełne backupuje także informację o skasowanych obiektach a nie tylko dodanych/zmodyfikowanych)
  • wewnętrzny zapis danych zbliżony do formatu LDIF (pełny LDIF dla trybu tektowego)
  • mieszany tryb zapisu wartości atrybutów danych (tekstowy lub binarny) umożliwiający uzyskanie efektywnego wielkościowo backupu (30% mniejszy od standardowego LDIF'a)
  • bezpośrednie wybieranie odtwarzanych danych poprzez dowolny interfejs środowiska Bacula (cli, gui, web)
  • odtwarzanie obiektów, atrybutów i ich wartości poprzez listę modyfikacji zgodną z LDIF dzięki czemu odtwarzanie nie ingeruje w aktualną strukturę danych

Instalacja i uruchomienie pluginów jest trywialna. Pluginy muszą zostać wgrane do katalogu na pluginy - dla przypomnienia w Bacula Enterprise jest to: /opt/bacula/plugins. Następnie definiujemy zakres backupu - w parametrze konfiguracyjnym FileSet:

  Fileset {
    Name = "ldap-objects"
       Include {
          Plugin = "ldap:/opt/bacula/etc/ldap.conf"
       }
  }

  Fileset {
    Name = "msad-objects"
       Include {
          Plugin = "msad:/opt/bacula/etc/msad.conf"
       }
  }

Na zakończenie potrzebujemy poprawnego pliku konfiguracyjnego, którego zawartość definiuje nasze środowisko AD lub serwera LDAP. Dla przykładu może to być:

#
# Config file for ldap plugin
#
LDAPURI = "ldap://localhost/"
BINDDN = "cn=admin,dc=inteos,dc=pl"
BINDPASS = "secret"
BASEDN = "dc=inteos,dc=pl"

I to tyle. Możemy wykonywać backupy. Oczywiście musimy posiadać BINDDN z odpowiednimi prawami. Jak już backupy działają poprawnie to odtwarzanie będzie jeszcze prostsze:

(...)
cwd is: /
$ cd ldap:/dc=pl/dc=inteos
cwd is: ldap:/dc=pl/dc=inteos/
$ dir
-rw-r--r-- 1 root  root     568  2012-03-17 08:44:34  ldap:/dc=pl/dc=inteos/cn=admin
drwxr-xr-x 1 root  root     480  2012-03-11 19:30:55  ldap:/dc=pl/dc=inteos/ou=Accounting/
drwxr-xr-x 1 root  root     491  2012-03-11 19:28:49  ldap:/dc=pl/dc=inteos/ou=Administrative/
drwxr-xr-x 1 root  root     494  2012-03-11 19:28:49  ldap:/dc=pl/dc=inteos/ou=Human Resources/
drwxr-xr-x 1 root  root     479  2012-03-11 19:28:49  ldap:/dc=pl/dc=inteos/ou=Janitorial/
drwxr-xr-x 1 root  root     479  2012-03-11 19:32:18  ldap:/dc=pl/dc=inteos/ou=Management/
drwxr-xr-x 1 root  root     470  2012-03-11 19:28:49  ldap:/dc=pl/dc=inteos/ou=Payroll/
drwxr-xr-x 1 root  root     464  2012-03-11 19:28:49  ldap:/dc=pl/dc=inteos/ou=Peons/
drwxr-xr-x 1 root  root     506  2012-03-11 19:30:55  ldap:/dc=pl/dc=inteos/ou=Product Development/
drwxr-xr-x 1 root  root     494  2012-03-11 19:28:49  ldap:/dc=pl/dc=inteos/ou=Product Testing/
drwxr-xr-x 1 root  root     450  2012-03-05 20:55:47  ldap:/dc=pl/dc=inteos/ou=groups/
drwxr-xr-x 1 root  root     448  2012-03-06 14:11:20  ldap:/dc=pl/dc=inteos/ou=hosts/
drwxr-xr-x 1 root  root     450  2012-04-10 10:48:32  ldap:/dc=pl/dc=inteos/ou=people/
$ add "ou=Product Testing"
121 files marked.
$ cd ou=people
cwd is: ldap:/dc=pl/dc=inteos/ou=people/
$ dir
-rw-r--r-- 1 root  root 1006618  2012-04-10 10:48:32  ldap:/dc=pl/dc=inteos/ou=people/uid=john
$ add *
1 file marked.

lub w przypadku MSAD:

$ dir
drwxr-xr-x 1 root  root     924  2012-03-21 18:50:52  msad:/DC=pl/DC=inteos/DC=msad/CN=Builtin/
drwxr-xr-x 1 root  root     621  2012-03-21 18:50:50  msad:/DC=pl/DC=inteos/DC=msad/CN=Computers/
drwxr-xr-x 1 root  root     741  2012-03-21 18:50:50  msad:/DC=pl/DC=inteos/DC=msad/CN=ForeignSecurityPrincipals/
-rw-r--r-- 1 root  root     723  2012-03-21 18:50:50  msad:/DC=pl/DC=inteos/DC=msad/CN=Infrastructure
-rw-r--r-- 1 root  root     630  2012-03-21 18:50:50  msad:/DC=pl/DC=inteos/DC=msad/CN=LostAndFound
drwxr-xr-x 1 root  root     625  2012-03-21 18:50:51  msad:/DC=pl/DC=inteos/DC=msad/CN=Managed Service Accounts/
-rw-r--r-- 1 root  root     663  2012-03-21 18:50:51  msad:/DC=pl/DC=inteos/DC=msad/CN=NTDS Quotas
drwxr-xr-x 1 root  root     579  2012-03-21 18:50:50  msad:/DC=pl/DC=inteos/DC=msad/CN=Program Data/
drwxr-xr-x 1 root  root     583  2012-03-21 18:50:50  msad:/DC=pl/DC=inteos/DC=msad/CN=System/
drwxr-xr-x 1 root  root     601  2012-03-21 18:50:50  msad:/DC=pl/DC=inteos/DC=msad/CN=Users/
-rw-r--r-- 1 root  root    1495  2012-04-10 16:19:32  msad:/DC=pl/DC=inteos/DC=msad/CN=backup
drwxr-xr-x 1 root  root     775  2012-03-21 18:50:50  msad:/DC=pl/DC=inteos/DC=msad/OU=Domain Controllers/

Po zaznaczeniu obiektów do odtworzenia są one wgrywane do serwera. Pluginy te są rewelacyjnym uzupełnieniem dotychczas dostępnych metod bakupu zarówno Active Directory (za pomoca pluginu VSS) jak i serwerów LDAP.