Puede proteger las invocaciones de beans gestionados (MBean) en un entorno distribuido.
Para obtener más información sobre los MBeans, consulte Administración con beans gestionados (MBeans).
JMX proporciona métodos para que los servidores de tipo conector autentiquen los clientes remotos. Para el conector RMI, la autenticación se completa proporcionando un objeto que implementa la interfaz JMXAuthenticator cuando se crea el servidor de conector. Así, eXtreme Scale implementa esta interfaz JMXAuthenticator para utilizar el plug-in Authenticator de ObjectGrid para autenticar los clientes remotos. Consulte Guía de aprendizaje de seguridad de Java SE - Paso 2 para obtener información detallada sobre cómo eXtreme Scale autentica un cliente.
El cliente JMX sigue las API de JMX para proporcionar credenciales y establecer conexión con el servidor conector. La infraestructura JMX pasa la credencial al servidor conector, y después llama a la implementación de JMXAuthenticator para obtener la autenticación. Como se ha descrito anteriormente, la implementación de JMXAuthenticator delega la autenticación a la implementación de ObjectGrid Authenticator.
Observe el ejemplo siguiente que describe cómo establecer conexión con un servidor conector mediante una credencial:
javax.management.remote.JMXServiceURL jmxUrl = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:1099/objectgrid/MBeanServer");
environment.put(JMXConnector.CREDENTIALS, new UserPasswordCredential("admin", "xxxxxx"));
// Crear JMXCconnectorServer
JMXConnector cntor = JMXConnectorFactory.newJMXConnector(jmxUrl, null);
// Conectar e invocar una operación en MBeanServer remoto
cntor.connect(environment);
En el ejemplo anterior, se proporciona un objeto UserPasswordCredential con el ID de usuario establecido en admin y la contraseña establecida en xxxxx. Este objeto UserPasswordCredential se establece en la correlación de entorno, que se utiliza en el método JMXConnector.connect(Map). A continuación, este objeto UserPasswordCredential lo pasa al servidor la infraestructura JMX y, finalmente, se pasa a la infraestructura de autenticación de ObjectGrid para la autenticación.
El modelo de programación de cliente cumple la especificación JMX de manera estricta.
Un servidor MBean JMX puede tener acceso a información confidencial y realizar operaciones confidenciales. JMX ofrece el control de acceso necesario que identifica qué clientes pueden acceder a la información y qué clientes pueden llevar a cabo las operaciones. El control de accesos se crea en el modelo de seguridad Java estándar definiendo los permisos que controlan el acceso al servidor MBean y sus operaciones.
Para el control de accesos o la autorización de la operación JMX, eXtreme Scale se basa en el soporte JAAS proporcionado por la implementación de JMX. En cualquier punto de la ejecución de un programa, hay un conjunto de permisos actuales contenido por una hebra de ejecución. Cuando dicha hebra llama a una operación de la especificación JMX, estos permisos se denominan permisos mantenidos. Cuando se realiza una operación JMX, se realiza una comprobación de seguridad para verificar que el permiso necesario está implicado en el permiso mantenido.
La definición de política MBean sigue el formato de la política Java. Por ejemplo, la política siguiente otorga a todos los firmantes y a todas las bases de código el derecho a recuperar la dirección JMX del servidor para PlacementServiceMBean. Sin embargo, los firmantes y las bases de código están restringidos al dominio com.ibm.websphere.objectgrid.
grant {
permission javax.management.MBeanPermission
"com.ibm.websphere.objectgrid.management.PlacementServiceMBean#retrieveServerJMXAddress
[com.ibm.websphere.objectgrid:*,type=PlacementService]",
"invoke";
}
Puede utilizar el siguiente ejemplo de política para completar la autorización basada en la identidad de cliente remoto. La política otorga el mismo permiso MBean que se muestra en el ejemplo anterior, salvo que sólo para los usuarios con el nombre X500Principal como: CN=Administrator,OU=software,O=IBM,L=Rochester,ST=MN,C=US.
grant principal javax.security.auth.x500.X500Principal "CN=Administrator,OU=software,O=IBM,
L=Rochester,ST=MN,C=US" {permission javax.management.MBeanPermission
"com.ibm.websphere.objectgrid.management.PlacementServiceMBean#retrieveServerJMXAddress
[com.ibm.websphere.objectgrid:*,type=PlacementService]",
"invoke";
}
Las políticas Java sólo se comprueban si el gestor de seguridad está activo. Inicie los servidores de catálogo y los servidores de contenedor con el argumento JVM -Djava.security.manager para aplicar el control de acceso de operaciones MBean.
El transporte entre el cliente y el servidor JMX se puede proteger con TLS/SSL. Si el valor transportType del servidor de catálogo o servidor de contenedor está establecido en SSL_Required o SSL_Supported, utilice SSL para conectarse al servidor JMX.
Es necesario establecer el puerto de servicio JMX si desea visualizar información del servidor de contenedor desde el servidor de catálogo. Por ejemplo, es necesario el puerto cuando se utiliza el mandato xscmd -c showMapSizes.