Especificación de la seguridad MBean precisa en el descriptor MBean

Para implementar la seguridad administrativa precisa, el código debe identificar la instancia de recurso que el bean gestionado (MBean) representa y asigna el usuario al rol necesario para dicha instancia del recurso. En este tema se describe qué hacer para identificar el recurso y asignar el rol necesario. En este tema también se explica cómo hacer que el método de MBean se ejecute bajo una identidad de usuario distinta de modo que el método pueda acceder a otras instancias de recursos. Por último, en este tema se describe cómo comprobar si un método de MBean ha accedido a una instancia de recursos utilizando las interfaces de programas.

Antes de empezar

En esta tarea se da por supuesto que se tienen conocimientos básicos de la programación de MBean. Si desea información sobre la programación de MBean, consulte la documentación de la interfaz de programación de aplicaciones (API) Java™ de MBean. En este Information Center, pulse Reference (Referencia) > Mbean interfaces (Interfaces de Mbean).

Acerca de esta tarea

Lleve a cabo la siguiente tarea para asegurarse de que un MBean o un método de MBean está protegido. Identifique la instancia de recursos que MBean o el método de MBean representa y asigne los roles necesarios para acceder al MBean. Lleve a cabo esta tarea durante el desarrollo de MBean.

Procedimiento

  1. Determine la instancia de recursos que MBean representa y los roles necesarios para invocar los métodos de MBean.

    Cada método de MBean tiene una política de seguridad de MBean por omisión. Cuando el método de MBean utiliza la política de seguridad predeterminada, se da por supuesto que la instancia de recurso que MBean representa será el servidor en el que se ejecuta MBean. Si un MBean o un método de MBean representa una instancia de recursos distinta del servidor en el que se ejecuta, lleve a cabo los siguientes pasos:

    1. Identifique la instancia de recursos que MBean representa.
      • Si un MBean, como Server MBean, accede y modifica el servidor en el que se ejecuta MBean, no especifique una política de seguridad para verificar que el usuario que invoca MBean tenga acceso al servidor porque se está aplicando la política de seguridad predeterminada. En la mayoría de los casos, MBean se utiliza para acceder y modificar el servidor.
      • Si un MBean que se ejecuta dentro de un servidor puede acceder y modificar recursos que no pertenecen directamente al servidor, compruebe si el usuario que invoca el MBean tenga acceso a la instancia del recurso antes de dejar que se ejecute el método de MBean.

        En la mayoría de los casos, identifique la instancia de recursos identificando el par clave-valor en el nombre de objeto del MBean que representa la instancia del recurso. El atributo resourceIndentifierKey define la clave.

        Por ejemplo, puede utilizar el MBean de EJBModule para acceder a un módulo EJB (Enterprise JavaBeans) dentro de una aplicación que se ejecuta dentro del servidor. En este caso, el nombre de objeto del MBean de EJBModule contiene un par clave-valor. La clave es Application. El valor representa la instancia de recurso al que intenta acceder MBean de EJBModule. El usuario que invoca este método de MBean se verifica para asegurarse de que se otorgue acceso a esta instancia de la aplicación antes de dejar que el método de MBean se ejecute.

        En el siguiente ejemplo se muestra cómo describir la seguridad administrativa precisa para el tipo de MBean EJBModule en el descriptor MBean:
        <?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="Management interface for the EJBModule component.">
      • Si puede determinar el recurso al que MBean accede antes de invocar MBean, pero no puede utilizar el nombre de objeto MBean para determinar la instancia de recurso a la que MBean accede, en su lugar utilice los parámetros que se pasan a MBean.

        Identifique el nombre de parámetro del método de MBean con un valor de parámetro que represente la instancia de recurso. Marque como identificador de recurso los metadatos de parámetro correspondientes en el descriptor de MBean. Para marcar un parámetro como identificador de recursos, añada el atributo resourceType. El atributo especifica el recurso de tipo que contiene el valor de parámetro. Cuando existe el atributo resourceType para cualquier parámetro de método de MBean, el valor de parámetro determina la instancia de recurso que representa el método de MBean.

        Por ejemplo, una instancia de ApplicationManager MBean se ejecuta en cada servidor. El mismo MBean se puede utilizar para iniciar y detener todas las aplicaciones del servidor. Los métodos de inicio y detención de este MBean toman como parámetro el nombre de aplicación. Utilizan el parámetro para determinar la instancia de la aplicación a la que intenta acceder este método de MBean.

        En el siguiente ejemplo se muestra cómo describir la seguridad administrativa precisa para este tipo de MBean en el descriptor MBean:
        <operation
            description="Start Application"
            impact="ACTION" name="startApplication" role="operation"
            targetObjectType="objectReference" type="void" proxyInvokeType="spray">
            <signature>
             <parameter description="Application Name" resourceType="Application"
                name="applicationName" type="java.lang.String"/>
            </signature>
        </operation>
      • Si no se puede determinar el recurso al que accede un MBean hasta que se invoca el MBean, compruebe si el usuario que invoca el MBean tiene acceso a la instancia del recurso mediante las interfaces de programación de aplicaciones (API).

        Marque el MBean o el método de MBean como excluido de la comprobación de acceso en el descriptor de MBean utilizando el atributo excludeAccessCheck. Cuando un MBean se marca como excluido de la comprobación de acceso, también se excluyen de la misma todos sus métodos.

        Por ejemplo, el MBean de ConfigService que se ejecuta en el gestor de despliegue se utiliza para configurar todos los recursos dentro de una célula. Excluya este MBean de la comprobación de acceso antes de invocar los métodos de MBean. Verifique que el MBean ConfigService tiene acceso al recurso de configuración cuando el MBean intenta acceder al recurso.

        En el siguiente ejemplo se muestra cómo describir la seguridad administrativa precisa para el tipo de MBean ConfigServices en el descriptor de MBean:
        <?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="Config Service component provides service of 
        configuration related tasks on top of configuration repository service."
          type="ConfigService"
          excludeAccessCheck="true"
          configureMBean="true">
        Algunas sentencias están partidas en varias líneas para fines de impresión.
        En el siguiente ejemplo se muestra cómo invocar la lógica del método de MBean para realizar mediante programa la comprobación de autorización:
        // Obtener el autorizador de administración
        AdminAuthorizer aa = AdminAuthorizerFactory.getAdminAuthorizer();
        // Establecer el rol necesario para esta operación.
        String role = com.ibm.ws.security.util.Constants.CONFIG_ROLE;
        // Establecer el nombre de recurso.
        // cells/cellName es opcional.
        String resource = "/nodes/"+ nodeName + /servers/" + serverName;
        // Comprobar acceso 
        if ( aa != null && !aa.checkAccess(resource, role) )
           // No permitir el acceso. 
           else
              // Permitir el acceso.
    2. Asigne los roles necesarios para el MBean y los métodos de MBean.

      Los roles necesarios se asignan automáticamente, según el tipo de MBean y el impacto del método de MBean, tal como se describe en el tema que trata acerca de la política de seguridad de MBean por omisión.

  2. Especifique la modalidad de delegación.

    En algunos casos, después de realizar la comprobación de acceso inicial, es posible que el método de MBean deba ejecutarse bajo una identidad de usuario distinta de modo que pueda acceder a otras instancias de recursos. Por ejemplo, la operación syncNode del MBean CellSync otorga al usuario el rol de operador a la instancia del nodo que se sincroniza. La operación syncNode intenta acceder a los recursos bajo el ámbito de célula. Es posible que el usuario no tenga acceso a los archivos abiertos bajo el directorio de célula. El MBean debe ejecutarse como System después de la comprobación de acceso inicial para que la operación se lleve a cabo sin ningún problema de acceso denegado.

    Establezca el atributo runAs en System para especificar la modalidad de delegación para un MBean o método de MBean. Cuando establece el atributo runAs para un MBean, el valor se aplica a todos los métodos de MBean para ese MBean.

    En el siguiente ejemplo se muestra cómo describir la seguridad administrativa precisa para el tipo de MBean CellSync en el descriptor de MBean.
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
    <MBean type="CellSync"
      version="5.0.1"
      platform="common"
      runAs="System"
      description="Management interface for the configuration synchronization logic
    performed at the central deployment manager for the cell.">
    <operation
        description="Initiate a synchronization request for a given node" impact="ACTION"
        name="syncNode" role="operation" targetObjectType="objectReference" type="ja
    va.lang.Boolean">
    <signature>
    <parameter resourceType="Node"
     description="The name of the node"
     name="nodeName" type="java.lang.String"/>
    </signature>
    </operation>

Resultados

Ha determinado el tipo de recurso al que accede un método MBean determinado y ha realizado la comprobación de acceso necesaria para que el producto pueda acceder al recurso

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjmx_admin_finegr_mbsec
File name: tjmx_admin_finegr_mbsec.html