Este documento describe los pasos a seguir para la instalación de PURSe y de los portlets para la utilización de PURSe. PURSe consiste en un sistema para el registro de usuarios de aplicaciones web que utilizan GSI. PURSe coordina el proceso de obtención de certificados para nuevos usuarios y permite a los usuarios que tienen certificados válidos registrarse fácilmente en el portal.
Este documento no realiza presunciones respecto de software ya instalado, excepto por aquellas herramientas indicadas expresamente en la sección de prerrequisitos.
Los siguientes términos y abreviaturas son utilizados en el presente documento:
Término o Abreviatura |
Definición |
PURSe |
Portal-Based User Registration Service |
PKI |
Public Key Infrastructure |
GT |
Globus Toolkit, cuando la sigla sea seguida por un número, éste se referirá a la versión |
GRAM |
Globus Resource Allocation and Management |
GSI |
Grid Security Infrastructure |
MDS |
Monitoring and Discovery Service |
GRIS |
Grid Resource Information Service |
GIIS |
Grid Index Information Service |
RFT |
Reliable File Transfer |
RLS |
Replica Location Service |
OGSA |
Open Grid Services Architecture |
SOAP |
Simple Object Access Protocol |
XML |
Extensible Markup Language |
WS |
Web Service |
WSRF |
Web Services Resource Framework |
JDBC |
Java Database Connectivity |
CA |
Certificate Authority (entidad certificadora) |
PEM |
Privacy-Enhanced Mail (referido a encriptación) |
W3C |
World Wide Web Consortium |
DN |
Distinguished Name |
CN |
Common Name |
OU |
Organizational Unit |
GGF |
Global Grid Forum |
GUI |
Graphical User Interface |
A continuación se detallan los documentos relacionados:
Documento |
Descripción |
GSI involucra un sistema de criptografía asimétrica (es decir, de clave pública y privada). La clave privada es protegida mediante un password, denominado passphrase. De acuerdo con GSI, cada usuario o servicio es identificado mediante un certificado, que contiene información que permite su identificación y autenticación. Esta información incluye el subject name del objeto o persona representado por el certificado, su clave pública, la identidad de la CA que firmó el certificado, y la firma digital de la CA. Los certificados en GSI se codifican en formato X.509.
Una credencial combina un certificado con la clave privada correspondiente, y permite la comunicación de entidades de manera segura. Las credenciales están encriptadas con una passphrase. PURSe utiliza MyProxy, que es un repositorio online de credenciales, y permite obtener un proxy para utilizar los servicios del grid sin necesidad de obtener un certificado de usuario en cada máquina.
PURSe es un sistema destinado a simplificar el alta de nuevos usuarios en aplicaciones web que utilizan seguridad de tipo GSI (basada en PKI y la utilización de certificados X.509). PURSe se utiliza para coordinar la obtención de certificados para nuevos usuarios, y para la registración de dichos usuarios en el portal. Para el manejo de las credenciales, PURSe utiliza un repositorio de credenciales MyProxy.
Los portlets para la utilización de PURSe abordados en este documento son un conjunto de portlets administrativos que sirven de interfaz con el sistema PURSe. Estos portlets incluyen interfaces para el registro de usuarios en el portal, portlets destinados a los usuarios del mismo, y que le permiten realizar acciones sobre su cuenta, y portlets destinados a la administración de nuevos usuarios por parte del administrador del portal.
Para instalar el sistema PURSe, obtener en primer lugar el archivo tar correspondiente a sistema. En este caso, se trata del archivo purse-1.0.1.tar.gz, que se puede obtener de http://www.extreme.indiana.edu/portals/purse-portlets/downloads.html.
Descomprimir dicho archivo en un directorio en el host que contiene el portal.
/usr/local# tar -zxvf purse-1.0.1.tar.gz
El directorio en el que se descomprima PURSe (en este caso /usr/local/purse) será referido a partir de ahora como $PURSE_HOME.
PURSe utiliza una base de datos MySQL para almacenar su información, por ejemplo estado de los pedidos de certificados.
Para crear la base de datos, ejecutar:
mysqladmin -h <dbHostName> -u <user> [-p] create purseDatabase
Donde dbHostName es el nombre de host (o ip) de la máquina que contiene el servidor MySQL, y user es un usuario administrador del servidor MySQL (por ejemplo root).
A continuación, crear el schema de la base purseDatabase mediante el comando:
mysql -u <user> [-p] purseDatabase < $PURSE_HOME/etc/purse_database_schema.sql
Luego, es necesario agregar un usuario mediante el cual se accederá ala base recién creada. Para ello, ingresar al servidor MySQL y darle permisos a dicho usuario nuevo:
mysql -u <user> [-p]
mysql> GRANT ALL ON purseDatabase.* TO 'purseuser'@'localhost' IDENTIFIED BY 'password';
Donde purseuser es el nombre elegido para el nuevo usuario, y password es el password que se le ha asignado.
Una vez configurada la base, es necesario ejecutar el comando ant bootstrap sobre el directorio $PURSE_HOME.
Para ello, primeramente, configurar el archivo test.properties del directorio $PURSE_HOME para que sea consistente con la configuración de la base de datos, como se muestra a continuación.
# Most of the properties listed below are required for bootstrap
# Those that are present only for testing are marked.
#Database properties
dbDriver=com.mysql.jdbc.Driver
dbConnectionURL=jdbc:mysql://nombre_del_host/purseDatabase
dbUsername=
dbPassword=
dbPropFile=etc/databaseFilename
# Used to encrypt passwords stored in database
passPhrase=passPhrase
#Mail properties
caAddress=
purseAdminAddr=
#Mail server stuff
.............
#Mail templates stuff
.............
portalBaseUrl=
caBaseUrl=
.............
#Portal URL
caBaseUrl=
.............
# Location of simple CA executables
binLocation=
tmpLocation=
# MYproxy properties
myProxyHost=
myProxyPort=
myProxyBin=
myProxyDn=dummy
myProxyDir=
expirationLeadTime=1
# CA cert passphrase
caPassPhrase=
# Reject token
.............
# Mail signer properties
signerCertificate=
signerKey=
signerPass=
Luego, ejecutar el comando ant bootstrap desde el directorio $PURSE_HOME.
El deployment de los portlets de PURSe se hace de la manera habitual en la que se hace deploy de portlets en Gridsphere (o el portlet container que se utilice, en caso de ser otro). Los portlets son provistos en forma de un archivo war, y existen dos versiones: una específica para instalar sobre Gridsphere y una genérica, para utilizar con otros portlet containers. Los archivos war correspondientes a cada una de las modalidades pueden obtenerse de http://www.extreme.indiana.edu/portals/purse-portlets/downloads.html.
El método recomendado para efectuar el deploy de los portlets consiste en acceder al portal como un usuario con privilegios de administrador del mismo, y utilizar la interfaz del portlet Portlet Application Manager del tab Administration para indicar el war correspondiente.
Para que Gridsphere reconozca como portlet al war recién instalado, ejecutar el comando:
touch $CATALINA_HOME/webapps/gridsphere/WEB-INF/CustomPortal/portlets/purse-portlets
De ser necesario, para completar la instalación, ubicar los archivos jar provistos en el archivo shared-lib-jars.tar.gz que se puede obtener del sitio http://www.extreme.indiana.edu/portals/purse-portlets/downloads.html en el directorio shared/lib del servidor Tomcat correspondiente al portal. Verificar que ninguno de los archivos copiados ya se encuentre en dicho directorio (aún si fuera una versión distinta, no generar duplicados). Notar que el archivo cog-jglobus provisto en este archivo de librerías compartidas contiene la clase StoreParams. La misma no existe en otros archivos de cog-jglobus, por lo que el archivo deberá ser reemplazado de ser el caso.
Los portlets para la utilización de PURSe incluyen el archivo web.xml, ubicado en $CATALINA_HOME/webapps/purse-portlets/WEB-INF/web.xml, en el cual se pueden agregar o quitar módulos de registro. Cada módulo de registro se especifica en la forma de context parameters de la siguiente manera:
<context-param>
<param-name>PurseRegistrationModule_0</param-name>
<param-value>org.ogce.purse.impl.GridSphereRegistrationModule</param-value>
</context-param>
El atributo param-name debe comenzar con PurseRegistrationModule y terminar con un identificador único, en general un número entero incrementado en uno por cada context-param.
En principio, la configuración default del archivo web.xml es suficiente.
Es necesario, por otra parte, configurar el archivo purse.properties. Para ello, copiar primeramente el archivo purse.properties.template del directorio $CATALINA_HOME/webapps/purse-portlets/WEB-INF/ al archivo purse.properties.
Luego, editar dicho archivo, completando los parámetros que se indican a continuación.
#
# NOTE: Lines that you must edit are marked with "->"
#
# The PURSE installation directory containing messages etc.
# This is used to expand configuration entries below to real,
# absolute file names using ${...} syntax.
purse.dir=
# Most of the properties listed below are required for bootstrap
# Those that are present only for testing are marked.
dbDriver=com.mysql.jdbc.Driver
dbConnectionURL=
dbUsername=
dbPassword=
dbPropFile=${purse.dir}/etc/databaseFilename
............
# Used to encrypt passwords stored in database
passPhrase=
#Mail properties
caAddress=
purseAdminAddr=
............
#Mail server stuff
outgoingProtocol=smtp
outgoingHost=
outgoingPort=25
............
#Portal URL
portalBaseUrl=
# Admin/Registration Authority look-at-details URL
caBaseUrl=
# user registration confirmation URL
userBaseUrl=
...........
# Location of simple CA executables
binLocation=
tmpLocation=
# MyProxy settings
myProxyHost=
myProxyPort=7512
myProxyBin=
myProxyDn=
myProxyDir=/var/myproxy
expirationLeadTime=600
#Optional CA Properties
caDir=
caHash=
Finalmente, crear si es necesario el directorio tmpLocation y asignarle permisos modo 777.
El sistema PURSe requiere acceso directo a una entidad certificadora, ya sea porque dicha simpleCA reside está instalada en el mismo host que el portal, o porque se ha compartido el directorio en la red.
En caso de que la simpleCA instalada y el portal estén en el mismo host, puede utilizarse la simpleCA ya instalada. En caso contrario, deberá instalarse una nueva simpleCA para el portal en el host que lo contiene, y establecer confianza cruzada con el resto de las entidades certificadoras.
Es importante que el usuario bajo el cual corre el portal tenga acceso de escritura al directorio de la simpleCA. No es necesario que la nueva simpleCA sea configurada como default, ya que los archivos de configuración de PURSe permiten especificar el hash de la simpleCA a utilizar. Para indicar el directorio en el cual crear la simpleCA, utilizar el modificador -dir de la siguiente manera:
Como root:
$GLOBUS_LOCATION/setup/globus/setup-simple-ca -dir directorio_de_la_nueva_CA
/usr/local/globus-4.0.2/setup/globus_simple_ca_HASH_setup/setup-gsi
chown usuario_portal:usuario_portal -R directorio_de_la_nueva_CA
Los portlets de PURSe utilizan un repositorio MyProxy para el almacenamiento de credenciales. En el archivo de configuración myproxy-server.config de la máquina donde reside el servidor myproxy, agregar en caso de que falte la línea:
authorized_key_retrievers "*"
Para eliminar un usuario:
Borrar el usuario del portal en Gridsphere utilizando la interfaz provista en la solapa de administración.
Borrar el usuario de la base de datos de PURSe, accediendo al servidor MySQL y borrando la entrada correspondiente de la tabla user_table.
mysql -u purseuser -p -D purseDatabase
DELETE FROM user_table WHERE user_name = nombre_usuario;
Borrar la credencial del repositorio MyProxy con:
myproxy-destroy -s myproxy.host -l nombre_usuario
Borrar el certificado generado para nombre_usuario dentro del subdirectorio newcerts del directorio de la CA del portal. Borrar también la línea correspondiente en el archivo index.txt del directorio de la CA del portal.