Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

PAM-аутентификация

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

Подключаемые модули аутентификации (Pluggable Authentication Modules, PAM) предоставляют приложениям единый интерфейс для работы с различными механизмами аутентификации. Вместо прямого взаимодействия с каждой системой аутентификации приложение обращается к PAM для проверки учетных данных пользователей. Это позволяет изменять и комбинировать методы аутентификации без необходимости вносить изменения в код приложения.

Доступом к кластеру Greengage DB можно управлять с помощью PAM, интегрируя его с внешней системой аутентификации. Распространенным вариантом является использование каталога LDAP, например сервера FreeIPA, что позволяет Greengage DB работать с существующими учетными записями организации. В этой статье описывается процесс настройки LDAP-аутентификации через PAM в Greengage DB.

Предварительные требования

Для демонстрации интеграции кластера Greengage DB с сервером FreeIPA используются следующие хосты и параметры домена IPA:

  • Мастер-хост: FQDN — mdw.example.com, операционная система — Ubuntu.

  • Хост FreeIPA: имя — ipa.example.com, FQDN — ipa.example.com, операционная система — RHEL или CentOS.

  • Область (realm): EXAMPLE.COM.

Используйте имена хостов, полные доменные имена (FQDN) и имя области, соответствующие вашему окружению.

ПРИМЕЧАНИЕ

Разные операционные системы предоставляют разные модули аутентификации LDAP для PAM. В этой статье описано, как настроить LDAP-аутентификацию через PAM на мастер-хосте Greengage DB, работающем на Ubuntu, с помощью пакета libpam-ldapd. В операционных системах RHEL и CentOS для этих целей обычно используется служба sssd.

Настройка сервера FreeIPA

Войдите на хост FreeIPA под пользователем с правами суперпользователя:

$ ssh sampleuser@ipa.example.com

В этом примере имя пользователя — sampleuser.

Установка библиотек FreeIPA

Для установки библиотек FreeIPA выполните следующую команду:

$ sudo yum install ipa-server

Настройка сервера FreeIPA

Выполните команду ниже, чтобы запустить настройку сервера FreeIPA в неинтерактивном режиме:

$ sudo ipa-server-install \
  --unattended \
  --hostname=ipa.example.com \
  --domain=example.com \
  --realm=EXAMPLE.COM \
  --ds-password=87654321 \
  --admin-password=12345678
ВАЖНО

Не рекомендуется указывать пароли в открытом виде при настройке сервера FreeIPA в неинтерактивном режиме. В качестве более безопасной альтернативы вы можете загружать пароли из переменных окружения.

Когда настройка сервера FreeIPA завершена, проверьте состояние сервисов с помощью команды ipactl status:

$ sudo ipactl status

В частности, вывод должен показывать, что сервисы Directory, krb5kdc и kadmin запущены:

Directory Service: RUNNING
krb5kdc Service: RUNNING
kadmin Service: RUNNING

Создание пользователя FreeIPA

Аутентификация в качестве администратора

Для выполнения административных действий автоматически создается пользователь admin. Выполните команду kinit, чтобы аутентифицироваться под пользователем admin:

$ kinit admin

Когда будет показано данное приглашение, введите пароль, заданный в параметре admin-password во время настройки сервера FreeIPA:

Password for admin@EXAMPLE.COM:

Создание обычного пользователя

Создайте обычного пользователя FreeIPA с помощью команды ipa user-add:

$ ipa user-add alice \
  --first=Alice \
  --last=Johnson \
  --password

Введите пароль и нажмите Enter, когда будут показаны эти приглашения:

Password:
Enter Password again to verify:

Результат должен выглядеть следующим образом:

------------------
Added user "alice"
------------------
  User login: alice
  First name: Alice
  Last name: Johnson
  Full name: Alice Johnson
  Display name: Alice Johnson
  Initials: AJ
  Home directory: /home/alice
  GECOS: Alice Johnson
  Login shell: /bin/sh
  Principal name: alice@EXAMPLE.COM
  Principal alias: alice@EXAMPLE.COM
  User password expiration: 20250109101949Z
  Email address: alice@example.com
  UID: 1389000001
  GID: 1389000001
  Password: True
  Member of groups: ipausers
  Kerberos keys available: True

