Differenzierte MBean-Sicherheit im MBean-Deskriptor

Wenn Sie eine differenzierte Verwaltungssicherheit implementieren möchten, muss Ihr Code die Ressourceninstanz angeben, die die verwaltete Bean (MBean) darstellt und dem Benutzer die erforderliche Rolle für diese Instanz der Ressource zuordnen. Dieser Artikel erläutert, wie Sie die Ressource ermitteln und die erforderliche Rolle zuordnen. Außerdem wird beschrieben, wie Sie eine MBean-Methode unter einer anderen Benutzer-ID ausführen können, sodass die Methode auf andere Ressourceninstanzen zugreifen kann. Abschließend wird in diesem Artikel erläutert, wie Sie mit Programmschnittstellen prüfen, ob eine MBean-Methode Zugriff auf eine Ressourceninstanz besitzt.

Vorbereitende Schritte

Für diese Task werden Grundkenntnisse in der Programmierung von MBeans vorausgesetzt. Weitere Informationen zur MBean-Programmierung finden Sie in der Dokumentation zu den MBean-Java™-APIs. Klicken Sie im Information Center auf Referenz > Mbean-Schnittstellen.

Informationen zu diesem Vorgang

Führen Sie die folgende Task aus, um sicherzustellen, dass eine MBean oder MBean-Methode geschützt ist. Ermitteln Sie die Ressourceninstanz, die die MBean bzw. MBean-Methode darstellt, und ordnen Sie ihr die erforderlichen Rollen für den Zugriff auf die MBean zu. Führen Sie diese Task während der Entwicklung der MBean aus.

