Лабораторная работа 3. Установка и настройка Globus Toolkit

Цель работы:

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

Дано описание для версии Globus Toolkit 4.2.1. Требуется загрузить соответствующую версию пакета с сайта toolkit.globus.org. По желанию, студенты могут самостоятельно освоить работу с последней версией пакета. В таком случае настоящий порядок определяет общую схему работы, а некоторые детали должны быть уточнены самостоятельно с использованием документации соответствующей версии пакета.

Не забывать настраивать переменную окружения GLOBUS_TOOLKIT, как описано в 1.3.

Работа выполняется на одной линукс-машине. Однако, надо понимать, что она выступает в трех ролях:
1) в роли персонального компьютера пользователя, собирающегося пользоваться ресурсами грид
2) в роли компьютера, на котором располагается Сертификационное агенство
3) в роли компьютера, предоставляющего ресурс (Grid-FTP сервис) в грид-систему.

0. Необходимый софт:
0.1. apache-ant. На директорию должна указывать переменная окружения ANT_HOME
0.2. sun jdk. На директорию должна указывать переменная окружения JAVA_HOME

1. Сборка и установка пакета Globus Toolkit
1.1. Создать пользователя с именем globus. Он будет использоваться для выполнения административных задач таких как старт и остановка контейнера, разворачивание сервисов, управления сертификационным агенством SimpleCA и т.д.
1.2. Выбрать директорию (например /sandbox) для установки Globus-toolkit и дать права чтения и записи на эту директорию пользователю globus.
1.3. Установить переменную окружения $GLOBUS_LOCATION=/sandbox
1.4. От имени пользователя globus в каталоге с дистрибутивом запустить конфигурирование:
./configure --prefix=$GLOBUS_LOCATION
1.5. make
1.6. make install

2. Установка сертификационного агенства SimpleCA
2.1. Выполнить интерактивную команду установки $GLOBUS_LOCATION/setup/globus/setup-simple-ca
необходимо отвечать на вопросы:
2.1.1. Формирование уникального имени:
cn Represents "common name". Identifies this particular certificate as the CA certificate within the "GlobusTest/simpleCA-hostname" domain, which in this case is Globus Simple CA.
ou Represents "organizational unit". Identifies this CA from other CAs created by SimpleCA by other people. The second "ou" is specific to your hostname (in this cases GlobusTest).
o Represents "organization". Identifies the Grid.
2.1.2. Указать почтовый адрес CA
2.1.3. Установить срок истечения валидности сертификата
2.1.4. Установка ключевой фразы (passphrase) (без пробелов). Эта ключевая фраза используется для подписи всех сертификатов, выдаваемых CA. Например "123456".

Генерируются ключи и пакет /home/globus/.globus/simpleCA//globus_simple_ca_HASH_setup-0.17.tar.gz, который нужно передавать всем лицам, желающим получить сертификат.
2.1.5. Завершение установки GSI:
от имени root запустить (HASH был указан в выводе предыдущей команды (например 5e10dfd5)):
$GLOBUS_LOCATION/setup/globus_simple_ca_HASH_setup/setup-gsi -default
Происходит установка сертификатов CA в каталог /etc/grid-security

3. Получение сертификатов для машины (хоста).
3.1. Запрос сертификата. От имени root выполнить команду:
$GLOBUS_LOCATION/bin/grid-cert-request -host "hostname"
в результате генерируется ключ машины
/etc/grid-security/hostkey.pem
и форма запрос в сертификационное агенство:
/etc/grid-security/hostkey.pem/hostcert-request.pem
3.2. Поскольку мы пользуемся своим собственным сертификационным агенством SimpleCA, то мы сами и подписываем запрошенный сертификат:
от имени globus выполнить:
$GLOBUS_LOCATION/bin/grid-ca-sign -in /etc/grid-security/hostcert_request.pem -out hostsigned.pem
потребуется ввести ключевую фразу, которая была указана при создании CA в п. 2.1.4.
3.3. От имени root переместить полученный hostsigned.pem в /etc/grid-security/hostcert.pem .
/etc/grid-security/hostcert.pem должен принадлежать root, а все остальные пользователи должны иметь право только читать его.