Настройка мастера Greengage DB

Установка пакета PAM для LDAP

  1. Войдите на мастер-хост под пользователем с правами sudo.

  2. Обновите индекс пакетов в системе:

    $ sudo apt update
  3. Установите пакет libpam-ldapd:

    $ sudo apt install libpam-ldapd
  4. Во время установки отображается несколько диалоговых окон настройки. Укажите следующие обязательные параметры:

    • LDAP server URI — URI LDAP-сервера, например: ldap://ipa.example.com/.

    • LDAP server search base — базовый DN для LDAP-запросов, например: dc=example,dc=com.

    Во всех остальных диалоговых окнах оставьте значения по умолчанию.

Настройка nslcd

Демон nslcd устанавливается вместе с пакетом libpam-ldapd и обеспечивает службы аутентификации NSS и PAM с использованием LDAP. Настройте nslcd для подключения к вашему LDAP-серверу, чтобы PAM мог аутентифицировать пользователей Greengage DB.

  1. Откройте файл конфигурации /etc/nslcd.conf для редактирования:

    $ sudo vi /etc/nslcd.conf

    Пример конфигурации показан ниже:

    # ...
    # The location at which the LDAP server(s) should be reachable.
    uri ldap://ipa.example.com/
    
    # The search base that will be used for all queries.
    base dc=example,dc=com
    # ...

    Значения параметров uri и base устанавливаются автоматически на основе информации, указанной при установке libpam-ldapd.

  2. Если вы изменили файл, сохраните изменения и перезапустите службу nslcd:

    $ sudo systemctl restart nslcd

Создание файла конфигурации PAM-службы

После настройки nslcd создайте файл /etc/pam.d/greengagedb, чтобы настроить службу PAM для Greengage DB. Это позволит выполнять аутентификацию пользователей через LDAP с использованием PAM.

  1. Создайте файл /etc/pam.d/greengagedb:

    $ sudo vi /etc/pam.d/greengagedb
  2. Добавьте в файл следующие строки:

    auth        required      pam_ldap.so
    account     sufficient    pam_ldap.so

    Сохраните и закройте файл.

Создание ролей Greengage DB

  1. Переключитесь на пользователя gpadmin:

    $ sudo su - gpadmin
  2. Создайте роль ldap_users в Greengage DB:

    $ createuser ldap_users --no-login
  3. Создайте пользователя alice и добавьте его в группу ldap_users:

    $ createuser alice --role=ldap_users

    Обратите внимание, что имя пользователя Greengage DB должно совпадать с именем пользователя FreeIPA.

Настройка Greengage DB для использования PAM-аутентификации

  1. Откройте файл pg_hba.conf для редактирования:

    $ vi $MASTER_DATA_DIRECTORY/pg_hba.conf
  2. Добавьте в файл следующую строку:

    # connection-type  database  user         address  auth-method  auth-options
    host               postgres  +ldap_users  samenet  pam          pamservice=greengagedb

    Эта конфигурация позволяет пользователям из группы ldap_users получать доступ к базе данных postgres, используя PAM-аутентификацию (auth-method установлен в pam). Параметр pamservice определяет PAM-службу, которую будет использовать Greengage DB; она была создана ранее в файле /etc/pam.d/greengagedb.

  3. Перезагрузите конфигурацию, чтобы применить изменения:

    $ gpstop -u

Подключение к базе данных

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

  1. Подключитесь к базе данных postgres, созданной по умолчанию, под пользователем alice с помощью psql:

    $ psql postgres -U alice -h mdw.example.com
  2. Введите пароль пользователя FreeIPA alice и нажмите Enter:

    Password for user alice:

    Результат должен выглядеть следующим образом:

    psql (9.4.26)
    Type "help" for help.
    
    postgres=>
  3. Проверьте имя текущего пользователя:

    SELECT current_user;

    Команда должна вернуть следующее:

     current_user
    ---------------
     alice