Vorgehensweise

  1. Bestimmen Sie die Ressourceninstanz, die die MBean darstellt, und die erforderlichen Rollen für den Aufruf der MBean-Methoden.

    Jede MBean-Methode hat eine MBean-Standardsicherheitsrichtlinie. Wenn die MBean-Methode die Standardsicherheitsrichtlinie verwendet, wird davon ausgegangen, dass die Ressourceninstanz, die die MBean darstellt, der Server ist, in dem die MBean ausgeführt wird. Wenn eine MBean oder MBean-Methode eine andere Ressourceninstanz als den Server, in dem sie ausgeführt wird, darstellt, führen Sie die folgenden Schritte aus:

    1. Ermitteln Sie die Ressourceninstanz, die die MBean darstellt.
      • Wenn eine MBean, z. B. die Server-MBean, auf den Server zugreift und den Server ändert, in dem die MBean ausgeführt wird, geben Sie keine Sicherheitsrichtlinie an, um zu prüfen, ob dem Benutzer, der die MBean aufruft, der Zugriff auf den Server erteilt wird, weil die Standardsicherheitsrichtlinie aktiv ist. In den meisten Fällen verwenden Sie eine MBean, um auf den Server zuzugreifen und diesen zu ändern.
      • Wenn eine MBean, die in einem Server ausgeführt wird, auf Ressourcen, die nicht direkt zum Server gehören, zugreifen und diese ändern kann, prüfen Sie, ob dem Benutzer, der die MBean aufruft, Zugriff auf die Instanz der Ressource erteilt wird, bevor Sie die Ausführung der MBean-Methode zulassen.

        In den meisten Fällen können Sie die Ressourceninstanz identifizieren, indem Sie das Schlüssel-Wert-Paar im Objektnamen der MBean identifizieren, das die Ressourceninstanz repräsentiert. Das Attribut resourceIndentifierKey definiert den Schlüssel.

        Sie können beispielsweise die MBean "EJBModule" verwenden, um auf ein EJB-Modul in einer auf dem Server ausgeführten Anwendung zuzugreifen. In diesem Fall enthält der Objektname der MBean EJBModule ein Schlüssel-Wert-Paar. Der Schlüssel ist Application. Der Wert ist die Ressourceninstanz, auf die die MBean EJBModule zuzugreifen versucht. Der Benutzer, der diese MBean-Methode aufruft, wird zuerst überprüft, um sicherzustellen, dass er Zugriff auf diese Instanz der Anwendung besitzt, bevor die Ausführung der MBean-Methode zugelassen wird.

        Das folgende Beispiel zeigt, wie Sie die differenzierte Verwaltungssicherheit für die MBean des Typs "EJBModule" im MBean-Deskriptor beschreiben:
        <?xml version="1.0" encoding="UTF-8"?> 
        <!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
        <MBean type="EJBModule" j2eeType="EJBModule"
          version="5.0"
          platform="dynamicproxy"
          resourceIdentifierKey="Application"
          resourceType="Application"
          deployerMBean="true"
          description="Verwaltungsschnittstelle für die Komponente EJBModule.">
      • Wenn Sie die Ressource bestimmen können, auf die die MBean zugreift, bevor die MBean aufgerufen wird, Sie jedoch nicht den Objektnamen der MBean verwenden können, um die Ressourceninstanz zu bestimmen, auf die die MBean zugreift, verwenden Sie stattdessen Parameter, die an die MBean übergeben werden.

        Identifizieren Sie den Parameternamen der MBean-Methode dessen Parameterwert der Ressourceninstanz entspricht. Kennzeichnen Sie die entsprechenden Parameter-Metadaten im MBean-Deskriptor als Ressourcen-ID. Fügen Sie das Attribut resourceType hinzu, um einen Parameter als Ressourcen-ID zu kennzeichnen. Das Attribut gibt den Typ der Ressource an, der den Parameterwert enthält. Wenn das Attribut resourceType in einem beliebigen MBean-Methodenparameter vorhanden ist, bestimmt der Parameterwert die Ressourceninstanz, die die MBean-Methode repräsentiert.

        Es wird beispielsweise in jedem Server eine Instanz der MBean "ApplicationManager" ausgeführt. Dieselbe MBean kann zum Starten und Stoppen aller Anwendungen im Server verwendet werden. Die Start- und Stoppmethoden dieser MBean verwenden jeweils den Anwendungsnamen als Parameter. Sie verwenden den Parameter, um die Instanz der Anwendung zu bestimmen, auf die diese MBean-Methode zuzugreifen versucht.

        Das folgende Beispiel zeigt, wie Sie die differenzierte Verwaltungssicherheit für diesen Typ der MBean im MBean-Deskriptor beschreiben:
        <operation
            description="Anwendung starten"
            impact="ACTION" name="startApplication" role="operation"
            targetObjectType="objectReference" type="void" proxyInvokeType="spray">
            <signature>
             <parameter description="Anwendungsname" resourceType="Application"
                name="applicationName" type="java.lang.String"/>
            </signature>
        </operation>
      • Wenn die Ressource, auf die die MBean zugreift, erst bestimmt werden kann, wenn die MBean aufgerufen wird, prüfen Sie mithilfe von APIs, ob der Benutzer, der die MBean aufruft, Zugriffsberechtigung für die Ressourceninstanz besitzt.

        Setzen Sie im MBean-Deskriptor für die MBean oder die MBean-Methode das Attribut excludeAccessCheck, um sie von der Zugriffsprüfung auszuschließen. Wenn die Zugriffsprüfung einer MBean auf diese Weise ausgeschlossen wurde, entfällt auch die Prüfung aller zugehörigen Methoden.

        Die im Deployment Manager ausgeführte MBean ConfigService wird beispielsweise verwendet, um alle Ressourcen innerhalb einer Zelle zu konfigurieren. Schließen Sie diese MBean von der Zugriffsprüfung aus, bevor Sie die MBean-Methoden aufrufen. Vergewissern Sie sich, dass die MBean ConfigService auf die Konfigurationsressource zugreifen kann, wenn die MBean versucht, auf die Ressource zuzugreifen.

        Das folgende Beispiel zeigt, wie Sie die differenzierte Verwaltungssicherheit für die MBean des Typs "ConfigServices" im MBean-Deskriptor beschreiben:
        <?xml version="1.0" encoding="UTF-8"?> 
        <!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
        <MBean
          version="5.0"
          platform="proxy"
            collaboratorClass="com.ibm.ws390.management.proxy.ConfigServiceManager"
          description="Die Komponente Config Service stellt zusätzlich zum Konfigurations-Repository-Service
        konfigurationsbezogene Tasks bereit."
          type="ConfigService"
          excludeAccessCheck="true"
          configureMBean="true">
        Einige Anweisungen sind zur besseren Lesbarkeit auf mehrere Zeilen verteilt.
        Das folgende Beispiel zeigt, wie Sie die MBean-Methodenlogik aufrufen, um Berechtigungsprüfungen programmgesteuert durchzuführen:
        // Rufen Sie AdminAuthorizer ab.
        AdminAuthorizer aa = AdminAuthorizerFactory.getAdminAuthorizer();
        // Geben Sie die Rolle an, der für diese Operation erforderlich ist.
        String role = com.ibm.ws.security.util.Constants.CONFIG_ROLE;
        // Legen Sie den Ressourcennamen fest.
        // cells/cellName ist optional.
        String resource = "/nodes/"+ nodeName + /servers/" + serverName;
        // Zugriff prüfen
        if ( aa != null && !aa.checkAccess(resource, role) )
           // Zugriff nicht zulassen
           else
              // Zugriff zulassen
    2. Erforderliche Rollen für die MBean und MBean-Methoden zuordnen.

      Wie in dem Artikel zur Standardsicherheitsrichtlinie für MBeans beschrieben, werden die erforderlichen Rollen, basierend auf dem Typ der MBean und der Auswirkung auf die MBean-Methode, automatisch zugeordnet.

  2. Delegierungsmodus angeben.

    In einigen Fällen kann es sein, dass die MBean-Methode nach der ersten Zugriffsüberprüfung unter einer anderen Benutzer-ID ausgeführt werden muss, damit sie auf andere Ressourceninstanzen zugreifen kann. Die Operation "syncNode" in der MBean "CellSync" beispielsweise weist dem Benutzer die Rolle "Bedienung" (Operator) für die Instanz des zu synchronisierenden Knotens zu. Die Operation "syncNode" versucht, auf Ressourcen im zellenweiten Geltungsbereich zuzugreifen. Der Benutzer ist möglicherweise nicht berechtigt, Dateien im Zellenverzeichnis zu öffnen. Die MBean muss nach der ersten Zugriffsprüfung als System ausgeführt werden, sodass die Operation ohne Zugriffsverweigerungsfehler abgeschlossen werden kann.

    Setzen Sie das Attribut runAs auf System, um den Delegierungsmodus für eine MBean oder MBean-Methode anzugeben. Wenn Sie das Attribut runAs für eine MBean setzen, gilt der Wert für alle MBean-Methoden für diese MBean.

    Das folgende Beispiel zeigt, wie Sie die differenzierte Verwaltungssicherheit für die MBean des Typs "CellSync" im MBean-Deskriptor beschreiben.
    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
    <MBean type="CellSync"
      version="5.0.1"
      platform="common"
      runAs="System"
      description="Verwaltungsschnittstelle für die Logik zur Konfigurationssynchronisation, die im zentralen Deployment Manager für die Zelle durchgeführt wird.">
    <operation
        description="Synchronisationsanforderung für einen angegebenen Knoten einleiten" impact="ACTION"
        name="syncNode" role="operation" targetObjectType="objectReference" type="ja
    va.lang.Boolean">
    <signature>
    <parameter resourceType="Node"
     description="Name des Knotens"
     name="nodeName" type="java.lang.String"/>
    </signature>
    </operation>

Ergebnisse

Sie haben den Typ der Ressource bestimmt, auf den eine vorhandene MBean-Methode zugreift, und die erforderlichen Zugriffsprüfungen durchgeführt, sodass das Produkt jetzt den Zugriff auf die Ressource zulassen kann.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjmx_admin_finegr_mbsec
Dateiname:tjmx_admin_finegr_mbsec.html