Наверх ▲

Альтернатива Active Directory в мире UNIX

Филипп Торчинский Филипп Торчинский С 1994 года популяризирует открытые технологии и UNIX-решения. Работал экспертом по ОС Solaris в Sun Microsystems и Oracle. Автор двух книг по администрированию UNIX и Solaris.

Филипп Торчинский: Добрый день! Сегодня я почти не буду говорить про Open Solaris, хотя обычно я как раз об этом рассказываю. 

Сегодня мы поговорим о том, как и зачем можно использовать те или иные альтернативы службы каталогов Active Directory в UNIX. Строго говоря, это будут не совсем альтернативы AD. Но я еще раз озвучу свое мнение о том, как будет развиваться ситуация в дальнейшем, в каком направлении. Немного расскажу о том, как настраивать те решения, которые будут популярны в будущем, - опять же, по моему мнению. В докладе предусмотрен отдельный кусок об Identity Manager.

Как правило, я рассказываю о вещах, которые я своими руками настраивал и о которых могу все рассказать. Сегодня будет немного по-другому. Я буду рассказывать о концепции и упомяну то, что сам настраивал. Я довольно много пользовался этим сервисом. Могу рассказать, как он выглядит с точки зрения пользователя, и что в этом может быть хорошего или плохого.

Одна из главных задач любого проектировщика любой системы - избежать ситуации, когда мы с помощью какого-нибудь очень мощного инструмента делаем какую-нибудь довольно простую работу. Хотя именно так часто и происходит в жизни. 

Наверняка многие из вас наблюдали набор примитивных текстов, например, в Microsoft Word или в OpenOffice Writer. В принципе, эти тексты достойны того, чтобы их набирали в текстовом терминале, в Notepad или в любом его аналоге. Но этим текстам так повезло, что их набирают в очень мощных редакторах.

Я, на самом деле, часто думаю об этом. Поскольку здесь собрались люди, от которых что-то зависит в этом мире, я надеюсь, что общими усилиями мы сможем привести ситуацию к состоянию, когда наши клиенты, наши сотрудники, и все, кто связан с нами, будут тратить меньше времени и ресурсов на выполнение простых действий сложными средствами.

Теперь я хотел бы снять шляпу перед разработчиками корпорации Microsoft. Мы с коллегами пришли к общему мнению, что в целом Active Directory — это хорошо. Хорошо, что это решение существует, им действительно можно пользоваться. Другое дело, что службу каталогов Active Directory часто используют там, где без нее было бы ничуть не хуже.

Что хорошего в Active Directory? Для чего его можно использовать?

Прежде всего, Active Directory подходит для управления пользователями (группами, ролями пользователей и так далее). Строго говоря, решение Active Directory непосредственно с этим связано, но не является средством обеспечения этого. Служба каталогов Active Directory позволяет выходить в сеть с разных компьютеров, обеспечивает функциональность перемещаемых профилей (англ. roaming profiles).

Эти профили стали моей головной болью на 2 года. Я был главой IT-отдела компании, где во всех офисах по всей стране использовались эти самые перемещаемые профили. Они могли иметь размер в 2 или 3 гигабайта и чудеснейшим образом тянуться из питерского офиса в московский офис, потому что сотрудник приехал сюда в командировку и решил поработать.

Это как раз характерный пример неэффективного использования неплохой концепции, при котором она оказывается жутко неудобной.

Кроме этого, Active Directory, естественно, используется для управления доступом, поскольку там написано, кому куда можно. Еще Active Directory довольно широко применяется в тех системах, где сеть гетерогенная. В этом случае мы настраиваем доступ через PAM, аутентификацию, доступ через Active Directory к каким-то ресурсам, которые физически лежат на компьютерах, никак не связанных с Active Directory. Например, у нас есть работающий под Linux сервер, на котором требуется раскладывать какие-то файлы. Естественно, можно использовать Active Directory и для аутентификации через веб.

Еще есть одна вещь, на которой я сегодня не буду останавливаться подробно. Просто яскажу, что это с помощью Active Directory делают. Как подобное реализовать для UNIX-приложений в UNIX-системах, я догадываюсь, но это никак не связано с темой доклада.

Это так называемые групповые политики и, в частности, управление приложениями, при котором мы для различных групп или пользователей можем по-разному настроить "поведение" конкретных приложений.