4. Получение сертификата пользователя. В примерах используется имя аккаунта "user".
4.1. От имени user запустить: $GLOBUS_LOCATION/bin/grid-cert-request
Получим файлы:
* /home/maxim/.globus/usercert.pem (пустой)
* /home/maxim/.globus/userkey.pem
* /home/maxim/.globus/usercert_request.pem
Нужно послать usercert_request.pem в сертификационное агенство и ожидать ответа. Но, поскольку, мы сами -- сертификационное агенство, то
4.2. Подписывание пользовательского сертификата:
От имени пользователя globus
$GLOBUS_LOCATION/bin/grid-ca-sign -in usercert_request.pem -out signed.pem
4.3. Полученный на предыдущем шаге файл сертификата signed.pem, от имени пользователя user поместить файл в /home/user/.globus/ как usercert.pem. Файл должен принадлежать пользователю user, а остальные пользователи должны иметь право только на его чтение.

5. Проверка. Запуск grid-proxy от имени пользователя user:
$GLOBUS_LOCATION/bin/grid-proxy-init -debug -verify

---------
Настройка безопасности
От имени пользователя globus
6. Настройка окружения
6.1. Установить переменную окружения GLOBUS_LOCATION=/sandbox
export GLOBUS_LOCATION=/sandbox
6.2. Запустить скрипт инициализации окружения:
. $GLOBUS_LOCATION/etc/globus-user-env.sh
6.5. Добавление авторизации пользователей (отображения сертификатов на локальных пользователей).
6.5.1. От имени root создать файл: /etc/grid-security/grid-mapfile
6.6.1. Файл отображает сертификаты на имена пользователей машины. Каждая строка файла содержит certificat subject (заголовок сертификата), за которым следует имя пользователя машины.
Например, пользователь user может выполнить команду
$GLOBUS_LOCATION/bin/grid-cert-info -subject
чтобы вспомнить заголовок своего сертификата:
/O=Grid/OU=GlobusTest/OU=simpleCA-ssd1000.sscc.ru/OU=sscc.ru/CN=Ivan Ivanov
Добавление строки в grid-mapfile осуществляется командой от имени root:
$GLOBUS_LOCATION/sbin/grid-mapfile-add-entry -dn "/O=Grid/OU=GlobusTest/OU=simpleCA-ssd1000.sscc.ru/OU=sscc.ru/CN=Ivan Ivanov" -ln user
---------

7. Настройка сервиса GridFTP
7.1. От имени root cоздать файл /etc/xinetd.d/gridftp с содержанием:
service gsiftp
{
instances = 100
socket_type = stream
wait = no
user = root
env += GLOBUS_LOCATION=/sandbox
env += LD_LIBRARY_PATH=/sandbox/lib
server = /sandbox/sbin/globus-gridftp-server
server_args = -i
log_on_success += DURATION
disable = no
}
7.2. Добавить в конец файла /etc/services строку
gsiftp 2811/tcp
7.3. Обновить состояние сервисов. Команда от имени root:
/etc/init.d/xinetd reload
7.4. Проверить, что сервис gsiftp слушает порт:
netstat -an | grep 2811
7.5. Проверить работу сервиса gsiftp:
7.5.1. От имени пользователя user создать proxy:
$GLOBUS_TOOLKIT/bin/grid-proxy-init
7.5.1. От имени пользователя user запустить передачу файла:
$GLOBUS_TOOLKIT/bin/globus-url-copy gsiftp://localhost/etc/group file:///home/user/group.copy
Сравнить содержимое файлов /etc/group и /home/user/group.copy

------------------

8. Чтобы использовать пользовательские сертификаты на другой машине, нужно
8.1. Получить у сертификационного агенства файл с пакетом для установки. В нашем случае, нужно взять файл /home/globus/.globus/simpleCA/globus_simple_ca_HASH_setup-0.17.tar.gz (см. п. 2.1.4).
8.2. Установить этот пакет от имени root на новой машине (где уже установлен globus_toolkit):
$GLOBUS_LOCATION/sbin/gpt-build globus_simple_ca_HASH_setup-0.17.tar.gz gcc32dbg
8.3. Завершить установку GSI, как в п. 2.1.5:
от имени root запустить (HASH был указан в выводе предыдущей команды (например 5e10dfd5)):
$GLOBUS_LOCATION/setup/globus_simple_ca_HASH_setup/setup-gsi -default
8.4. Если нужно на этой машине запускать грид-сервисы, то тогда нужно получить для нее сертификат (п. 3) и настроить grid-mapfile