Translate

четвер, 27 листопада 2014 р.

How to sync Google Apps account with own LDAP installation

У цій статті я розкажу про установку та налаштування Google Apps Directory Sync. За допомогою GADS можна автоматично синхронізувати акаунти користувачів, груп, на стороні аккаунту Google, з сервером LDAP (наприклад, з Microsoft Active Directory або Lotus Domino, openLDAP та ін). Додаток підключається до каталогу Google Apps і додає або видаляє акаунти користувачів згідно з описаною політикою.

Для роботи GADS звісно необхідно працюючий LDAP-сервер, a про його установку я писав ось тут.

Установка може проходити на будь-якому сервері та операційній системі (окрім OS X), для ОС Linux програмі необхідний Xserver (точніше X11), адже програма не має повнофункціонального CLI-інтерфейсу. Надалі синхонізацію можна виконувати автоматично, наприклад, через cron, за допомогою sync-cmd.

Ілюстрація роботи GADS. Особливо то і нічого додати.


Сама установка не має викликати складнощів. Її краще проводити від користувача, котрий у майбутньому буде автоматично синхронізувати дані, тобто він звичайного користувача, без ніяких особливих прав.

# wget http://dl.google.com/dirsync/dirsync-linux64.sh
# bash dirsync-linux64.sh

Установщик запитає про місце установки, щось типу /home/user/GoogleAppsDirSync та запропонує створити лінку в /usr/local/bin

Далі - найцікавіше. Приведу спочатку приклад запису користувача в OpenLDAP і які поля для нього присутні:

dn: cn=ipeacocks,cn=people,ou=Company,dc=company,dc=com
c: UA
cn: ipeacocks
employeetype: System Administrator
gidnumber: 500
givenname: Vasyl
homedirectory: /home/ipeacocks
host: myserver.net
l: Kyiv
loginshell: /bin/bash
mail: ipeacocks@company.net
o: Company
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
objectclass: shadowAccount
objectclass: ldapPublicKey
objectclass: extensibleObject
othermailbox: my_alias@company.net
othermailbox: my_alias2@company.net
sn: Pupkin
sshpublickey: ssh-rsa AAAAB3NzaC1....jIqvkFGxvUSK+Q== RSA-1024
st: 38 Test Street
telephonenumber: +1 111 555 3155
uid: ipeacocks
uidnumber: 1000
userpassword: {SHA}PaSP79GVaHdz4FWI/+qhS8crp8c=

Відкриваємо програму і налаштовуємо. Скріншотів буде багато - тому має бути не складно.

Обираємо, що плануємо синхронізувати.  Це групи (мейл-листи) та акаунти користувачів.


Вказуємо домен, котрий вже прив’язаний до Google-аккаунту та аккаунт-адміністратор. Як прив'язати свій домен, здається, непогано описано тут.


Обираємо тип сервера з яким GADS буде синхронізуватись. У нашому випадку - це OpenLDAP, проте, як я вже говорив, є інші варіанти. Далі вказуємо хостнейм LDAP-серверу та порт на якому він працює. Також необхідно зазначити користувача та пароль, використовуючи які GADS буде опитувати LDAP-сервер. У моєму випадку це адмін-користувач, котрий може бачити всі поля до кожного запису LDAP. Не слід забувати також про базовий DN, на рівні якого зберігаються звичайні користувачі.


Указуємо атрибут запису користувача LDAP в якому зберігається пошта, ідентифікатор та псевдонім (otherMailbox). Останнє, звісно, якщо зберігається на сервері.

Не будемо видаляти користувачів, котрих вже немає в openLDAP, для чого встановлюємо необхідну галочку.


Вказуємо додаткові атрибути для кожного майбутнього аккаунту і де їх шукати. Звісно, що кожен атрибут має існувати в openLDAP. Свій набір атрибутів для кожного користувача я навів вище. Раджу обрати SHA1 у якості функції-хешу паролів, адже, наприклад, MD5 вже не вважається надійним.


Пишемо правило пошуку записів, тобто де саме GADS має шукати нових користувачів. Для цього достатньо лише вказати objectClass.


Політики синхронізації.


Налаштування груп. Групи у нашому випадку - це, по факту, поштові розсилки. У нашій схемі базовий DN для груп -  ou=mail-aliases,ou=Company,dc=company,dc=com, а objectClass - organizationalUnit. Ось так виглядає запис групи на LDAP сервері:

dn: ou=kyiv,ou=mail-aliases,ou=Company,dc=company,dc=com
email: ipeacocks@company.com
email: test@mail.ru
email: me@me.com
objectclass: organizationalUnit
objectclass: top
objectclass: extensibleObject
ou: kyiv

Відповідно заповнюємо поля:


Політики синхронізації груп.


Куди і від імені кого слати повідомлення щодо результатів синхронізації.


Шлях до файлу логів і рівень логування.


Якщо кожен із етапів налаштовано вірно - з'явиться синя галочка навпроти кожного пункту. Далі можна тиснути симуляцію синхронізації і саму синхронізацію, якщо ж все вірно.


Ці ж самі дані будуть записані до файлу логів, про які я говорив вище.


Зберігаємо результуючий xml і надалі синхронізуємо Google Apps через cron:

*/10 * * * * /home/user/GoogleAppsDirSync/sync-cmd -c ldap_current.xml --apply &> /dev/null

На цьому - все, деяку додаткову інформацію можна знайти за посиланнями наведеними нижче.

Посилання:

http://www.hongkiat.com/blog/google-apps-for-beginners/
http://commondatastorage.googleapis.com/enterprisetraining/gapps/admin/DirSync_GoogleApps/en/DirSync_GoogleApps.html
https://support.google.com/a/answer/106368?hl=ru
https://static.googleusercontent.com/media/www.google.com/uk//support/enterprise/static/gapps/docs/admin/en/gads/admin/gads_admin.pdf
http://www.techrepublic.com/blog/google-in-the-enterprise/save-time-use-google-apps-with-microsoft-active-directory/
http://www.classthink.com/2013/05/17/implementing-google-apps-google-apps-directory-sync-gads/
http://www.classthink.com/2013/05/22/google-apps-directory-sync-gads-part-2-google-apps-configuration/
http://www.classthink.com/2013/06/17/google-apps-directory-sync-gads-part-3-ldap-configuration/
http://www.classthink.com/2014/02/19/deleted-suspended-google-apps-directory-sync/

Немає коментарів:

Дописати коментар