Управление ролями и пользователями

В этой главе:

Предустановленные роли

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

  • Администратор: предоставляется полный доступ к функционалу FindFace, интеграционным и административным инструментам.

    Важно

    Супер Администратор не может лишиться прав администратора даже при смене роли.

  • Оператор: предоставляется полный доступ к функционалу FindFace.

  • Пользователь: обладает правами на управление происшествиями, а также на изменение данных в своем профиле. Остальные функции доступны в режиме чтения.

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

Создание новой роли

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

  1. Перейдите Настройки -> Роли.

  2. Нажмите + Добавить новую роль.

    create_role_ru

  3. На вкладке Информация задайте имя роли. Сохраните роль.

    role_information_ru

  4. После сохранения роли вы увидите, что рядом с вкладкой Информация появились следующие вкладки:

    role_watchlists_ru

    • Списки наблюдения: права роли на определенные списки наблюдения

    • Группы камер: права роли на определенные группы камер

    • Разрешения: привилегии роли на работу с системными функциями и сущностями

    Задайте права роли в соответствии со своими потребностями. Обратите внимание на разницу между правами на определенный список наблюдения/группу камер и правами на системную сущность watchlist/cameragroup. Например, если вы установите Отсутствует для определенной группы камер на вкладке Группы камер, пользователи с соответствующей ролью не смогут работать с данной группой камер. Снятие всех флажков для сущности cameragroup на вкладке Разрешения не позволит пользователям просматривать и работать со всеми группами камер.

    Полный список сущностей FindFace:

    • case: происшествие

    • caseattachment: загрузка вложений в происшествие

    • faceobject: фотография лица в карточке

    • deviceblacklistrecord: список блокировок

    • watchlist: список наблюдения

    • cameragroup: группа камер

    • uploadlist: список фотографий в пакетной загрузке

    • upload: элемент (фото) в пакетной загрузке

    • user: пользователь

    • report: отчеты

    • all_own_sessions: все сессии текущего пользователя на разных устройствах

      Примечание

      Если для данной сущности установлены соответствующие разрешения, пользователи смогут просматривать (Просмотр) и закрывать (Удалить) все свои сессии на разных устройствах. В противном случае пользователям будет разрешено только просматривать и закрывать свою сессию на текущем устройстве. Работа с сессиями производится на вкладке Сессии (Настройки).

    • humancard: карточка человека

    Вы также можете включать и отключать права на следующий функционал:

  5. Сохраните изменения.

Главная и дополнительная роль пользователя

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

  • Главная роль: основная роль пользователя, обязательная для назначения. Пользователю можно назначить только одну главную роль.

  • Роль: дополнительная роль пользователя, необязательная для назначения. Одному пользователю можно назначить несколько ролей. Связанные с ними права будут добавлены к правам, предоставляемым главной ролью.

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

Создание пользовательского аккаунта вручную

Для создания пользовательского аккаунта вручную выполните следующие действия:

  1. Перейдите Настройки -> Пользователи.

  2. Нажмите + Создать нового пользователя.

    create_user_ru

  3. На вкладке Информация введите данные пользователя, такие как имя, логин и пароль. При необходимости добавьте комментарий.

  4. Из раскрывающегося списка Роли выберите одну или несколько пользовательских ролей. Назначьте одну из них основной.

  5. На вкладке Фотографии прикрепите фотографию пользователя.

  6. Сохраните аккаунт пользователя.

    user_ru

Интеграция с Active Directory для автоматического создания пользователей

При большом количестве пользователей в FindFace создание их аккаунтов по одному может быть неудобным. Одним из способов облегчить создание пользователей является использование интеграции FindFace с Active Directory. Для настройки интеграции руководствуйтесь приведенными ниже пошаговыми инструкциями, соблюдая последовательность действий.

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

Прежде всего вам понадобится установить и настроить на основном сервере FindFace протокол аутентификации Kerberos. Выполните следующие действия:

  1. Установите пакет krb5-kdc.

    sudo apt-get install krb5-kdc
    

    Важно

    Во время установки вам потребуется ввести имя realm. Оно должно совпадать с доменным именем Active Directory, но быть написано в верхнем регистре (TESTNTL.LOCAL в приведенном ниже примере). Остальные окна установки можно пропустить, нажав клавишу Enter.

  2. Найдите раздел realms в файле конфигурации Kerberos /etc/krb5.conf. Укажите в нем домен Active Directory.

    sudo vi /etc/krb5.conf
    
    [realms]
    TESTNTL.LOCAL = {
      kdc = testntl.local
      default_domain = testntl.local
    }
    ...
    
  3. Добавьте следующую строку в файл /etc/hosts: <IP-адрес сервера Active Directory> <имя домена Active Directory>.

    sudo vi /etc/hosts
    
    ...
    192.168.0.5 testntl.local
    

Создание файла Keytab

