Общая инструкция по установке#

В общем случае установка Blitz Identity Provider выполняется в следующей последовательности:

  1. Установить JDK.

  2. Установить менеджер памяти memcached.

  3. Установить и настроить СУБД.

  4. Установить и настроить сервер очередей RabbitMQ Опционально.

  5. Установить консоль управления и другие сервисы Blitz Identity Provider.

  6. Настроить синхронизацию конфигурационных файлов Только для установки в кластере.

  7. Настроить веб-сервер.

  8. Настроить внешнее хранилище учетных записей Опционально.

Совет

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

Важно

Перед развертыванием ознакомьтесь с архитектурой развертывания Blitz Identity Provider.

Установка JDK#

На серверах, предназначенных для установки ПО сервера Blitz Identity Provider и административной консоли Blitz Identity Provider, необходимо установить и настроить JDK 8, используя один из следующих продуктов:

  • OpenJDK 8 Рекомендуется для сертифицированной версии Blitz;

  • Liberica JDK 8;

  • Axiom JDK 8 Certified Рекомендуется для сертифицированной версии Blitz;

  • Oracle JDK 8.

Установка OpenJDK 8 в CentOS и RHEL

Выполнить команду:

sudo yum install java-1.8.0-openjdk-devel
Установка Liberica JDK 8 в Astra Linux Special Edition 1.6
  1. Загрузить дистрибутив Liberica JDK 8 с сайта производителя.

  2. Выполнить команду:

    pkg -i bellsoft-jdk8u252+9-linux-amd64.deb
    
  3. Открыть на редактирование файл java.security в директории /usr/lib/jvm/bellsoft-java8-amd64/jre/lib/security.

  4. Раскомментировать (или добавить) строку:

    crypto.policy=unlimited
    
Установка Axiom JDK 8 Certified в Astra Linux Special Edition 1.7
  1. Загрузить дистрибутив Axiom JDK 8 Certified с сайта производителя.

  2. Выполнить команду:

    dpkg -i bellsoft-jdk-certified8u322+7-linux-amd64-astra.deb
    
  3. Открыть на редактирование файл java.security в директории /usr/lib/jvm/bellsoft-java8-amd64/jre/lib/security.

  4. Раскомментировать (или добавить) строку:

    crypto.policy=unlimited
    
Установка и настройка Oracle JDK 8
  1. Загрузить дистрибутив Oracle JDK 8 в виде архива tar.

  2. Скопировать загруженный дистрибутив на сервера (например, в директорию /tmp).

  3. Создать директорию под установку Oracle JDK 8:

    mkdir -p /opt/oracle/jdk/
    
  4. Распаковать в созданную директорию дистрибутив Oracle JDK 8:

    tar xf /tmp/jdk-8uXXX-linux-x64.tar.gz -C /opt/oracle/jdk/
    

Если версия Oracle JDK 1.8.0_151 и выше:

  1. Открыть на редактирование файл java.security в директории /opt/oracle/jdk/jdk1.8.0_XXX/jre/lib/security.

  2. Раскомментировать (или добавить) строку:

    crypto.policy=unlimited
    

