В этой статье:

Шаг 1. Установка и настройка Kerberos на сервере СУБД

Шаг 2. Создание keytab-файлов и настройка служб HTTP, postgres

Astra Linux Directory

Active Directory

Шаг 3. Настройка BI-сервера

Шаг 4. Настройка серверной части веб-приложения

Шаг 5. Подготовка сервера СУБД

Шаг 6. Авторизация доменного пользователя в системе

Настройка доменной/интегрированной доменной аутентификации на веб-сервере Apache2

Для настройки доменной или интегрированной доменной аутентификации на веб-сервере Apache2 с использованием СУБД PostgreSQL выполните шаги, указанные ниже.

Примечание. Предполагается, что веб-приложение в ОС Linux уже установлено.

Шаг 1. Установка и настройка Kerberos на сервере СУБД

Для установки и настройки Kerberos на сервере СУБД PostgreSQL:

  1. Убедитесь, что установлены пакеты для протокола Kerberos:

Если пакеты не установлены, то установите их:

sudo apt-get install krb5-user krb5-config
sudo apt-get install krb5-kinit libkrb5

В RedHat-подобных дистрибутивах дополнительная установка пакетов не требуется.

  1. Убедитесь, что добавлена информация о домене в файле /etc/krb5.conf. Если информация не добавлена, то добавьте её, например:

[libdefaults]
  default_realm = DOMAIN.RU
[realms]
  DOMAIN.RU = {
    kdc = domain.server.name
    admin_server = domain.server.name
  }
[domain_realm]
  .domain.ru = DOMAIN.RU
  domain.ru = DOMAIN.RU

Для получения подробной информации обратитесь к документации Kerberos.

  1. Убедитесь, что доменный пользователь доступен:

kinit <имя доменного пользователя>
***Введите пароль пользователя***
klist

При возникновении ошибки «kinit: Generic preauthentication failure while getting initial credentials» откройте файл /etc/krb5.conf и добавьте в разделе [libdefaults] следующие строки:

default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5

После выполнения действий будет установлен и настроен клиент Kerberos на сервере СУБД PostgreSQL.

Шаг 2. Создание keytab-файлов и настройка служб HTTP, postgres

Keytab-файлы используются для аутентификации пользователей без ввода пароля в Astra Linux Directory (ALD) в ОС Linux или Active Directory (AD) в ОС Windows. В keytab-файле хранятся имена принципалов Kerberos и соответствующие им зашифрованные ключи, полученные на основе паролей Kerberos.

Примечание. Служба HTTP используется только для интегрированной доменной аутентификации.

Astra Linux Directory

Для создания keytab-файлов и настройки служб HTTP, postgres при использовании ALD в ОС Linux:

  1. Подготовьте отдельные серверы с доменом ALD:

Примечание. Предполагается что BI-сервер, веб-сервер и СУБД PostgreSQL расположены на разных серверах.

  1. Откройте и заполните файл /etc/hosts, расположенный на контроллере домена ALD и его клиентах. Например:

# IP-address          FQDN                      hostname
111.111.111.111       ald-server.domain.ald     ald-server
111.111.111.112       bi-server.domain.ald      bi-server
111.111.111.113       web-server.domain.ald     web-server
111.111.111.114       pgsql-server.domain.ald   pgsql-server

Примечание. Если служба разрешения имён (DNS) настроена, то пропустите данный шаг.

  1. Установите пакеты ald-client-common, fly-admin-ald-client, ald-admin на каждом клиенте ALD:

sudo apt install ald-client-common fly-admin-ald-client ald-admin
  1. Включите клиентов ALD в домен. Для этого выполните команды на каждом клиенте с указанием пароля доменного администратора:

sudo ald-client join ald-server.domain.ald --hostname bi-server.domain.ald
sudo ald-client join ald-server.domain.ald --hostname web-server.domain.ald
sudo ald-client join ald-server.domain.ald --hostname pgsql-server.domain.ald
  1. Перезагрузите операционную систему на каждом клиенте ALD.

  2. Создайте службу HTTP для BI-сервера и postgres для СУБД на контроллере домена ALD:

