Настройка

Настройка приложения после установки: локальные конфиг-файлы, режимы авторизации и аутентификации, а также справочник дополнительных параметров (params).

Настройка производится посредством файлов в папке config/:

  • params-local.php - основные опции приложения: если не указано иное, то настройки вписываются именно сюда. Переопределяет значения по умолчанию из params.php (сам params.php не редактируем - он обновляется вместе с приложением)
  • db-local.php - параметры БД
  • ldap.php - параметры LDAP backend для аутентификации
  • web-local.php - низкоуровневое переопределение параметров Yii движка

Авторизация

Приложение поддерживает следующие режимы авторизации пользователей:

  • Отсутствие контроля прав - в таком режиме выполнять все действия может любой человек получивший веб доступ (ограничения могут быть настроены на уровне авторизации веб сервера или ограничения по IP). Приложение работает в таком режиме по умолчанию
  • Требование аутентификации для работы - для доступа к данным нужно будет пройти аутентификацию, выполнив “Вход”. Для этого должна быть настроена аутентификация и выставлен параметр php 'authorizedView'=>false, //аутентификация достаточна для авторизации
    • false - (по умолчанию) не требовать аутентификацию,
    • true - требовать аутентификацию для работы
  • RBAC - Role Based Access Control, в таком режиме каждому пользователю необходимо задавать разрешения на просмотр, редактирование и изменение доступа пользователей. Для этого должна быть настроена аутентификация и выставлен параметр php 'useRBAC'=>false, //включить RBAC и выдавать права только тем кому они явно назначены
    • false - (по умолчанию) ничего не требовать - у всех полные права
    • true - права назначаются явно каждому пользователю, по умолчанию никто ничего не может (исключение: если при этом authorizedView выключен, просмотр открыт всем — см. таблицу ниже)

Комбинации аутентификации и RBAC:

authorizedView useRBAC результат
false false аутентификации, авторизации и ограничений в правах нет - всем можно все
true false аутентификация требуется, полные права у всех аутентифицированных
false true аутентификация не требуется, просмотр доступен всем (в том числе без входа), права на изменение нужно выдавать явно — действуют они после аутентификации
true true аутентификация требуется, и никаких прав по умолчанию нет, все права нужно выдавать явно

Аутентификация

Чтобы пользователь мог вводить пароль, надо их где-то хранить, вариантов всего два

Local backend

Хэши паролей (bcrypt) будут храниться прямо в БД. Для включения такого режима нужно выставить параметр

'localAuth'=>true,          //включить локальную БД паролей

LDAP backend

Для этого локальное хранение паролей должно быть отключено:

'localAuth'=>false,         //включить локальную БД паролей

Настройки LDAP указываются следующим образом: нужно создать файл config/ldap.php следующего содержания:

<?php
return [
    'class'=>'Edvlerblog\Adldap2\Adldap2Wrapper',
    'providers'=> [
        'default'=>[
            'autoconnect'=>true,
            'config'=>[
                'port'      => 636,
                //'port'      => 389,
                'hosts'    => ['dc1.domain.local','dc2.domain.local'],
                'account_suffix' =>  '@domain.local',
                'base_dn' => "DC=domain,DC=local",
                //под кем подключиться к АД (подойдет любой пользователь. права админа не нужны)
                'username' => 'inventory@domain.local',
                'password' => 'SuperSecretPassword1!',
                'use_ssl'   => true,
                'use_tls'   => true,
                'custom_options'   => [
                    // See: http://php.net/ldap_set_option
                    LDAP_OPT_X_TLS_REQUIRE_CERT => LDAP_OPT_X_TLS_NEVER
                ],
            ],
        ],
    ],
];

Быстрый старт

  • Стартуем приложение без контроля доступа php 'authorizedView'=>false, 'useRBAC'=>false,
  • Заводим пользователя вручную (на этом этапе для этого не нужно ни полномочий ни авторизации), допустим это пользователь pupkin
  • Настраиваем аутентификацию (включаем локальную или настраиваем LDAP)
  • В случае локальной аутентификации создаем(сбрасываем) пароль созданному пользователю pupkin
  • Включаем RBAC php 'useRBAC'=>true,
  • Если роль admin еще не создана (при установке шаг «Роли» был пропущен) — создаем: bash php yii rbac/init либо при работе в докер контейнере bash docker exec -it "arms-arms-app-1" php yii rbac/init
  • Выдаем pupkin права админа из консоли bash php yii rbac/grant admin pupkin либо при работе в докер контейнере bash docker exec -it "arms-arms-app-1" php yii rbac/grant admin pupkin
  • Авторизуемся под pupkin
  • ???
  • PROFIT

Params

Дополнительные параметры определяются в файле config/params-local.php в формате