Войдите на сервер Active Directory и выполните следующие действия:

  1. Создайте новый аккаунт пользователя в домене Active Directory для использования в качестве сервисного аккаунта.

    Выполните следующие действия:

    1. Откройте Active Directory. Нажмите Пуск -> Средства администрирования -> Пользователи и компьютеры Active Directory.

    2. Нажмите на имя домена, а затем разверните содержимое. Щелкните правой кнопкой мыши Пользователи, выберите Создать -> Пользователь. Отобразится форма создания пользователя.

    3. Заполните поля формы на свое усмотрение. На второй вкладке поставьте флажок Срок действия пароля не ограничен.

    4. Нажмите Далее. Проверьте введенные данные и, если все верно, нажмите Готово.

    5. Щелкните правой кнопкой мыши по созданному аккаунту пользователя, а затем перейдите Свойства -> Член групп -> Добавить.

    6. Добавьте в список группы Администраторы домена и Пользователи домена, а затем нажмите «ОК».

    7. Нажмите OK для завершения.

  2. Зарегистрируйте имя субъекта-службы (Service Principal Name, SPN) для созданного сервисного аккаунта. Для этого откройте PowerShell от имени администратора и выполните следующую команду, указав фактическое имя пользователя (вместо SERVICE USER NAME) и домен:

    setspn -A HTTP/<SERVICE USER NAME>.testntl.local@TESTNTL.LOCAL <SERVICE USER NAME>
    
  3. В том же окне PowerShell сгенерируйте keytab-файл, выполнив приведенную ниже команду с фактическим именем сервисного пользователя SERVICE USER NAME, доменом и желаемым именем файла вместо KEYTAB FILE NAME.

    ktpass.exe -princ HTTP/<SERVICE USER NAME>.testntl.local@TESTNTL.LOCAL -mapuser <SERVICE USER NAME> -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass * -out c:\<KEYTAB FILE NAME>.keytab
    

    Чтобы проверить результат, перейдите в корневую директорию диска C. В ней вы увидите keytab-файл с соответствующим именем.

  4. Переместите созданный keytab-файл на сервер FindFace.

  5. Проверьте keytab-файл на сервере FindFace. Для этого выполните в консоли следующую команду, указав фактическое имя сервисного пользователя SERVICE USER NAME, домен и имя keytab-файла KEYTAB FILE NAME.

    kinit -5 -V -k -t <path/to/<KEYTAB FILE NAME>.keytab> HTTP/<SERVICE USER NAME>.testntl.local
    

    Если все в порядке, вы увидите сообщение Authenticated to Kerberos v5.

Перестройка NGINX на сервере FindFace для поддержки Kerberos

Для успешной интеграции FindFace и Active Directory необходимо включить поддержку Kerberos в NGINX, установленном на основном сервере FindFace. Это можно сделать, пересобрав NGINX вместе со сторонним модулем spnego-http-auth-nginx-module.

Важно

Для скачивания spnego-http-auth-nginx-module вам понадобится Git.