ald-admin service-add HTTP/bi-server.domain.ald
ald-admin sgroup-svc-add HTTP/bi-server.domain.ald --sgroup=mac
ald-admin service-add postgres/pgsql-server.domain.ald
ald-admin sgroup-svc-add postgres/pgsql-server.domain.ald --sgroup=mac
  1. Создайте и заполните keytab-файлы на BI-сервере (HTTP) и СУБД PostgreSQL (postgres):

keytab="/<путь до папки, в которой будет создан keytab-файл на BI-сервере>/keytab"
ald-client update-svc-keytab HTTP/bi-server.domain.ald --ktfile="$keytab"
chown apache $keytab
chmod 644 $keytab
keytab="/<путь до папки, в которой будет создан keytab-файл в СУБД>/keytab"
ald-client update-svc-keytab postgres/pgsql-server.domain.ald --ktfile="$keytab"
chown postgres "$keytab"
chmod 644 "$keytab"
  1. Укажите полный путь до keytab-файлов:

GssapiCredStore keytab:<путь до keytab-файла для службы HTTP>

Расположение конфигурационного файла BI-сервера в экземпляре Apache2 зависит от версии ОС Linux:

Примечание. Путь до keytab-файла в fp10.x-biserver.conf задаётся только для интегрированной доменной аутентификации.

# GSSAPI using Kerberos
krb_server_keyfile = '<путь до keytab-файла для службы postgres>'
krb_caseins_users = on

Примечание. Расположение файла postgresql.conf может отличаться в зависимости от версии СУБД.

  1. Перезапустите BI-сервер.

  2. Перезапустите сервер СУБД PostgreSQL.

После выполнения действий будут созданы keytab-файлы для работы с Kerberos и настроены службы HTTP, postgres.

В ALD используется неограниченное делегирование.

Active Directory

Для создания keytab-файлов и настройки служб HTTP, postgres при использовании AD в ОС Windows:

  1. Подготовьте отдельные серверы с доменом AD:

Примечание. Предполагается что BI-сервер, веб-сервер и СУБД PostgreSQL расположены на разных серверах.

  1. Создайте пользователей для служб HTTP и postgres с помощью утилиты Active Directory Users and Computers, расположенной на сервере с доменом AD. Пример созданного пользователя для службы HTTP:

Убедитесь, что для пользователя установлены флажки «User cannot change password», «Password never expires».

  1. Создайте keytab-файлы и привяжите их к соответствующим созданным пользователям на BI-сервере (HTTP) и СУБД PostgreSQL (postgres) с помощью PowerShell:
ktpass -princ HTTP/<имя принципиала> -mapuser <имя пользователя с указанием домена> -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass <пароль пользователя> -kvno 3 -out C:\<путь до папки, в которой будет создан keytab-файл на BI-сервере>\keytab.keytab
ktpass -princ postgres/<имя принципиала> -mapuser <имя пользователя с указанием домена> -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass <пароль пользователя> -kvno 3 -out C:\<путь до папки, в которой будет создан keytab-файл в СУБД>\keytab.keytab

Пример команды для службы HTTP:

ktpass -princ HTTP/sng-sso-bi.nvg.team@NVG.TEAM -mapuser sng-sso-bi_http@NVG.TEAM -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass Qwerty1 -kvno 3 -out C:\KeyTab\sng-sso-bi_http.keytab
  1. Проверьте связь пользователей со службами HTTP и postgres:

setspn -L <имя пользователя без указания домена>

Если связь установлена, то будет выдано сообщение с указанием принципиала. Например:

Registered ServicePrincipalNames for CN=sng-sso-bi_http,OU=Kerberos,OU=NVG,DC=nvg,DC=team:
    HTTP/sng-sso-bi.nvg.team
  1. Укажите полный путь до keytab-файлов:

GssapiCredStore keytab:<путь до keytab-файла для службы HTTP>

Расположение конфигурационного файла BI-сервера в экземпляре Apache2 зависит от версии ОС Linux:

Примечание. Путь до keytab-файла в fp10.x-biserver.conf задаётся только для интегрированной доменной аутентификации.