Если версия Oracle JDK 1.8.0_144 и ниже:

  1. Загрузить дистрибутив Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8.

  2. Скопировать загруженный дистрибутив на сервера (например, в директорию /tmp).

  3. Распаковать архив и скопировать содержимое в директорию с установленным Oracle JDK 8:

    cd /tmp
    unzip jce_policy-8.zip
    cp UnlimitedJCEPolicyJDK8/*.jar /opt/oracle/jdk/jdk1.8.0_XXX/jre/lib/security/
    

Установка memcached#

Внимание

Версия memcached должна быть 1.4.15 или выше. Сервис memcached должен быть установлен на серверах, предназначенных для установки сервисов Blitz Identity Provider: blitz-console, blitz-idp, blitz-registration, blitz-recovery. Для сервиса blitz-keeper сервис memcached не нужен.

  1. Выполнить команду:

    yum -y install memcached
    
  2. После завершения установки добавить сервис memcached в автозапуск и запустить сервис:

    systemctl enable memcached
    systemctl start memcached
    
  1. Выполнить команду:

    apt-get install memcached
    
  2. После завершения установки добавить сервис memcached в автозапуск и запустить сервис:

    systemctl enable memcached
    systemctl start memcached
    

Важно

Сервис memcached запускается на порту 11211. Нужно убедиться, что этот порт открыт на межсетевых экранах и может быть использован для соединения между сервисами Blitz Identity Provider.

Установка и настройка СУБД#

Установка Couchbase Server

Инструкция по установке Couchbase Server приводится для CentOS 7 и RHEL 7. В случае развертывания под отечественные операционные системы в качестве СУБД рекомендуется использовать PostgreSQL.

  1. Установить Couchbase Server на каждый из выделенных под установку СУБД серверов согласно инструкции. Дистрибутив Couchbase Server можно скачать здесь.

    Важно

    В DEV/TEST-средах допустимо Couchbase Server устанавливать на существующие сервера с Blitz Identity Provider, но в этом случае нужно учесть, что в Couchbase Server используется своя встроенная memcached-служба, и во избежание конфликта необходимо скорректировать используемые Memcached порты в Blitz Identity Provider/Couchbase Server.

  2. Добавить сервис Couchbase Server в автозапуск и запустить сервис:

    systemctl enable couchbase-server
    systemctl start couchbase-server
    
  3. Проверить работоспособность сервиса, выполнив команду:

    systemctl status couchbase-server
    
  4. Инициализировать на каждом сервере кластер Couchbase Server согласно инструкции (на первом сервере инициализируется кластер, остальные сервера включаются в кластер). Все настройки можно задать как предложено по умолчанию, только нужно для каждого сервера в hostname задать полное имя сервера. В качестве имени сервера не рекомендуется использовать его IP-адрес.

  5. На любом из серверов кластера Couchbase Server выполнить скрипт по подготовке Couchbase Server к использованию Blitz Identity Provider. Скрипт находятся в директории couchbase в архиве resources.zip в составе дистрибутива Blitz Identity Provider. Скрипт нужно скопировать на любой сервер кластера Couchbase Server, перейти в директорию и выполнить скрипт создания buckets для хранения информации Blitz Identity Provider и индексов для выполнения поисковых запросов Blitz Identity Provider в БД:

    ./cb_init.sh
    

    В процессе выполнения скрипта понадобится ввести:

    • имя URL сервера Couchbase Server – ввести строку вида http://<hostname>:8091, где в качестве hostname указать имя хоста сервера, с которого выполняется скрипт;

    • логин учетной записи администратора Couchbase Server – задается при инициализации кластера при выполнении предыдущего пункта инструкции;

    • пароль учетной записи администратора Couchbase Server – задается при инициализации кластера при выполнении предыдущего пункта инструкции;

    • логин учетной записи Couchbase Server, которая создастся в процессе выполнения этого скрипта для подключения сервисов Blitz Identity Provider;

    • пароль учетной записи Couchbase Server для подключения приложений Blitz Identity Provider.

  6. После выполнения скрипта произвести следующие настройки:

    1. В консоли администрирования Couchbase Server отредактировать настройки количества копий данных на различных экземплярах Couchbase. Для этого в меню Buckets поочередно выбрать каждый bucket, нажать на нем Edit и задать значение настройки Enable в блоке Replicas и установить число реплик. Для кластера из трех серверов рекомендуется задать в настройке значение 1 для числа реплик. Затем в меню Settings рекомендуется включить настройку Enable auto-failover и задать значение «Timeout» в 30 секунд (auto-failover будет работать, только если в кластере СУБД не менее 3 серверов и настроена репликация для bucket).

    2. Настроить резервное копирование БД.

Установка и настройка PostgreSQL

Внимание

Версия PostgreSQL должна быть 9.6 или новее.

Установить PostgreSQL согласно инструкции.

  1. Выполнить команду:

    apt-get install postgresql
    
  2. После завершения установки запустить сервис:

    systemctl start postgresql
    

После завершения установки PostgreSQL в выбранной ОС необходимо выполнить скрипт по подготовке PostgreSQL к использованию Blitz Identity Provider. Скрипты находятся в директории postgres в архиве resources.zip в составе дистрибутива Blitz Identity Provider. Скрипты нужно скопировать на сервер PostgreSQL, перейти в директорию и по очереди выполнить команды:

su - postgres

createdb blitzdb

psql
CREATE USER blitz WITH ENCRYPTED PASSWORD 'set-your-pwd';
GRANT ALL PRIVILEGES ON DATABASE blitzdb TO blitz;
GRANT ALL ON ALL TABLES IN SCHEMA public TO blitz;

psql -d blitzdb -U blitz -f 000-SCRIPT000.sql
…
psql -d blitzdb -U blitz -f NNN-SCRIPTNNN.sql

Вместо set-your-pwd нужно вставить пароль, который будет использоваться для подключения к PostgreSQL.

Вместо 000-SCRIPT000.sql NNN-SCRIPTNNN.sql нужно вставить имена скриптов из директории postgres/ddl из архива resources.zip. Например:

psql -d blitzdb -U blitz -f 000-service-tasks.sql
psql -d blitzdb -U blitz -f 001-init-database.sql
psql -d blitzdb -U blitz -f 002-new_pp_columns.sql
psql -d blitzdb -U blitz -f 003-usd_id_table.sql
psql -d blitzdb -U blitz -f 004-usr_auth_table.sql
psql -d blitzdb -U blitz -f 005-usr_agt_table.sql
psql -d blitzdb -U blitz -f 006-usr_htp_hmc_alg.sql
psql -d blitzdb -U blitz -f 007-usr_atr_cfm.sql
psql -d blitzdb -U blitz -f 008-wak.sql
psql -d blitzdb -U blitz -f 009-fix_pp_column.sql
psql -d blitzdb -U blitz -f 010-add_usr_prp.sql
psql -d blitzdb -U blitz -f 011-pp_audit.sql
psql -d blitzdb -U blitz -f 012-geo_to_audit.sql
psql -d blitzdb -U blitz -f 013-tasks.sql
psql -d blitzdb -U blitz -f 014-sec_ch_ua.sql
psql -d blitzdb -U blitz -f 015-5.12.0.sql
psql -d blitzdb -U blitz -f 016-5.13.0.sql
psql -d blitzdb -U blitz -f 017-5.15.0.sql

После выполнения скрипта необходимо настроить резервное копирование БД.

Установка и настройка сервера очередей RabbitMQ#

Установка сервера очередей RabbitMQ опциональна и требуется, если сервер очередей будет использоваться для передачи событий в смежные системы или в качестве брокера сообщений.

Установить RabbitMQ согласно инструкции.

  1. Выполнить команду:

    apt-get install rabbitmq-server
    
  2. После завершения установки запустить сервис:

    systemctl start rabbitmq-server
    

Установка сервисов Blitz Identity Provider#

Для установки сервисов blitz-console, blitz-idp, blitz-registration, blitz-recovery используется единый установщик blitz-5.X.X.bin. Для установки сервиса blitz-keeper используется свой установщик blitz-keeper-5.X.X.bin. При установке сертифицированной версии Blitz Identity Provider дополнительно используются файлы blitz-idp-thirdparty-5.X.X.tar.gz и blitz-keeper-thirdparty-5.X.X.tar.gz, содержащие архивы с используемыми Blitz Identity Provider сторонними библиотеками.

Важно

Консоль управления можно установить на любой сервер, где установлен сервер Blitz Identity Provider, но рекомендуется выделить под установку консоли управления отдельный административный сервер. На сервере предварительно должны быть установлены JDK и memcached.

Для установки приложений blitz-console, blitz-idp, blitz-registration, blitz-recovery необходимо:

  1. На предназначенные для установки сервера скопировать (например, в директорию /tmp) из дистрибутива Blitz Identity Provider файлы blitz-5.X.X.bin и blitz-idp-thirdparty-5.X.X.tar.gz (только в случае установки сертифицированной версии).

  2. Запустить установщик blitz-5.X.X.bin:

    cd /tmp
    chmod +x blitz-5.X.X.bin
    ./blitz-5.X.X.bin
    

    В ответ на запросы установщика задать:

    • список устанавливаемых приложений, разделенных через пробел (в случае установки всех приложений указать all);

    • значение JAVA_HOME – задать директорию, в которую на сервере установлен JDK:

      /usr/lib/jvm/bellsoft-java8-amd64

      /usr/lib/jvm/java-1.8.0-openjdk

      /opt/oracle/jdk

    • путь к файлу blitz-idp-thirdparty-5.X.X.tar.gz (только для сертифицированной версии);

    • внешнее имя домена, на котором будет функционировать Blitz Identity Provider;

    • URL-путь, на котором будет функционировать Blitz Identity Provider (по умолчанию, /blitz);

    • пароль к хранилищу ключей Blitz Identity Provider. Хранилище ключей будет сгенерировано в процессе установки, и доступ к хранилищу будет закрыт заданным паролем.

    Установка будет произведена в директорию /usr/share/identityblitz. В случае установки сервиса blitz-console будет сгенерирован и показан логин/пароль администратора Blitz Identity Provider.

    Your Blitz Identity Provider configured on domain: blitz-cert.loc
    Your Blitz Identity Provider Console available on addresses:
      http://localhost:9001/blitz/console
      http://localhost:9001/blitz/console
    
    Administration user credentials of Blitz Console:
      username - admin
      password - 50c2E6298B
    You can change user credentials at the file - /usr/share/identityblitz/blitz-config/credentials
    

    Совет

    Если при запуске установщика были допущены ошибки ввода, так что установка была проведена с неправильными параметрами, то можно воспользоваться следующей командой для удаления файлов, которые создал установщик, чтобы иметь возможность вновь провести установку начисто:

    rm -rf /usr/share/identityblitz /etc/default/blitz-* /etc/blitz-* /var/log/identityblitz/ /lib/systemd/system/blitz-*
    
  3. Отредактировать файл настроек /usr/share/identityblitz/blitz-config/blitz.conf в зависимости от установленной СУБД:

    • В блоке настроек blitz.prod.local.idp.stores настройку default-type изменить в значение cb.

    • В блоке настроек blitz.prod.local.idp.internal-store-cb в [CB_NODES] перечислить имена каждого сервера БД Couchbase Server в виде FQDN имени сервера (например, "node1.blitz.loc"). Номера портов в nodes задавать не нужно.

    • Указать логин (user) и пароль (password) учетной записи администратора Couchbase Server. Пароль следует указать в открытом виде, после запуска Blitz Identity Provider он будет зашифрован.

    • В настройках ioConf и timeoutConf скорректировать при необходимости параметры пула коннектов:

      "internal-store-cb" : {
          "nodes" : [CB_NODES],
          "user" : "CB_USERNAME",
          "password" : "CB_PASSWORD",
          "metrics": false,
          "ioConf": {
              "numKvConnections": 1,
              "maxHttpConnections": 12,
              "idleHttpConnectionTimeout": 5
          },
          "timeoutConf": {
              "connectTimeout": 10,
              "kvTimeout": 3,
              "kvDurableTimeout": 10,
              "queryTimeout": 75
          }
      }
      

    Проверить в блоке настроек blitz.prod.local.idp.stores, что настройка default-type имеет значение jdbc.

    В блоке настроек blitz.prod.local.idp.internal-store-jdbc скорректировать параметры подключения к БД:

    • PG_HOSTNAME – имя хоста,

    • PG_DBNAME – имя БД для Blitz Identity Provider (например, blitzdb),

    • PG_USERNAME и PG_USERPASSWORD – имя и пароль пользователя для Blitz Identity Provider в БД. Пароль указывается в открытом виде и будет зашифрован в конфигурационном файле при запуске Blitz Identity Provider.

    • Параметр keyAlias задает название ключа в ключевом контейнере (блок настроек keystore), на котором осуществляется шифрование чувствительных данных при сохранении в БД. Ключ можно сгенерировать с помощью следующей команды:

      keytool -genseckey -alias jdbc -keyalg AES -keysize 128 -storetype JKS -keystore blitz_store.jks.
      

      Если параметр не указан, то параметры не шифруются.

    • В настройке pool скорректировать при необходимости параметры пула коннектов:

      "internal-store-jdbc" : {
          "conn_url" : "jdbc:postgresql://PG_HOSTNAME:5432/PG_DBNAME?user=PG_USERNAME&password=${pswd}&loggerLevel=DEBUG&tcpKeepAlive=true",
          "db_name" : "PG_DBNAME",
          "keyAlias" : "jdbc",
          "enc_params" : {
              "pswd" : "PG_USERPASSWORD"
          },
          "pool" : {
              "max_idle_conn" : 5,
              "max_total_conn" : 20,
              "max_wait_conn_ms" : 30000,
              "min_idle_conn" : 1
          }
      }
      
  4. Отредактировать блок blitz.prod.local.idp.net, добавив в настройку trustedServers адреса подсетей серверов приложений Blitz Identity Provider:

    "net" : {
        "domain" : "blitz-domain.com",
        "trustedServers" : [
          "192.168.1.0/24"
        ]
    }
    
  5. Отредактировать блок memcached в файле настроек /usr/share/identityblitz/blitz-config/play.conf:

    "memcached" : {
        "operationTimeout" : 1000,
        "timeoutExceptionThreshold" : 1,
        "maxReconnectDelay" : 10,
        "servers" : [
            "[MEMCACHED]"
        ]
    }
    
    • [MEMCACHED] (обязательный параметр) – указать хост и порт службы memcached (например, ld-s-blitz1-dev.ao.company:11211).

    • operationTimeout – время ожидания выполнения запроса к memcached в мс;

    • timeoutExceptionThreshold – количество попыток выполнения запроса, после которых узел считается не доступным;

    • maxReconectDelay – интервал между попытками установить соединение с узлом в секундах.

  6. ­Если планируется использовать функцию защиты REST-сервисов с помощью Blitz Identity Provider, то скопировать на предназначенные для установки шлюза безопасности сервера (например, в директорию /tmp) из дистрибутива Blitz Identity Provider файлы blitz-keeper-5.X.X.bin и blitz-keeper-thirdparty-5.X.X.tar.gz (только в случае установки сертифицированной версии).

  7. Запустить установщик blitz-keeper-5.X.X.bin:

    cd /tmp
    chmod +x blitz-keeper-5.X.X.bin
    ./blitz-keeper-5.X.X.bin
    

    В ответ на запросы установщика задать:

    • Значение JAVA_HOME – задать директорию, в которую на сервере установлен JDK:

      /usr/lib/jvm/bellsoft-java8-amd64

      /usr/lib/jvm/java-1.8.0-openjdk

      /opt/oracle/jdk

    • Путь к файлу blitz-keeper-thirdparty-5.X.X.tar.gz (только для сертифицированной версии).

    Установка будет произведена в директорию /usr/share/identityblitz.

  8. Добавить сервисы в автозапуск на соответствующих им серверах и запустить их:

    systemctl enable blitz-console
    systemctl start blitz-console
    systemctl enable blitz-idp
    systemctl start blitz-idp
    systemctl enable blitz-registration
    systemctl start blitz-registration
    systemctl enable blitz-recovery
    systemctl start blitz-recovery
    systemctl enable blitz-keeper
    systemctl start blitz-keeper
    

Настройка синхронизации файлов конфигурации#

При развертывании Blitz Identity Provider в кластере необходимо настроить синхронизацию конфигурации Blitz Identity Provider между серверами кластера Blitz Identity Provider:

Действия на сервере с консолью управления Bitz Identity Provider Console
  1. Установить rsync и incron:

    sudo yum install rsync incron
    

    или (для Astra Linux Special Edition 1.6)

    sudo apt install rsync incron
    
  2. Переключиться в пользователя blitz:

    sudo su - blitz
    
  3. Сгенерировать ssh-ключ командой (на все задаваемые утилитой вопросы рекомендуется выбрать ответы по умолчанию):

    ssh-keygen
    
  4. Прочитать и сохранить для дальнейшего использования публичный ssh-ключ:

    cat /usr/share/identityblitz/.ssh/id_rsa.pub
    
  5. Открыть настройки incrontab:

    incrontab -e
    

    В открывшемся окне редактора вставить следующее:

    /usr/share/identityblitz/blitz-config IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh ./ $# $%
    /usr/share/identityblitz/blitz-config/assets IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh assets $# $%
    /usr/share/identityblitz/blitz-config/assets/services IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh assets $# $%
    /usr/share/identityblitz/blitz-config/assets/themes IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh assets $# $%
    /usr/share/identityblitz/blitz-config/apps IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh apps $# $%
    /usr/share/identityblitz/blitz-config/saml IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh saml $# $%
    /usr/share/identityblitz/blitz-config/saml/conf IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh saml $# $%
    /usr/share/identityblitz/blitz-config/saml/credentials IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh saml $# $%
    /usr/share/identityblitz/blitz-config/saml/metadata IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh saml $# $%
    /usr/share/identityblitz/blitz-config/custom_messages IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh custom_messages $# $%
    /usr/share/identityblitz/blitz-config/custom_messages/dics IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh custom_messages $# $%
    /usr/share/identityblitz/blitz-config/devices IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh devices $# $%
    /usr/share/identityblitz/blitz-config/simple IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh simple $# $%
    /usr/share/identityblitz/blitz-config/certs IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh certs $# $%
    /usr/share/identityblitz/blitz-config/flows/login IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh flows $# $%
    /usr/share/identityblitz/blitz-config/flows/reg IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh flows $# $%
    /usr/share/identityblitz/blitz-config/flows/extIdps IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh flows $# $%
    /usr/share/identityblitz/blitz-config/token_exchange IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh token_exchange $# $%
    /usr/share/identityblitz/blitz-config/token_exchange/rules IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh token_exchange $# $%
    
  6. Создать файл /usr/share/identityblitz/scripts/config_sync.sh и вставить в него скрипт:

    #!/bin/bash
    app_dir=/usr/share/identityblitz/blitz-config
    node_list="NODES_LIST"
    for node in $(echo "${node_list}"); do
    rsync -r -a --delete ${app_dir}/${1} ${USER}@${node}:${app_dir};
    done
    
  7. В качестве значения node_list, вместо NODES_LIST, необходимо прописать список hostname узлов кластера Blitz (кроме узла консоли управления Blitz Console). Вписывать значения нужно через пробел. Например:

    node_list="app1.local app2.local"
    
  8. Сделать файл /usr/share/identityblitz/scripts/config_sync.sh исполняемым:

    chmod +x /usr/share/identityblitz/scripts/config_sync.sh
    
  9. Запустить incrontab, выполнив под пользователем root команду:

    systemctl enable incrond
    systemctl start incrond
    
Действия на остальных серверах приложений Blitz Identity Provider
  1. Установить rsync:

    sudo yum install rsync
    

    или (для Astra Linux Special Edition 1.6)

    sudo apt install rsync
    
  2. Переключиться в пользователя blitz:

    sudo su - blitz
    
  3. Выполнить следующий скрипт:

    mkdir .ssh
    touch .ssh/authorized_keys
    chmod 700 .ssh
    chmod 640 .ssh/authorized_keys
    
  4. Открыть файл .ssh/authorized_keys любым редактором, например, vim, и вставить публичный ssh-ключ, полученный ранее на сервере консоли управления Blitz Console.

Настройка веб-сервера#

В качестве веб-сервера рекомендуется использовать nginx. Пример настроечного файла для nginx включен в дистрибутив Blitz Identity Provider – это файл blitz-idp.conf из директории nginx в архиве resources.zip. Нужно скорректировать следующие блоки настроек, после чего загрузить файл на сервер с nginx (каталог /etc/nginx/conf.d):

  1. Скорректировать блок настроек балансировки:

    upstream blitz-idp {
        server [BLITZ-IDP-NODE-01]:9000 max_fails=3 fail_timeout=120;
        server [BLITZ-IDP-NODE-02]:9000 max_fails=3 fail_timeout=120;
    }
    upstream blitz-reg {
        server [BLITZ-REG-NODE-01]:9002 max_fails=3 fail_timeout=120;
        server [BLITZ-REG-NODE-02]:9002 max_fails=3 fail_timeout=120;
    }
    upstream blitz-rec {
        server [BLITZ-REC-NODE-01]:9003 max_fails=3 fail_timeout=120;
        server [BLITZ-REC-NODE-02]:9003 max_fails=3 fail_timeout=120;
    }
    upstream blitz-keeper {
        server [BLITZ-KPR-NODE-01]:9012 max_fails=3 fail_timeout=120;
        server [BLITZ-KPR-NODE-02]:9012 max_fails=3 fail_timeout=120;
    }
    upstream blitz-console {
        server [BLITZ-CONSOLE-NODE-01]:9001 max_fails=3 fail_timeout=120;
    }
    

    Параметры имеют следующие назначения:

    • [BLITZ-%%%-NODE-XX] – имена (hostname) серверов с сервисами Blitz Identity Provider (blitz-idp, blitz-registration, blitz-recovery, blitz-keeper);

    • [BLITZ-CONSOLE-NODE-01] – имя (hostname) сервера с Blitz Console.

  2. Скорректировать блок настроек терминирования TLS:

    ssl_certificate         [BLITZ-SSL-CERT-FILE];
    ssl_certificate_key     [BLITZ-SSL-PRIVATEKEY-FILE];
    

    Параметры имеют следующие назначения:

    • [BLITZ-SSL-CERT-FILE] – путь (полное имя) к файлу с TLS-сертификатом сервера;

    • [BLITZ-IDP-CONSOLE-NODE-01] – путь (полное имя) к файлу с TLS-ключом сервера.

  3. Следует учесть, что Blitz Identity Provider игнорирует заголовок X-Forwarded-Proto https, если в nginx X-Forwarded-For содержит более одного IP-адреса. Следует также учесть, что при использовании директивы nginx:

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    

    В этом случае рекомендуется использовать следующее значение директивы:

    proxy_set_header X-Forwarded-For $remote_addr;
    
  4. Скопировать на сервер nginx в папку /usr/share/nginx/html папку static_errors с файлами страниц отображения ошибок сервера. Файлы с примерами оформления страниц ошибок можно взять в дистрибутиве Blitz Identity Provider – это папка static_errors в архиве resources.zip.

Установка и настройка LDAP-каталога#

В случае необходимости развертывания нового LDAP-каталога рекомендуется в качестве LDAP-каталога использовать 389 Directory Server, который входит в состав ОС:

  1. Выполнить команды установки:

    yum install 389-ds-base 389-adminutil 389-admin 389-admin-console 389-console 389-ds-console
    yum install xauth
    
  2. Установить limits в соответствии с рекомендациями 389 Directory Server:

    echo "fs.file-max = 64000" >> /etc/sysctl.conf
    echo "* soft nofile 8192" >> /etc/security/limits.conf
    echo "* hard nofile 8192" >> /etc/security/limits.conf
    echo "ulimit -n 8192" >> /etc/profile
    
  3. Инициализировать LDAP-каталог. Ответить на вопросы установщика:

    setup-ds-admin.pl
    
  4. После завершения установки добавить LDAP-каталог в автозапуск и запустить сервис:

    systemctl enable dirsrv.target
    systemctl start dirsrv.target
    
  1. Выполнить команду установки и скрипт инициализации каталога:

    apt-get install 389-ds-base
    setup-ds
    
  2. После завершения установки добавить LDAP-каталог в автозапуск и запустить сервис:

    systemctl enable dirsrv.target
    systemctl start dirsrv.target
    

После установки 389 Directory Server выполнить его настройку для подготовки использования совместно с Blitz Identity Provider. Для этого:

  1. Скопировать на LDAP-сервер конфигурационные скрипты LDAP из состава дистрибутива Blitz Identity Provider (это папка ldap в архиве resources.zip).

  2. Выполнить скрипт первоначальной настройки ldap_init.sh – скрипт создаст ветку sub для хранения пользователей, сервисного пользователя reader, настроит права доступа пользователя и его парольную политику (бессрочный пароль для сервисного пользователя), создаст класс blitz-schema с атрибутами uid, mail, mobile, sn, name:

    chmod +x ldap_init.sh
    ./ldap_init.sh
    
  3. Выполнить скрипт настройки TLS на сервере LDAP (скрипт создает копию текущей NSS DB, затем создает новую NSS DB, сертификаты и файл pin.txt для запуска сервера без ввода пароля):

    chmod +x ldap_ssl.sh
    ./ldap_ssl.sh
    
  4. После выполнения скрипта перезапустить LDAP-каталог:

    systemctl restart dirsrv.target
    
  5. Если требуется настроить и включить глобальные парольные политики в LDAP, то скорректировать и выполнить скрипт ldap_pwdpolicy.sh:

    chmod +x ldap_pwdpolicy.sh
    ./ldap_pwdpolicy.sh
    
  6. Если требуется создать дополнительные атрибуты:

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

    2. выполнить скрипт создания дополнительных атрибутов, ответить на его вопросы:

      chmod +x ldap_add_attr.sh
      ./ldap_add_attr.sh
      
    3. отредактировать текстовый файл по адресу /etc/dirsrv/slapd-<название инстанса>/schema/99user.ldif, добавить новые атрибуты в objectclass с именем blitz-schema в раздел MAY;

    4. перезапустить LDAP-каталог, чтобы применить изменения схемы каталога:

      systemctl restart dirsrv.target