Vous pouvez sécuriser les invocations de beans gérés (MBean) dans un environnement réparti.
Pour plus d'informations sur les beans gérés disponibles, voir Administration avec les beans gérés (MBeans).
JMX offre des méthodes aux serveurs de connecteur pour authentifier les clients distants. Pour le connecteur RMI, l'authentification est effectuée en fournissant un objet qui implémente l'interface JMXAuthenticator lors de la création du serveur de connecteur. Par conséquent, eXtreme Scale implémente cette interface JMXAuthenticator à utiliser le plug-in ObjectGrid Authenticator pour authentifier les clients distants. Voir Tutoriel sur la sécurité Java SE - Etape 2 pour plus de détails sur l'authentification d'un client par eXtreme Scale.
Le client JMX suit les API JMX pour offrir des données d'identification permettant la connexion au serveur de connecteur. L'infrastructure JMX transmet les données d'identification au serveur de connecteur et appelle l'implémentation JMXAuthenticator pour l'authentification. Comme décrit précédemment, l'implémentation JMXAuthenticator délègue ensuite l'authentification à l'implémentation de l'authentificateur ObjectGrid.
Passez en revue l'exemple présenté ci-dessous, qui décrit comment établir la connexion à un serveur de connecteur à l'aide de données d'identification :
javax.management.remote.JMXServiceURL jmxUrl = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:1099/objectgrid/MBeanServer");
environment.put(JMXConnector.CREDENTIALS, new UserPasswordCredential("admin", "xxxxxx"));
// Créez le JMXCconnectorServer
JMXConnector cntor = JMXConnectorFactory.newJMXConnector(jmxUrl, null);
// Connectez et appelez une opération sur le MBeanServer distant
cntor.connect(environment);
Dans l'exemple précédent, un objet UserPasswordCredential est fourni avec l'ID utilisateur admin et le mot de passe xxxxx. Cet objet UserPasswordCredential est défini dans la mappe d'environnement qui est utilisée dans la méthode JMXConnector.connect(Map). Cet objet UserPasswordCredential est ensuite transmis au serveur par l'infrastructure JMX, puis à l'infrastructure d'authentification ObjectGrid pour authentification.
Le modèle de programmation client respecte strictement les spécifications JMX.
Un serveur de beans gérés JMX peut avoir accès aux informations sensibles et peut être en mesure d'effectuer des opérations sensibles. JMX offre le contrôle d'accès requis permettant d'identifier les clients pouvant accéder à telles ou telles informations et qui peut effectuer ces opérations. Le contrôle d'accès repose sur le modèle de sécurité Java standard en définissant des autorisations de contrôle d'accès au serveur de beans gérés et aux opérations correspondantes.
Pour le contrôle d'accès ou l'autorisation des opérations JMX, eXtreme Scale repose sur le support JAAS fourni par l'implémentation JMX. A n'importe quel stade de l'exécution d'un programme, il existe un ensemble d'autorisations maintenu dans une unité d'exécution. Lorsqu'une unité d'exécution appelle une opération de spécification JMX, ces autorisations sont connues sous le terme d'autorisations de maintien. Lorsqu'une opération JMX est effectuée, une vérification de sécurité est réalisée pour vérifier si l'autorisation requise est concernée par l'autorisation de maintien.
La définition des règles d'administration de beans gérés respecte le format de la stratégie Java. Par exemple, la stratégie suivante octroie à tous les signataires et bases de code le droit d'extraire l'adresse JMX du serveur pour PlacementServiceMBean avec une restriction pour le domaine com.ibm.websphere.objectgrid domain.
grant {
permission javax.management.MBeanPermission
"com.ibm.websphere.objectgrid.management.PlacementServiceMBean#retrieveServerJMXAddress
[com.ibm.websphere.objectgrid:*,type=PlacementService]",
"invoke";
}
Vous pouvez utiliser l'exemple de stratégie suivant pour compléter l'autorisation en fonction de l'identité du client distant. La stratégie octroie la même autorisation de bean géré que celle présentée dans l'exemple précédent, sauf pour les utilisateurs dont le nom X500Principal est : 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";
}
Les stratégies Java sont uniquement vérifiées si le gestionnaire de sécurité est activé. Démarrez les serveurs de catalogue et les serveurs de conteneur à l'aide de l'argument JVM -Djava.security.manager pour forcer le contrôle d'accès des opérations de beans gérés.
Le transfert entre le client et le serveur JMX peut être sécurisé à l'aide du protocole TLS/SSL. Si le type de transfert du serveur de catalogues ou du serveur conteneur est défini sur SSL_Required ou SSL_Supported, vous devez utiliser le protocole SSL pour établir la connexion au serveur JMX.
Vous devez définir le port de service JMX si vous souhaitez afficher les informations du serveur de conteneur à partir du serveur de catalogue. Par exemple, le port est requis lorsque vous utilisez la commande xscmd -c showMapSizes.