# GSSAPI using Kerberos	
krb_server_keyfile = '<путь до keytab-файла для службы postgres>'
krb_caseins_users = on

Примечание. Расположение файла postgresql.conf может отличаться в зависимости от версии СУБД.

  1. Перезапустите BI-сервер.

  1. Перезапустите сервер СУБД PostgreSQL.

После выполнения действий будут созданы keytab-файлы для работы с Kerberos и настроены службы HTTP, postgres.

Примечание. При изменении свойств пользователя keytab-файлы должны быть пересозданы.

В AD может использоваться неограниченное и ограниченное делегирование:

GssapiUseS4U2Proxy On

Расположение конфигурационного файла BI-сервера в экземпляре Apache2 зависит от версии ОС Linux:

Шаг 3. Настройка BI-сервера

По умолчанию при установке BI-сервера конфигурационные файлы экземпляра Apache2 располагаются в папке:

Для настройки BI-сервера:

  1. Установите Apache2 с учётом указанных модулей:

apt install apache2 libsasl2-modules-gssapi-mit libapache2-mod-auth-gssapi
yum install httpd lighttpd-mod_authn_gssapi cyrus-sasl-gssapi
apt-get install apache2-base apache2-httpd-worker apache2-mod_auth_gssapi libsasl2-plugin-gssapi

После выполнения действий экземпляр Apache2 будет установлен в папке:

  1. Скопируйте новые конфигурационные файлы экземпляра Apache2 в экземпляры, созданные при установке BI-сервера:

cp /etc/apache2/mods-available/auth_gssapi.load /etc/apache2-fp10.x/mods-available/
cp /etc/apache2/mods-available/session.load /etc/apache2-fp10.x/mods-available/
cp /etc/apache2/mods-available/session_cookie.load /etc/apache2-fp10.x/mods-available/
cp /etc/httpd/conf.modules.d/01-session.conf /etc/httpd-fp10.x/conf.modules.d/
cp /etc/httpd/conf.modules.d/10-auth_gssapi.conf /etc/httpd-fp10.x/conf.modules.d/
cp /etc/httpd2/conf/mods-available/auth_gssapi.load /etc/httpd2-fp10.x/conf/mods-available/
cp /etc/httpd2/conf/mods-available/session.load /etc/httpd2-fp10.x/conf/mods-available/
cp /etc/httpd2/conf/mods-available/session_cookie.load /etc/httpd2-fp10.x/conf/mods-available/
  1. Включите недостающие модули Apache2 в Debian-подобных дистрибутивах и ALT Linux.

a2enmod-fp10.x auth_gssapi
a2enmod-fp10.x authz_user
a2enmod-fp10.x authn_core
a2enmod-fp10.x headers
a2enmod-fp10.x session
a2enmod-fp10.x session_cookie
a2enmod-fp10.x rewrite
a2enmod-fp10.x setenvif

В RedHat-подобных дистрибутивах указанные модули включены по умолчанию.

  1. Измените конфигурационные файлы BI-сервера в экземпляре Apache2:

fp10.x-biserver.conf

envvars

  1. Настройте механизм CORS для повышения безопасности системы при обмене данными между разными доменами. Для этого задайте заголовки Origin, Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers в конце файла:

<IfModule mod_headers.c>
    SetEnvIf Origin ^(<разрешённый домен>)$ CORS_ALLOW_ORIGIN=$1
    Header always set Access-Control-Allow-Origin %{CORS_ALLOW_ORIGIN}e env=CORS_ALLOW_ORIGIN
    Header merge Vary "Origin"
    Header always set Access-Control-Allow-Methods "POST, OPTIONS, <методы HTTP-запросов>"
    Header always set Access-Control-Allow-Headers "get-ppbi-time, content-type, soapaction, accept-language, cache-control, Authorization, <заголовки HTTP-запросов>"</IfModule>

RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

В подстановках:

https?://(?:.+\.)?example\.com(?::\d{1,5})?