Эту штуку в той функциональности, о которой я сегодня буду рассказывать, никак не реализовывали, насколько мне известно. Это нужно делать либо другими средствами, либо добавлять к имеющимся средствам что-то еще.

Вообще для чего используются компьютеры (неважно, под UNIX или нет)? Целей много, но для каждой группы задач существует наиболее удобный протокол. У нас есть протокол SSH — он придуман для моих коллег системных администраторов. Понятно, что обычным людям он вряд ли нужен.

Протоколы FTP и HTTP нужны почти всем, кто хоть когда-нибудь что-нибудь заливал на хостинг. 

Естественно, всем нужна почта. Когда я, например, ставлю себе какую-то новую систему на компьютер или запускаю LiveCD и не вижу там работающей почты, меня это уже раздражает. Хотя еще лет пять назад я бы этому не удивился. Мобильный телефон, который не умеет читать e-mail, — это просто безобразие какое-то. Хотя от домашнего телефона мы такого не ждем, как правило.

Еще одна функциональность, которая, как правило, требуется в любой компании, где количество людей больше двух. Это возможность использования одинаковой рабочей среды на разных компьютерах. Это требуется везде — начиная от таких хрестоматийных вариантов, как группа операторов, сидящих в банке или в call-центре (последних может быть до человек 400 в ряд), и заканчивая менее распространенными вариантами — такими, как администрация университета, где сотрудники перемещаются из одного корпуса в другой. Всем этим людям нужно иметь одну рабочую среду на любом компьютере.

Про средства обеспечения этой рабочей среды я сейчас и расскажу. Эта часть доклада никак не связана с аналогами Active Directory. Это, скорее, некое решение, которое позволяет воплотить то, что часто делают с помощью Active Directory, но сильно не нагружает систему. Это очень простое решение. Скорее всего, многие из вас им уже пользовались или хотя бы видели его, или даже продавали его, — не знаю.

Есть такая старая штука, как терминал. Они существовали еще до 1969-го года. В 1969-м году, когда придумали UNIX, терминалы уже были. Неудивительно, что с терминалов все довольно хорошо работает. Современным вариантом терминала является то, что, например, в компании Sun называлось Sun Ray. Сейчас это по-прежнему называется Sun Ray, но производится уже в компании Oracle.

Аппаратная часть представляет собой X-Terminal с интернет-портом и USB-портом. Еще там есть аудиовыходы и входы. Можно подключить наушники, слушать любимую музыку, можно включить флешку — все будет работать замечательно. Плюс к этому — оно еще умеет читать смарт-карты, поэтому можно делать аутентификацию по смарт-картам.

Кроме Sun Ray существует еще один продукт (его название я не помню), который входит в семейство Virtual Desktop Infrastructure.

Это такой виртуальный Sun Ray. Когда вы приходите к начальнику и говорите: «Слушайте, такое дело, Петр Петрович, надо бы перевести нашу группу технической поддержки на терминалы, потому что они вместо того, чтобы быстро отвечать на вопросы, играют в „Косынку“ на том, что у них там стоит». Или: «Нам надоело чинить их блоки питания, потому что они каждую неделю выходят из строя, потому что так и не можем починить кондиционер».

Это, естественно, не слишком радует Петра Петровича, потому что нужно менять технику, техника вроде недавно была закуплена... Пять лет должен стоять компьютер, пока его не спишут, иначе нехорошо по бухгалтерии.

Можно вместо техники применить виртуальные Sun Ray. Поставить виртуальные рабочие станции. Решение будет работать на имеющейся системе и "делать вид", что оно как бы терминал.

С терминалами мы закончили. Теперь посмотрим, как устроена и для чего нам может понадобиться система, являющаяся в некотором смысле аналогом Active Directory. Я еще раз подчеркиваю, что она не является строгим функциональным аналогом.

Серверы приложений

Glassfish — это стандартный сервер приложений, который, вообще говоря, похож на Tomcat, но, в отличие от него, он еще умеет играть роль не только веб-контейнера, но и JB-контейнера (который Enterprise Java...). Кстати, то, что раньше назвалось просто Glassfish, теперь называется Oracle Glassfish Server.

Оно, например, может работать в Oracle Solaris. У меня оно работает в Open Solaris.

Этот сервер приложений позволяет разворачивать самые разные веб-приложения, в том числе Liferay. Про него я сегодня говорить особенно не буду. Тем из вас, кто еще не знает, что оно существует, мой совет: обратите внимание. Это классная штука. Я предполагаю, что в довольно скором будущем этого будет значительно больше, чем сейчас.