<?php
return [
    'param'=>'value',
];

Значения по умолчанию (и полный перечень параметров) можно посмотреть в файле config/params.php.

Авторизация/аутентификация

  • authorizedView: true|false требовать авторизации для работы с системой
  • useRBAC: true|false использовать разграничение прав на базе ролей
  • localAuth: true|false использовать локальную БД паролей для авторизации (иначе LDAP)

Настройки генератора номеров оборудования

  • techs.invNumStrPads: количество знаков числовой части инвентарного номера в зависимости от количества префиксов. Default: [9,6,4] - без префикса 9, с одним префиксом 6, с двумя 4; последнее значение действует и для большего числа префиксов.

    Пример:

    000000001 //0 префиксов - 9 цифр
    МСК-000001 //1 префикс - 6 цифр
    МСК-ПРН-0001 //2 префикса - 4 цифры
    МСК-IT-ПРН-0001 //3 префикса также 4 цифры
    
  • techs.prefixFormat: формат автоматического формирования префикса инв. номера. Default: ['place','org','type'] - сначала префикс помещения, потом организации-владельца оборудования, потом тип оборудования
  • techs.invNumMaxLen: максимальная длина в которую будет пытаться уложиться формирование инв. номера уменьшая по возможности. Default: 15 (Внимание, макс. размер поля - 16 знаков)

Дополнительная маркировка

  • techs.uidLabel: название дополнительной маркировки оборудования. Напр. QR-код, Штрих-код. Default: Доп. маркировка
  • techs.uidHint: подсказка для заполнения дополнительной маркировки оборудования. Default: Какая-либо дополнительная маркировка нанесенная на оборудование

Сети

  • networkDescribeSegment: показывать описание сегмента сети на страничке сети. Default: auto
    • true - да
    • false - нет
    • auto - если нет описания самой сети
  • networkInlineDescriptionLimit: максимальное количество строк описания сети которое выводить прямо на страничку. Все что больше будет скрыто во вкладку на страничке. Default: 20

Домены

  • domains.default: какой домен подставлять в ОС и оборудование, если домен явно не указан. Default: workgroup
  • domains.fqdn_hostname: true|false отображать hostname как FQDN (иначе как DOMAIN\host). Default: false

Подразделения

  • departments.enable: включить использование функциональных подразделений (если оргструктура организаций не отображает функционального разделения на отделы)
    • true - включить
    • false - выключить (по умолч.)

Ответственные/поддержка

  • support.service.min.weight: минимальный вес сервиса, необходимый для учета его команды как поддержка узла/оборудования на котором он живет. Например если задать тут 20, то команда сервиса весом в 10 не будет считаться поддержкой серверов и оборудования сервиса (предполагается что там должны быть более весомые сервисы для этого)
  • techs.managementService.enable: вместо закрепления сотрудника ИТ за оборудованием закреплять сервис/услугу сопровождения оборудования (удобно если оборудования много и надо менять ответственного везде: проще поменять одного ответственного за сервис)
  • services.no_backup.warn: true|false предупреждать, если у сервиса не объявлены требования на резервное копирование. Default: true

Пользователи

Софт

  • soft.deferred_rescan: отложенный рескан софта: в случае изменения состава ПО необходимо пересканировать все ОС на предмет наличия там этого ПО. В случае большого количества ОС - процедура весьма медленная.
    • true - отложенный режим: при изменении элемента ПО в справочнике ПО только список ОС для rescan. Необходимо через cron регулярно вызывать команду yii comps/rescan, которая будет сканировать по 100 ОС за раз
    • false - realtime режим: при изменении элемента ПО в справочнике ПО все ОС будут проверены заново на состав ПО.

Интеграция с Wiki

  • wikiUrl: адрес dokuWiki для интеграции
  • wikiUser: логин для подключения к dokuWiki
  • wikiPass: пароль для подключения к dokuWiki
  • confluenceUrl, confluenceUser, confluencePass: аналогичные параметры для подключения Confluence (см. интеграцию с wiki)

Документы

  • docs.pay_id.enable - Использовать поле для идентификации документа в реестре оплат (для отслеживания оплаты)
  • docs.pay_id.name - Наименование ключа в реестре оплат ЗНП
  • docs.name.instruction - Инструкция для правильного формирования имени документа
  • docs.max_preview_size - Предельный размер документа больше которого он не подгружается в форму просмотра, а требует клика для открытия.

Документация

  • docsOverridePath: путь к каталогу переопределения встроенной документации. Встроенная справка приложения - MD-файлы в docs/help; если указать здесь каталог с той же структурой, его страницы будут иметь приоритет над встроенными (можно переопределять и дополнять справку под свою организацию).