MyProxy – La infraestructura de gestión de credenciales X.509 para entornos Grid y computación científica
Descripción del programa MyProxy
MyProxy es un software de código abierto para la gestión de credenciales de seguridad X.509 PKI (Public Key Infrastructure), diseñado para entornos de computación Grid y ciencia de datos a gran escala. Su función principal consiste en proporcionar un repositorio centralizado y seguro donde los usuarios pueden almacenar sus certificados digitales y claves privadas, y obtener credenciales proxy temporales cuando y donde las necesitan sin tener que transferir claves privadas a través de la red.
El sistema fue desarrollado en el National Center for Supercomputing Applications (NCSA) de la Universidad de Illinois.
La historia de MyProxy comenzó a principios de los años 2000, cuando la comunidad de computación Grid necesitaba una forma segura y eficiente de gestionar credenciales para trabajos de larga duración y servicios que actuaban en nombre de los usuarios.
A lo largo de los años, el software ha evolucionado hasta convertirse en un componente fundamental de infraestructuras Grid como XSEDE, OSG y EGEE. La versión estable más reciente es la 6.2.16, lanzada en 2024-2025.
El software está disponible en los repositorios de las principales distribuciones Linux (Debian, Ubuntu, RHEL, Fedora, OpenCloudOS) y se distribuye bajo licencias BSD, NCSA y Apache 2.0.
Lo más destacado de MyProxy reside en su capacidad para delegar credenciales de forma segura. El sistema combina un repositorio de credenciales con una autoridad de certificación (CA) integrada, permitiendo a los usuarios obtener credenciales cuando las necesitan sin tener que gestionar archivos de certificados y claves privadas.
Las credenciales se almacenan cifradas en el repositorio, protegidas por contraseñas y políticas de seguridad configurables por el administrador. Mediante el protocolo de delegación de credenciales proxy, MyProxy permite a los usuarios delegar sus credenciales a servicios (como portales Grid o clústeres de computación) que actúan en su nombre, sin exponer la clave privada original.
Para proteger tu infraestructura mientras gestionas credenciales, conviene mantener activadas las medidas de seguridad en Windows.
Características clave de MyProxy
1. Repositorio centralizado de credenciales X.509
MyProxy proporciona un repositorio en un servidor seguro donde los usuarios pueden almacenar sus certificados X.509 y claves privadas. Las credenciales se almacenan cifradas y se asocian con políticas que especifican los tiempos de vida de las credenciales y quién está autorizado a recuperarlas. Este repositorio elimina la necesidad de que los usuarios mantengan sus archivos de credenciales en múltiples sistemas, reduciendo los riesgos de seguridad asociados a la pérdida o exposición de claves privadas.
2. Delegación de credenciales proxy sin exponer claves privadas
Una de las funcionalidades más importantes de MyProxy es su capacidad para delegar credenciales proxy a servicios que actúan en nombre del usuario. Mediante el protocolo de delegación, los usuarios pueden otorgar a un servicio (como un portal web o un sistema de gestión de trabajos) la capacidad de actuar en su nombre sin necesidad de transferir su clave privada a través de la red.
El servicio obtiene una credencial proxy limitada en el tiempo que puede utilizar para autenticarse en otros recursos Grid en nombre del usuario.
3. Autoridad de certificación (CA) integrada
MyProxy incluye una funcionalidad de CA que permite emitir credenciales de sesión de corta duración a usuarios autenticados. Para usuarios que aún no poseen credenciales PKI, la MyProxy CA proporciona un método conveniente para obtenerlas. La funcionalidad de repositorio y CA pueden utilizarse juntas o por separado, ofreciendo flexibilidad en la configuración de la infraestructura de seguridad.
4. Múltiples mecanismos de autenticación y autorización
MyProxy soporta una amplia variedad de mecanismos de autenticación para controlar el acceso a las credenciales. Entre los métodos soportados se encuentran:
- Contraseña (passphrase): Autenticación tradicional mediante contraseña
- Certificado X.509: Autenticación mediante certificado digital
- Kerberos, OAuth, SAML, OpenID, Pubcookie: Protocolos de autenticación federada
- PAM, LDAP, RADIUS, SASL: Integración con sistemas de autenticación corporativos
- Moonshot, One Time Passwords (OTP): Autenticación con contraseñas de un solo uso
Las políticas de autorización se definen tanto a nivel de servidor (configuraciones globales) como por credencial individual (políticas por usuario), proporcionando un control granular sobre quién puede almacenar y recuperar credenciales.
5. Herramientas de línea de comandos para usuarios
MyProxy incluye un conjunto completo de utilidades de línea de comandos que permiten a los usuarios interactuar con el servicio:
- myproxy-init: Almacena credenciales en el repositorio
- myproxy-logon: Obtiene credenciales proxy del repositorio
- myproxy-store: Almacena credenciales existentes en el repositorio
- myproxy-retrieve: Recupera credenciales almacenadas
- myproxy-info: Consulta información sobre credenciales almacenadas
- myproxy-destroy: Elimina credenciales del repositorio
- myproxy-change-pass-phrase: Cambia la contraseña asociada a las credenciales
- myproxy-get-trustroots: Obtiene certificados de CA de confianza
6. Herramientas de administración para operadores
Para los administradores del servicio, MyProxy ofrece utilidades de administración que permiten gestionar usuarios y credenciales:
- myproxy-admin-adduser: Añade usuarios al repositorio
- myproxy-admin-change-pass: Cambia contraseñas de usuarios
- myproxy-admin-load-credential: Carga credenciales en el repositorio
- myproxy-admin-query: Consulta el estado del repositorio
7. Arquitectura cliente-servidor con protocolo seguro
MyProxy sigue una arquitectura cliente-servidor donde el servidor (myproxy-server) se ejecuta en un host seguro y gestiona la base de datos de credenciales. Por defecto, el servidor escucha en el puerto 7512 y utiliza cifrado SSL/TLS para proteger las comunicaciones. Las credenciales almacenadas se cifran con contraseñas de usuario, garantizando que incluso si el repositorio se ve comprometido, las claves privadas no puedan ser utilizadas sin la contraseña correspondiente.
Explicación detallada de las funcionalidades
El funcionamiento de MyProxy se basa en un flujo de trabajo diseñado para entornos Grid. En primer lugar, un usuario que posee un certificado X.509 ejecuta myproxy-init para almacenar sus credenciales en el repositorio. Durante este proceso, el usuario establece una contraseña (passphrase) que protegerá el acceso a sus credenciales. También puede definir políticas que especifiquen quién está autorizado a recuperar las credenciales y por cuánto tiempo.
Posteriormente, cuando el usuario necesita autenticarse para ejecutar un trabajo en un clúster Grid, puede ejecutar myproxy-logon en el sistema remoto. Este comando se conecta al servidor MyProxy, se autentica utilizando la contraseña previamente establecida (u otros mecanismos como certificados), y descarga una credencial proxy de corta duración.
Esta credencial proxy se almacena en el sistema remoto y puede utilizarse para autenticarse en otros recursos durante un período limitado.
Para servicios que actúan en nombre del usuario (como un portal Grid), el usuario puede delegar sus credenciales proporcionando su nombre de usuario y contraseña al servicio. El servicio se conecta al servidor MyProxy y obtiene una credencial proxy delegada con privilegios limitados que le permite actuar en nombre del usuario sin necesidad de acceder a la clave privada original. Esta credencial puede tener un tiempo de vida más corto y restricciones adicionales.
La renovación automática de credenciales es otra funcionalidad importante. Los trabajos de larga duración (como simulaciones científicas) pueden configurarse para renovar sus credenciales proxy antes de que expiren utilizando myproxy-logon con opciones de renovación automática. Esto garantiza que los trabajos no fallen debido a credenciales caducadas, incluso si se ejecutan durante semanas o meses.
Descarga e instalación de MyProxy
- Página oficial: myproxy.ncsa.illinois.edu (información) y github.com/myproxy (código fuente)
- Versión actual: 6.2.16 (2024-2025)
- Tamaño: Variable (paquetes de aproximadamente 40-50 KB para los binarios, dependencias adicionales)
- Sistemas operativos compatibles:
- Linux: Debian, Ubuntu, RHEL, Fedora, CentOS, OpenCloudOS (paquetes oficiales)
- Unix: Solaris (compilación desde código fuente)
- Windows: No hay versión nativa; puede utilizarse a través de WSL o máquinas virtuales
- Requisitos mínimos: Servidor Linux con entorno Java o Python según configuración, puerto 7512 disponible
- Licencia: NCSA, BSD-2-Clause, BSD-4-Clause, Apache-2.0
- Idiomas: Inglés (interfaz de línea de comandos)
- Soporte técnico: Documentación en grid.ncsa.illinois.edu, listas de correo, GitHub Issues
Cómo usar MyProxy
Paso 1: Instalación
En sistemas Linux basados en Debian/Ubuntu, instala MyProxy con:
sudo apt update
sudo apt install myproxy-server myproxy-clientEn sistemas RHEL/CentOS/Fedora:
sudo dnf install myproxy-server myproxy-clientPaso 2: Configurar el servidor
Edita el archivo de configuración /etc/myproxy-server.config. Las opciones principales incluyen:
authorized_retrievers:DNs autorizados para recuperar credencialestrusted_retrievers:DNs confiables para recuperacióncertificate_issuer_cert:Ruta al certificado de la CAcertificate_issuer_key:Ruta a la clave privada de la CA
Para iniciar el servidor:
sudo systemctl start myproxy-server
sudo systemctl enable myproxy-serverPaso 3: Almacenar credenciales (usuario)
Como usuario, utiliza myproxy-init para almacenar tus credenciales:
myproxy-init -s servidor.myproxy.org -l nombre_usuarioSe te solicitará una contraseña (passphrase) que protegerá tus credenciales en el repositorio.
Paso 4: Obtener credenciales proxy
Para obtener una credencial proxy en un sistema remoto:
myproxy-logon -s servidor.myproxy.org -l nombre_usuario -o ~/.globus/proxy.pemIntroduce tu contraseña cuando se solicite. La credencial proxy se almacenará en el archivo especificado.
Paso 5: Usar credenciales con aplicaciones Grid
Una vez obtenida la credencial proxy, puedes utilizarla con herramientas Grid estándar:
export X509_USER_PROXY=~/.globus/proxy.pem
globus-job-run... # o cualquier aplicación GridObservaciones sobre el programa MyProxy
La principal diferencia técnica de MyProxy frente a otras soluciones de gestión de credenciales radica en su especialización en el ecosistema Grid y computación científica. Mientras que herramientas como HashiCorp Vault o AWS Secrets Manager están diseñadas para entornos de nube empresarial, MyProxy fue desarrollado específicamente para las necesidades de la infraestructura de computación Grid, con soporte para credenciales X.509, proxy delegation y certificados de corta duración.
Los beneficios prácticos son evidentes en entornos de ciencia a gran escala. Los trabajos que se ejecutan durante semanas o meses en supercomputadoras pueden renovar automáticamente sus credenciales sin intervención humana.
Los portales científicos pueden delegar credenciales de los usuarios para acceder a recursos en su nombre sin almacenar claves privadas. Además, la centralización de credenciales reduce la superficie de ataque al evitar que las claves privadas se distribuyan por múltiples sistemas.
El software ha sido ampliamente adoptado en infraestructuras Grid internacionales, incluyendo XSEDE (Extreme Science and Engineering Discovery Environment), OSG (Open Science Grid), EGI (European Grid Infrastructure) y WLCG (Worldwide LHC Computing Grid). Su madurez y estabilidad lo convierten en un componente fundamental de la ciberseguridad en la investigación científica.
Limitaciones importantes:
- ❌ No tiene interfaz gráfica; requiere uso de línea de comandos
- ❌ Diseñado para entornos Linux/Unix; no hay versión nativa para Windows
- ❌ La configuración inicial puede ser compleja para administradores sin experiencia en PKI
- ❌ Requiere infraestructura de CA para emisión de certificados si se utiliza la funcionalidad de CA integrada
- ❌ La dependencia de X.509 y Grid Security Infrastructure (GSI) lo hace menos adecuado para entornos que no utilicen estas tecnologías
Si gestionas una infraestructura de computación científica que requiere autenticación segura y delegación de credenciales, MyProxy es la solución estándar en la comunidad Grid. Para entornos de desarrollo modernos, alternativas como HashiCorp Vault ofrecen funcionalidades similares con soporte multiplataforma.
Sección FAQ
¿MyProxy es gratis o de pago?
MyProxy es completamente gratuito y de código abierto. Se distribuye bajo licencias NCSA, BSD-2-Clause, BSD-4-Clause y Apache-2.0. Puede descargarse, utilizarse y modificarse sin coste.
¿Funciona en Windows 10, Windows 11 y macOS?
No hay versiones nativas para Windows o macOS. En Windows, puede ejecutarse a través de WSL (Windows Subsystem for Linux) o en máquinas virtuales Linux. En macOS, puede compilarse desde el código fuente o instalarse a través de gestores de paquetes como Homebrew en versiones que soporten las dependencias necesarias.
¿Qué diferencia a MyProxy de otros gestores de credenciales?
La principal diferencia es su especialización en credenciales X.509 y entornos Grid. MyProxy está diseñado para el ecosistema de computación científica, con soporte para delegación de credenciales proxy, renovación automática para trabajos de larga duración y autenticación con Grid Security Infrastructure (GSI). Otras soluciones como HashiCorp Vault o AWS Secrets Manager están orientadas a entornos de nube empresarial.
¿Cómo obtengo credenciales X.509 para usar MyProxy?
Si tu organización no proporciona credenciales X.509, puedes obtener un certificado de una CA reconocida en la comunidad Grid, como CILogon (cilogon.org). CILogon proporciona certificados X.509 a investigadores afiliados a instituciones académicas y de investigación en EE.UU. y Europa. También puedes utilizar la CA integrada de MyProxy si la configuras en tu propia infraestructura.
¿Qué puerto utiliza MyProxy?
Por defecto, myproxy-server escucha en el puerto 7512. Este puerto puede modificarse con la opción -p al iniciar el servidor o en el archivo de configuración. La comunicación entre cliente y servidor está cifrada con SSL/TLS.