Думаю, через некоторое время — в течение года-двух — наверняка появятся Java-хостинги в России (за границей они уже есть). Liferay — это довольно удобная платформа, чтобы делать любые веб-сайты. В принципе, веб-сайт на Liferay — простенький, на 5 страниц, с контентом, с картинками, с минимальным оформлением — я сделал примерно за полчаса.

Еще есть реализация этого же портала, который называется WebSpace. Он основан примерно на том же коде, но был сделан внутри Sun. Liferay — это продукт сообщества, который к Sun имеет слабое отношение — компания Sun вкладывала очень немного денег и усилий в его создание.

Это был пример сервера приложений.

Теперь посмотрим, что стоит за сервером приложений. За сервером приложений стоит то, что позволяет нам аутентифицироваться на этом сервере приложений, а также позволяет этому серверу и работающим на нем приложениям определять наши права доступа к разным объектам.

Это Identity Manager, Directory Server и Access Manager. В принципе, компонентов, обеспечивающих аутентификацию и управление доступом к неким веб-ресурсам, может быть и больше, но это самое интересное.

Чтобы людям было удобно, довольно естественно предоставлять централизованный доступ, объединять веб-ресурсы логически (как правило) или организационно, финансово. Нужно, чтобы у людей была возможность заходить на один веб-ресурс и автоматически получать доступ ко всем остальным. Для этого придумали хорошо известную штуку под названием технология единого входа (SSO, Single Sign On). Раз выполнили вход — дальше все работает. Можно больше не входить в систему.

Это похоже на то, к чему мы привыкли, например, в системах Windows Client и Windows Server, когда мы "залогинились" один раз — и дальше по всем файлам "ходим".

Возникает резонный вопрос: часто ли нам нужно "ходить" по файлам? Из практики группы, где я работаю последние 3 года (даже больше), я вижу, что на самом деле "хождение" по файлам и хранение файлов в папках довольно часто не требуется. У меня есть собственный ноутбук, где есть все, что мне необходимо. Все, что наши группы делят между собой, лежит на общем вики.

Существуют разные варианты реализации вики. Это может быть бесплатный движок, который называется TWiki. Есть еще много решений, которые работают в таком же режиме. Функционирует много бесплатных хостингов, где можно, например, размещать какие-то проекты, — там вики предоставляется бесплатно как элемент управления проектом.

Это довольно популярная штука. Поэтому, в частности, когда вы думаете, какую инфраструктуру построить у себя в компании, вариант, когда у вас нет файлового сервера, но есть некий веб-ресурс, куда все закачивают файлы и берут их оттуда тоже (в соответствии с положенными им полномочиями), — это довольно логичная схема. Тем более что все больше и больше поднимается тема переноса ресурсов в веб.

Кстати, у меня была большая просьба к разработчикам 1С-продуктов: надо срочно придумать такую штуковину, которая называется web-based бухгалтерия. Мне ее ужасно не хватает.

Реплика:
— Есть.
Филипп Торчинский:
— Она совсем такая web-based? Я что-то упустил? Давно она есть?
Реплика:
           — Уже появилась.
Филипп Торчинский:
— Отлично. Спасибо вам большое! Видимо, я пропустил что-то за последние несколько месяцев и не видел. Полгода назад ее, по-моему, еще не было. Уже есть. Отлично. Спасибо вам за хорошую новость!

Теперь вернемся к технологии единого входа. Там удобно сделать, чтобы было два варианта обращения клиента к серверу единого входа.

Первый вариант — когда мы обращаемся к некоему веб-ресурсу, например, работающему на том же Glassfish. Это просто Java-приложение, которое обеспечивает единый вход (аутентификацию и дальнейшие действия). Оно обращается к PAM, который из привычных источников аутентификации "вытягивает" информацию.

Хорошо, если есть обратный вариант: мы обращаемся к PAM, а он — к серверу единого входа и умудряется у него что-то спросить.

Второй вариант, к сожалению, пока не реализован — по крайней мере, я не видел реализации. Первый вариант реализован, я даже его попробовал. Я постараюсь объяснить, как его воплотить.

В феврале этого года компания ForgeRock решила, что она сделает "forge" проекта OpenSSO, потому что компания Oracle, как известно, в феврале официально завершила сделку по покупке Sun.

