Настройка VOMS-авторизации в ресурсном центре ГридННС (rpm-версия)

Комментарий

Все rpm пакеты протестированы автором и должны работать в 32-битной и 64-битной версии. Кроме того предполагается, что в 64-битной системе нет i?86 пакетов и их установка через yum отключена. Если пакеты ставятся, но не работают, попробуйте сделать поддержку VOMS-авторизации с использованием WSGramVOMSAuthorizationHowto. Текущий документ сильно упрощён по сравнению с WSGramVOMSAuthorizationHowto, чтобы не тратить время администраторов ресурсных центров. Хотя неплохо было бы автоматизировать процесс ещё дальше. Если хочется понять что/где/когда/почему читать WSGramVOMSAuthorizationHowto. Мелкие недочёты документа просьба сразу править здесь.

Установка

Процесс установки предполагает что на узле стыка подключен rpm-репозиторий ГридННС (http://koji.ngrid.ru/ngrid.repo) и EPEL. Процесс установки состоит из трех частей:

  • Установка LCAS, LCMAPS библиотек и зависимостей
  • Сборка и установка модуля VOMS-авторизации для pre-WS сервисов(gridftp)
  • Сборка и установка модуля VOMS-авторизации для WS сервисов

Установка LCAL, LCMAPS библиотек и зависимостей

Установка тривиальна:

  • yum install lcas lcas-plugins-voms lcas-plugins-basic
  • yum install lcmaps lcmaps-plugins-basic lcmaps-plugins-verify-proxy lcmaps-plugins-voms

Сборка и установка модуля VOMS-авторизации для pre-WS сервисов(gridftp)

Сборку пакета предполагается выполнять из под root с установленным GLOBUS_LOCATION. <revision> и <arch> смотреть по факту

  • svn co https://svn.ngrid.ru/pkgs/lcas-lcmaps-gt4-interface
  • cd lcas-lcmaps-gt4-interface/trunk
  • yum install lcas-devel lcmaps-devel
  • make srpm
  • rpmbuild --rebuild lcas-lcmaps-gt4-interface-0.1.1.1-<revision>.src.rpm
  • rpm -i --force --nodeps /usr/src/redhat/RPMS/<arch>/lcas-lcmaps-gt4-interface-0.1.1.1-<revision>.<arch>.rpm

Сборка и установка модуля VOMS-авторизации для WS сервисов

Сборку пакета предполагается выполнять из под root с установленным GLOBUS_LOCATION. <revision> и <arch> смотреть по факту

  • svn co https://svn.ngrid.ru/pkgs/lcas-lcmaps-gt4-pdp
  • cd lcas-lcmaps-gt4-pdp/trunk
  • yum install lcas-devel lcmaps-devel lcmaps-plugins-verify-proxy-devel
  • make srpm
  • rpmbuild --rebuild lcas-lcmaps-gt4-pdp-1.1-<revision>.src.rpm
  • rpm -i --force --nodeps /usr/src/redhat/RPMS/<arch>/lcas-lcmaps-gt4-pdp-1.1-<revision>.<arch>.rpm

Настройка VOMS-авторизации

Настройка включает в себя:

  • Подключение в LCAS, LCMAPS pool-ов аккаунтов
  • Настройка модуля VOMS-авторизации для pre-WS сервисов(gridftp)
  • Настройка модуля VOMS-авторизации для WS сервисов
  • Разное

Подключение в LCAS, LCMAPS pool-ов аккаунтов

Предполагается что на кластере в ресурсном центре для каждой поддерживаемой VO существует unix-группа с таким же именем и аккаунты имена которых совпадают с именем группы+числовой суффикс. Данные аккаунты должны иметь в качестве основной группы вышеуказанную группу. Например если ресурсный центр поддерживает VO sysadmin(далее все настройки на примере VO sysadmin), то на машинах кластера:

  • должна существовать группа sysadmin
  • должны существовать аккаунты вида sysadmin01, sysadmin02 и т.д. с основной группой sysadmin.

Настройка:

  • Добавить в /etc/vomses строку вида (можно просто установить пакет ngrid-voms и скопировать содержимое файла /usr/share/ngrid-voms/ngrid-vomses, удалив ненужное):
    "sysadmin" "voms.ngrid.ru" "15004" "/C=RU/O=NanoGrid/OU=hosts/OU=sinp.msu.ru/CN=voms.ngrid.ru" "sysadmin"
    
    Сама строка имет следующий формат:
    "alias" "machine address" "tcp port" "host dn" "official vo name"
    
  • Добавить в /etc/grid-site/grid-mapfile строку:
    "/sysadmin" .sysadmin
    
  • Добвить в /etc/grid-site/groupmapfile строку:
    "/sysadmin" sysadmin
    
  • Создать в /etc/grid-site/vomsdir директорию sysadmin и в ней файл voms.ngrid.ru.lsc с содержимым:
    /C=RU/O=NanoGrid/OU=hosts/OU=sinp.msu.ru/CN=voms.ngrid.ru
    /C=RU/O=NanoGrid/CN=NanoGrid CA
    
  • Создать в директории /etc/grid-security/gridmapdir (хотя IMHO эта директория должна идти в /var) пустые файлы с названиями аккаунтов группы sysadmin, т.е. sysadmin01, sysadmin02 и т.д.

Настройка модуля VOMS-авторизации для pre-WS сервисов(gridftp)

Скопировать файл /etc/grid-security/gsi-authz.conf.voms в /etc/grid-security/gsi-authz.conf

Настройка модуля VOMS-авторизации для WS сервисов

Заменить в файлах:

  • globus_delegation_service/factory-security-config.xml
  • globus_delegation_service/service-security-config.xml
  • globus_wsrf_rft/factory-security-config.xml
  • globus_wsrf_rft/security-config.xml
  • globus_wsrf_gram/managed-job-factory-security-config.xml
  • globus_wsrf_gram/managed-job-security-config.xml

секцию

<interceptor name="gridmap"/>

на

<interceptor name="lcas-lcmaps-pdp:ru.ngrid.security.LcasLcmapsPDP"></interceptor>

Разное

С помощью команды visudo дописать в конец /etc/sudoers:

Runas_Alias GLOBUSUSERS = %sysadmin

Defaults>GLOBUSUSERS !requiretty
Defaults>globus !requiretty

globus  ALL=(GLOBUSUSERS) NOPASSWD:     ALL

Убедится что пользователь globus может делать sudo в sysadmin01, sysadmin02 и т.д.

Заменить $GLOBUS_LOCATION/libexec/globus-gridmap-and-execute на

#!/usr/bin/perl

my @arg=@ARGV;
if ($ARGV[0] eq "-g"){
  shift @arg;
  shift @arg;
}
exec @arg;

По умолчанию однажды занятые для конкретных пользовательских DN локальные учётные записи не освобождаются никогда. Если однако этот вариант не желателен, можно включить автоматическое освобождение связок DN - локальная учётная запись по истечении некоторого времени после последнего использования локальной учётной записи.

Для этого необходимо в настройки плагина lcmaps_voms_poolaccount.mod в файлах /etc/grid-security/lcmaps/lcmaps.db и /etc/grid-security/lcmaps/lcmaps-java.db добавить опцию "-lease_timeout <seconds>". Где <seconds> время после последнего использования учётной записи через LCMAPS, после которого она считается свободной. Поддерживается только в версии lcmaps-plugins-voms-1.4.0.2-3 из репозитория ngrid.