Выполните следующие действия:

  1. Загрузите исходники NGINX той же версии, что и в FindFace. В настоящее время это nginx-1.14.0, нажмите здесь для загрузки.

  2. Разархивируйте скачанный архив.

    tar -xf nginx_1.14.0.orig.tar.gz
    
  3. Перейдите в полученную директорию. Склонируйте в него модуль spnego-http-auth-nginx-module.

    git clone https://github.com/stnoonan/spnego-http-auth-nginx-module
    
  4. Установите вспомогательный пакет libkrb5-dev, необходимый для работы spnego-http-auth-nginx-module.

    sudo apt-get install -y libkrb5-dev
    
  5. Установите пакет инструментов для сборки.

    sudo apt-get install build-essential
    
  6. Установите набор пакетов, необходимых для пересборки NGINX.

    sudo apt-get install libpcre3 libpcre3-dev openssl libssl-dev zlib1g zlib1g-dev libxslt-dev libgd-dev libgeoip-dev
    
  7. В консоли выполните следующую команду и скопируйте куда-нибудь список аргументов, который будет отображен в ответе (все, что идет после configure arguments).

    nginx -V
    
    nginx version: nginx/1.14.0 (Ubuntu)
    built with OpenSSL 1.1.1  11 Sep 2018
    TLS SNI support enabled
    configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-KgqPmI/nginx-1.14.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
    
  8. Добавьте модуль spnego-http-auth-nginx-module в компоненты пересборки. Для этого выполните перенастройку NGINX, вызвав утилиту configure с параметром —add-dynamic-module=spnego-http-auth-nginx-module перед списком аргументов.

    Кратко:

    sudo ./configure --add-dynamic-module=spnego-http-auth-nginx-module <argument list>
    

    Пример:

    sudo ./configure --add-dynamic-module=spnego-http-auth-nginx-module --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-KgqPmI/nginx-1.14.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
    
  9. Дождитесь завершения перенастройки NGINX и инициируйте пересборку NGINX, выполнив следующие команды:

    sudo make
    
    sudo make install
    

    В результате будет создан новый файл /usr/lib/nginx/modules/ngx_http_auth_spnego_module.so.

  10. В каталоге /etc/nginx/modules-enabled/ создайте новый файл конфигурации spnego-http-auth-nginx-module.conf со строкой load_module ‘/usr/lib/nginx /modules/ngx_http_auth_spnego_module.so’; внутри.

    sudo vi spnego-http-auth-nginx-module.conf
    
    load_module '/usr/lib/nginx/modules/ngx_http_auth_spnego_module.so';
    
  11. Перезапустите NGINX.

    sudo systemctl reload nginx
    
  12. Откройте файл конфигурации /etc/nginx/sites-available/ffsecurity-nginx.conf. Найдите раздел location /users/me/ad и раскомментируйте его. Заполните раздел по аналогии с примером ниже, поместив свои актуальные переменные в строки с комментариями (#).

    Переменные, которые необходимо указать, следующие:

    • auth_gss_realm: имя realm в Kerberos

    • auth_gss_keytab: путь к keytab-файлу на сервере FindFace

    • auth_gss_service_name: полное имя сервисного пользователя, включая имя домена, к которому он принадлежит

    sudo vi /etc/nginx/sites-available/ffsecurity-nginx.conf
    
    location /users/me/ad {
          proxy_pass http://192.168.0.3/auth/ad_login/; # e.g http://127.0.0.1/auth/ad_login/;
          proxy_method POST;
    
          proxy_set_header   X-Real-IP $remote_addr;
          proxy_set_header   Host $http_host;
          proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header  Authorization $http_authorization;
          proxy_pass_header Authorization;
          proxy_no_cache 1;
          proxy_cache_bypass 1;
    
          auth_gss on;
          auth_gss_realm TESTNTL.LOCAL; # Realm name in Kerberos;
          auth_gss_keytab /home/ubuntu/<KEYTAB FILE NAME>.keytab; # e.g. /var/lib/web.keytab
          auth_gss_service_name HTTP/<service_user>.testntl.local; # e.g. HTTP/web.testntl.local;
          auth_gss_allow_basic_fallback on;
    }
    
  13. Повторно перезапустите NGINX.

    sudo systemctl reload nginx
    

Завершение настройки FindFace

Чтобы завершить интеграцию FindFace с Active Directory, выполните на стороне FindFace следующие действия по настройке:

  1. Откройте файл конфигурации /etc/findface-security/config.py.

    sudo vi /etc/findface-security/config.py
    
  2. В разделе SERVICES установите "active_directory": True.

    SERVICES = {
            ...
            "active_directory": True,
            ...
        }
    }
    
  3. Заполните раздел ACTIVE_DIRECTORY_CONFIG следующим образом:

    • AUTH_LDAP_SERVER_URI: ldap: <IP-адрес сервера Active Directory>

    • AUTH_LDAP_BIND_DN: имя сервисного пользователя, созданного в Active Directory

    • AUTH_LDAP_BIND_PASSWORD: пароль сервисного пользователя

    • SEARCH_GROUPS: организационные единицы Active Directory, в которых FindFace будет выполнять поиск аккаунтов пользователей

    # Specify server credentials
    ACTIVE_DIRECTORY_CONFIG = {
        'AUTH_LDAP_SERVER_URI': 'ldap://192.168.0.5',
        # Domain Administrator user
        'AUTH_LDAP_BIND_DN': '<SERVICE USER NAME IN ACTIVE DIRECTORY>',
        # Domain Administrator user password
        'AUTH_LDAP_BIND_PASSWORD': 'SERVICE USER NAME PASSWORD',
        # Specify organization units where users search will be executed.
        # Follow pattern (e.g. OU=DEV,DC=domain,DC=com)
        'SEARCH_GROUPS': 'OU=DEV,DC=testntl,DC=local',
    }
    
  4. Перезапустите сервис findface-security.

    sudo systemctl restart findface-security.service
    

    Примечание

    Проверьте результат. В списке сервисов должен быть LDAP-сервер.

Управление пользователями FindFace через Active Directory

Если интеграция FindFace с Active Directory включена, вы сможете задать одну из групп Active Directory для создаваемой или редактируемой роли.

ad_role_ru

Как только пользователь из выбранной группы Active Directory впервые войдет в FindFace, он будет автоматически добавлен в список пользователей FindFace.

ad_userlist_ru

Чтобы войти в FindFace с помощью Active Directory, пользователь должен нажать кнопку Войти при помощи Active Directory в окне аутентификации, указать свои учетные данные Active Directory и нажать Sign in.

ad_login_ru

Деактивация или удаление пользователей

Для того чтобы деактивировать пользователя, выключите переключатель Активность в списке пользователей (Настройки -> Пользователи).

Если вы собираетесь деактивировать нескольких пользователей, выберите их в списке и нажмите Деактивировать выбранные.

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