Код OpenSSO проекта, с точки зрения ForgeRock, было бы интересно вытащить из репозитория и дальше с ним что-то сделать (поскольку лицензия позволяет). Отлично. Пока что никаких сведений о том, что Oracle что-нибудь плохое будет делать с OpenSSO, нет. Более того, есть сведения, что с ним все будет в порядке.

Почему я советую скачивать именно OpenAM, который и есть та же самая сборка, только от ForgeRock? Потому что на сайте ForgeRock лучше всего описано, как это устанавливать. Самое хорошее описание, как ставить OpenSSO, я видел там. 

Теперь нужно установить Glassfish. В Open Solaris нужно при распаковке установить флажок «поставить Glassfish» — он будет установлен. Можно просто скачать Glassfish и запустить программу установки.

Запускаем Glassfish. Дальше вводим команду «deploy opensso.war». После легкой настройки в виде ввода имен и паролей администратора у нас получается работающая система аутентификации.

Далее нужно запустить демон/daemon amunixd, и системой уже можно пользоваться. OpenSSO будет работать через PAM. Неизвестно, нужно ли вам это, — может быть, вам нужно что-то еще. Но если вам нужно, чтобы все через PAM работало, то это делается, как я описал.

Я рассказал, как правильно и быстро в OpenSolaris поставить Glassfish. Точнее, как поставить — это понятно. Интереснее — как настроить домен.

Объясню вкратце, что такое домен применительно к Glassfish. У нас есть некий сервер приложений, и мы хотим на нем развернуть какое-то приложение. Это приложение нельзя развертывать в вакууме. Нужно ему создать какую-то оболочку, куда будут записываться все файлы, которые с ним связаны, и какие-то настройки. Внутри этой оболочки будут развертываться еще какие-то дополнительные компоненты приложений и так далее.

Эта штука называется домен. Она к домену в смысле нечто.ru не имеет никакого отношения. К интернет-доменам это не имеет отношения. Это просто название для совокупности объединенных, связанных между собой компонентов. В принципе, у домена будет какое-то доменное имя (с точки зрения интернет-домена), но это уже потом. Вы его настроите при необходимости.

Теперь самый важный момент. При настройке единого входа нужно указать полностью определенное доменное имя.

На самом деле, в инструкции от ForgeRock крупными буквами на желтом фоне написано: «Напишите FQDN в файл /etc/hosts». Если этого не сделать, то будет выдана малопонятная ошибка. Получится странная диагностика. Что не так, будет абсолютно непонятно.

Он скажет, что вы не сможете обратиться к 80-му порту. Почему не можете? Неизвестно. Важный момент. При настройке этой конфигурации обязательно указывайте в файле /etc/hosts полностью определенное имя вашего хоста.

Заходите по адресу, выполняете вход (по умолчанию администратора зовут amadmin), выбираете Authorization->Unix. Можно выбрать другие варианты авторизации, если требуется. Но в Unix все будет работать через PAM, соответственно.

Зачем нужен Identity Manager и что это такое?

Identity Manager от Oracle "умеет" работать с кучей разных источников информации. Причем в одном источнике информации некий объект зовется Иван Петрович, в другом он Ваня, в третьем он Иван. В этих источниках информации что-то еще про него написано.

Что важно? Что в этих источниках информации не обязана содержаться информация типа первичного ключа (англ. primary key). Нет уникального идентификатора, который лежит в каждом из этих источников. Просто с помощью инструментов управления Identity Manager вы можете разными способами связать между собой разные записи из разных источников информации.

Плюс к этому Identity Manager обеспечивает синхронизацию. Если, например, кого-нибудь увольняют с работы, то его учетная запись удаляется из списка сотрудников, еще из какого-то списка — например, должников или кредиторов организации. В общем, из всех имеющихся источников информации запись удаляется.

Соответственно, если происходит модификация, например, меняются какие-то поля, то это тоже синхронизируется между разными источниками информации, если эти поля там есть.

В качестве стратегического проекта у Oracle остался Oracle Identity Manager, который существовал и раньше. Проект, который назывался Sun Identity Manager, тоже остается. Он будет существовать в прежнем режиме, но главным продуктом, который продает Oracle, будет Oracle Identity Managemer.

Identity Manager — это, на самом деле, вещь, которая стоит каких-то осмысленных денег. Я знаю, что разные клиенты Sun и Oracle в России его действительно покупают.

