Sie können MBean-Aufrufe (Managed Beans) in einer verteilten Umgebung sichern.
Weitere Informationen zu den verfügbaren MBeans finden Sie unter Verwaltung mit Managed Beans (MBeans).
JMX stellt den Connector-Servern Methoden für die Authentifizierung der fernen Clients zur Verfügung. Für den RMI-Connector wird die Authentifizierung durchgeführt, indem beim Erstellen des Connector-Servers ein Objekt übergeben wird, das die Schnittstelle JMXAuthenticator implementiert. Deshalb implementiert eXtreme Scale die Schnittstelle JMXAuthenticator, um das ObjectGrid-Authenticator-Plug-in zu nutzen, um die fernen Clients zu authentifizieren. Einzelheiten zum Authentifizierung eines Clients in eXtreme Scale finden Sie unter Lernprogramm zur Java-SE-Sicherheit - Schritt 2.
Der JMX-Client folgt den JMX-APIs, um die Berechtigungsnachweise für die Verbindungsherstellung zum Connector-Server bereitzustellen. Das JMX-Framework übergibt die Berechtigungsnachweise an den Connector-Server und ruft dann die JMXAuthenticator-Implementierung für die Authentifizierung auf. Wie zuvor beschrieben, delegiert die JMXAuthenticator-Implementierung die Authentifizierung an die ObjectGrid-Authenticator-Implementierung.
Sehen Sie sich das folgende Beispiel an, das veranschaulicht, wie mit einem Berechtigungsnachweis eine Verbindung zu einem Connector-Server hergestellt wird:
javax.management.remote.JMXServiceURL jmxUrl = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:1099/objectgrid/MBeanServer");
environment.put(JMXConnector.CREDENTIALS, new UserPasswordCredential("admin", "xxxxxx"));
// JMXConnectorServer erstellen
JMXConnector cntor = JMXConnectorFactory.newJMXConnector(jmxUrl, null);
// Verbindung herstellen und eine Operation im fernen MBeanServer aufrufen
cntor.connect(environment);
Im vorherigen Beispiel wird ein UserPasswordCredential-Objekt mit der Benutzer-ID admin und dem Kennwort xxxxx bereitgestellt. Dieses UserPasswordCredential-Objekt wird in der Umgebungs-Map gesetzt, die von der Methode JMXConnector.connect(Map) verwendet wird. Anschließend wird dieses UserPasswordCredential-Objekt über das JMX-Framework zunächst an den Server und schließlich zur Authentifizierung an das ObjectGrid-Authentifizierungsframework übergeben.
Das Clientprogrammiermodell folgt strikt der JMX-Spezifikation.
Ein JMX-MBean-Server kann Zugriff auf sensible Informationen haben und deshalb in der Lage sein, sensible Operationen durchzuführen. JMX stellt die erforderliche Zugriffssteuerung bereit, die feststellt, welche Clients auf diese Informationen zugreifen und welche Clients diese Operationen durchführen dürfen. Die Zugriffssteuerung wird in das Java-Standardsicherheitsmodell integriert, indem Berechtigungen definiert werden, die den Zugriff auf den MBean-Server und seine Operationen steuern.
Bei der Zugriffssteuerung und -berechtigung für JMX-Operationen stützt sich eXtreme Scale auf die JAAS-Unterstützung, die die JMX-Implementierung bereitstellt. Zu jedem beliebigen Zeitpunkt während der Ausführung eines Programms besitzt ein Ausführungs-Thread einen aktuellen Satz an Berechtigungen. Wenn ein solcher Thread eine Operation der JMX-Spezifikation aufruft, handelt es sich um die so genannten "gehaltenen Berechtigungen". Bei der Durchführung einer JMX-Operation wird eine Sicherheitsprüfung durchgeführt, um festzustellen, ob die "gehaltenen Berechtigungen" die erforderliche Berechtigung abdecken.
Die MBean-Richtliniendefinition folgt dem Java-Richtlinienformat. Die folgende Richtlinie erteilt beispielsweise allen Unterzeichnern und allen Codebasen das Recht, die JMX-Adresse des Servers für die MBean "PlacementServiceMBean" abzurufen. Die Unterzeichner und die Codebasen werden jedoch in der Domäne "com.ibm.websphere.objectgrid" registriert.
grant {
permission javax.management.MBeanPermission
"com.ibm.websphere.objectgrid.management.PlacementServiceMBean#retrieveServerJMXAddress
[com.ibm.websphere.objectgrid:*,type=PlacementService]",
"invoke";
}
Sie können das folgende Richtlinienbeispiel verwenden, um die Berechtigung auf der Basis der Identität des fernen Clients durchzuführen. Die Richtlinie erteilt dieselben MBean-Berechtigungen wie im vorherigen Beispiel, aber nur den Benutzern mit dem X500Principal-Namen 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";
}
Java-Richtlinien werden nur geprüft, wenn der Sicherheitsmanager aktiviert ist. Starten Sie Katalogserver und Container-Server mit dem JVM-Argument "-Djava.security.manager", um die Zugriffssteuerung für MBean-Operationen umzusetzen.
Der Transport zwischen dem JMX-Client und dem Server kann mit TLS/SSL gesichert werden. Wenn das Attribut "transportType" des Katalogserver oder Containerservers auf "SSL_Required" oder "SSL_Supported" gesetzt ist, müssen Sie SSL verwenden, um die Verbindung zum JMX-Server herzustellen.
Die Definition des JMX-Service-Ports ist erforderlich, wenn Sie Informationen zum Container-Server aus dem Katalogserver anzeigen möchten. Der Port ist beispielsweise erforderlich, wenn Sie den Befehl xscmd -c showMapSizes verwenden.