Данная настройка включает использование механизма CORS на родительском и дочерних ему доменах, а также динамически устанавливается на текущий протокол, домен, порт без использования правил перезаписи;

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

  1. Откройте на редактирование файл Metabases.xml, расположенный в папке /opt/foresight/fp10.x-biserver/etc, и выполните следующие действия:

    1. Задайте атрибут Authentication со значением:

      • 2. Интегрированная доменная аутентификация;

      • 4. Доменная аутентификация.

    1. Убедитесь, что в качестве значения параметра SERVER задано полное доменное DNS-имя сервера. Если задан IP-адрес, то замените его.

После выполнения действий BI-сервер будет настроен.

Пример файла Metabases.xml:

<PP>
  <Metabases>
    <REPOSITORY_ID Name="REPOSITORY_ID" Authentication="4" Driver="DRIVER_ID" Package="STANDARDSECURITYPACKAGE" DebugMode="1">
      <LogonData DATABASE="DATABASE_NAME" SERVER="SERVER_DATABASE"/>
      <Credentials Authentication="4"/>
    </REPOSITORY_ID>
  </Metabases>
</PP>

Где:

  1. Проверьте указание полного доменного DNS-имени сервера в файлах:

  1. Настройте механизм работы со службами каталогов.

  1. Перезапустите BI-сервер.

После выполнения действий BI-сервер будет настроен на работу с веб-сервером Apache2.

Шаг 4. Настройка серверной части веб-приложения

Для настройки серверной части веб-приложения:

  1. Откройте на редактирование файл PP.xml, расположенный в папке /opt/foresight/fp10.x-webserver/config, и укажите пустую строку в качестве значения атрибута url в разделе <proxy>. Например:

<?xml version="1.0" encoding="utf-8" ?>
<pp>
  <proxy url=""/> <!-- url задается в переменной окружения PP_SOM -->
  <metabase id="REPOSITORY_ID" />
  <ServiceCM ParamsUrl="http://web-server.domain.ald:8110/fp10.x/r/#/settings" />
  <modules commonModulesUrl="http://web-server.domain.ald:8110/fp10.x/r/#" />
</pp>
  1. Укажите полное доменное DNS-имя сервера, на котором расположен веб-сервер Apache2:

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

      • /etc/apache2-fp10.x-web/sites-available/webserver.conf в Debian-подобных дистрибутивах;

      • /etc/httpd-fp10.x-web/conf.d/00-virtualhost.conf в RedHat-подобных дистрибутивах;

      • /etc/httpd2-fp10.x-web/conf/sites-available/000-default.conf в ALT Linux.

    2. Укажите параметр ServerName в разделе <VirtualHost>. Например:

ServerName web-server.domain.ald

После выполнения действий серверная часть веб-приложения будет настроена.

Шаг 5. Подготовка сервера СУБД

Для подготовки сервера СУБД PostgreSQL:

  1. Убедитесь, что включена поддержка доменных групп. При поддержке доменных групп права доступа распространяются на входящих в неё пользователей СУБД без явного добавления каждой учётной записи в менеджере безопасности.

Примечание. Поддержка доменных групп доступна, если на уровне СУБД содержатся группы в виде ролей и пользователи, входящие в эти роли.

  1. Настройте аутентификацию по методу GSSAPI в соответствии с документацией PostgreSQL.

  2. Настройте использование полного доменного имени пользователя при необходимости. По умолчанию при добавлении доменного пользователя в СУБД PostgreSQL используется короткое имя пользователя без учёта домена. Для использования полного доменного имени задайте параметр USEUPN со значением true в файле /opt/foresight/fp10.x-biserver/etc/Metabases.xml:

<LogonData ... USEUPN="true"/>

Шаг 6. Авторизация доменного пользователя в системе

Для авторизации доменного пользователя в системе:

  1. Добавьте доменных пользователей и/или группы в менеджере безопасности.

  2. Войдите в систему под доменным пользователем. В окне регистрации выберите репозиторий, введите доменное имя пользователя в формате «домен\имя» и пароль:

После выполнения действий будет выполнена доменная аутентификация пользователя. При успешной авторизации откроется навигатор объектов.

См. также:

Аутентификация в продукте | Настройка доменной/интегрированной доменной аутентификации на веб-сервере ASP.NET