Есть еще сущность, которая называется Directory Server, о которой мы чуть раньше говорили. Это просто один из вариантов источников информации для Identity Manager. Как правило, это обычный LDAP-сервер. Есть конкретный продукт, он называется OpenDS, который компания Oracle обещает поддерживать. Это просто LDAP-сервер, написанный на языке Java.

Использовать его удобно. Если вам не хочется собирать ничего лишнего, вы можете просто взять этот OpenDS и развернуть его на том же Glassfish.

Расскажу про взаимодействие между клиентом, сервером приложений, Access Manager и Identity Manager.

Есть клиент, который спрашивает доступ к файлу, например, у DEP-сервера приложений с веб-интерфейсом под названием веб-контейнер. К файлу определены не те права доступа. Сервер приложений "спрашивает" у программы Access Manager, можно ли дать доступ к этому файлу.

Access Manager обращается к Identity Manager: «Что у нас с идентичностью такого товарища?» Ему возвращается информация о том, что у товарища в системе роль суперадминистратора. Access Manager говорит: «Этому можно». Информация направляется серверу приложений, например, Glassfish: «Да, можно». Файл выдается.

Вероятно, вы знаете, что в nsswitch.conf в тех системах, где он есть, — например, в Debian и в OpenSolaris можно написать слово ldap в том месте, где определяется, откуда брать аутентификационную информацию. Сведения о том, как это настраивать, есть на на opennet, где описано необходимое добавление к схеме LDAP.

Это самое главное — то, как будет выглядеть будущее, если мы не будем слишком сильно нажимать на него, чтобы оно выглядело как-то иначе. Вариант первый — на что, я очень надеюсь, должны перейти все госслужбы, которые сейчас сообщают мне в окошко: «Извините, мы не можем ничего сделать. У нас компьютер завис, а системный администратор придет завтра». В такие места, безусловно, нужно ставить терминалы, чтобы был один сервер, где системный администратор есть всегда.

Кроме этого, очевидно, есть ситуации, при работе с САПР, когда придется составлять сервер и какие-то рабочие станции, и где приложения с какими угодно клиентами (например, с мобильными телефонами) для всего остального.

Спасибо большое вам за информацию, что 1С:Бухгалтерия уже сделала то, чего мне не хватало.

Спасибо вам! У меня, кажется, осталось 30 секунд на ответы на вопросы.

Вопросы и ответы

Вопрос:
— Почему OpenSSO лучше, чем традиционный Kerberos?
Филипп Торчинский:
— Это хороший вопрос. На самом деле, OpenSSO и вообще любые виды единого входа, насколько я представляю сферу их использования, прежде всего, используются в веб-проектах.
Скажем так, я не уверен, что это ответ точно на этот вопрос. Но я думаю, что для Kerberos сфера применения уже более широка
Вопрос:
— Вопрос про OpenSolaris. Когда ожидается версия? Насколько я знаю, там достаточно давно не было свежих сборок.
Филипп Торчинский:
— Свежие сборки появляются каждые две недели и по-прежнему доступны на сайте www.genunix.org. Поэтому как раз со сборками нет проблем.
Релиз ожидался изначально в марте. Текущее состояние дел: объявлено, что он появится в первом полугодии 2010-го года. Я, к сожалению, не знаю более подробной информации. Это все, что мне сказали. Спасибо большое!

Комментарии

Нет ни одного комментария

Только пользователи могут оставлять комментарии

Возможно, вам будет интересно:

Александр Зиза

Александр Зиза

Занимается практикой развития лидеров и формирования управленческих команд для реализации digital-проектов с 2007 года. Организатор конференций по управлению в digital-культуре: TeamLeadConf, Aletheia-Business. Проводит программы по развитию управленческого мышления и трансформации культуры.

Александр Зиза демонстрирует техники отбора будущих сотрудников, которыми может воспользоваться непосредственный руководитель.

Андрей Гулин

Андрей Гулин

Ведущий разработчик в Яндекс.

Представители крупнейших ИТ-компаний Рунета и мирового Интернета обсуждают вопросы использования потоков и особенности применения многоядерных процессоров.

Андрей Аксенов

Андрей Аксенов

Пишет код на всём подряд, показывает другим, как. В удачные дни код удается сносить, это обязательно показывает другим и заставляет "точно так же" втройне сильнее. Всю сознательную жизнь из этого выходят разные движки, прямо проклятие какое-то.

Доклад Андрея Аксенова (Sphinx) о том, как устроена релевантность, оценки качества и т. п. в поиске.