Conector Common Policy Gateway (CPG)

El conector Common Policy Gateway (CPG) es un JAR ligero avanzado basado en plugins que sirve de puente flexible entre watsonx.data y una amplia variedad de motores de políticas externos ( IBM Knowledge Catalog, Apache Ranger). Este cliente está diseñado para proporcionar una base flexible sobre la que se pueda construir, facilitando el desarrollo, prueba e implantación de integraciones personalizadas.

En su núcleo se encuentra el CPG Plugin Runner, un JAR ejecutable ligero que carga dinámicamente sus JARs de plugin de control de acceso desde una ruta especificada (absoluta o relativa). Evalúa los plugins basándose en el mapeo de configuración y en las entradas proporcionadas por el usuario, como el nombre de usuario, los recursos y las acciones. Está disponible como un archivo JAR descargable que puede descargarse fácilmente y utilizarse para desarrollar plugins personalizados que interactúen con varios motores de políticas. Puede crear sus propios JAR adaptados a motores de políticas específicos y probar rápidamente la integración.

Antes de empezar

Deba hacer lo siguiente:

  • Disponga de los plugins JAR (en formato PF4J ).

  • Un archivo de asignación de políticas que define la asignación de los plugins que deben ejecutarse para los motores de políticas correspondientes.

Acceder al paquete CPG

  1. Clona la última versión del paquete ligero CPG desde el paquete : Paquete CPG.

  2. Después de la clonación, puede ver la siguiente estructura de carpetas:

    
    CPG-Plugin-Runner/
    ├─ CPG-Plugin-Runner-1.0.0.jar      # The executable runner
    ├─ plugins/                         # Place your plugin JARs here
    │  └─ <your-plugin>.jar
    ├─ config/
       └─ plugin-resource-mapping.yaml  # Maps resource names to plugin IDs
    ├─ plugin-templates
       └─ java-access-plugin            # sample plugin project
          ├─ src
          └─ resources
             └─ plugin.properties
    

    Puedes cambiar el nombre o mover las carpetas según necesites.

El paquete incluye:

  • CPG-Plugin-Runner-1.0.0.jar: El conector ejecutable JAR que carga y ejecuta tus plugins.

  • plugins/: Directorio para colocar los JAR de los plugins personalizados.

  • plugin-resource-mapping.yaml: Archivo de configuración que asigna los recursos de watsonx.data a los ID de plugin del motor de políticas. A continuación se muestra un ejemplo de la página plugin-resource-mapping.yaml.


plugin-mapping:
  java-access-plugin:
    - iceberg
  ranger-access-plugin:
    - iceberg
    - hive_data
  python-access-plugin:
    - hive_data

Parámetros necesarios en el archivo de configuración:

  • Claves: El nombre del recurso watsonx.data (Ejemplo hive_data).

  • Valores: ID de plugin, definidos en el archivo plugin.properties de cada plugin. Ejemplo: plugin.id=java-access-plugin. El ID debe coincidir exactamente.

Creación de un plugin (a partir de una plantilla) y configuración de YAML

Para conectarse al motor de directivas que desee, debe crear un complemento (archivo JAR) que compile con los tipos de API ya integrados en cpg.jar. El paquete CPG descargado incluye un proyecto de plantilla de plugin. Puede utilizar la plantilla y crear una nueva para su propósito. No se requieren dependencias adicionales.

  1. Descomprima el archivo de plantilla.

  2. Actualice el archivo para incluir el último archivo jar de la CPG.

  3. Ejecute el mandato siguiente:

    cd java-access-plugin
    mvn -DskipTests clean package
    

    Su JAR se generará en: target/<your-plugin>.jar.

  4. Copie el JAR en la carpeta plugins/ del conector CPG.

  5. Actualice plugin-resource-mapping.yaml para que haga referencia al ID de su plugin.

    Opcional :Para devolver transformaciones de fila/columna, establézcalas utilizando: result.setTransformColumns(...); result.setTransformRows(...);

Conector CPG en funcionamiento

  1. Ejecute el archivo JAR del conector CPG desde el Terminal utilizando el comando : 'java -jar cpg.jar '.

    Esto utilizará la siguiente ruta por defecto para los plugins y el archivo de configuración.

    • plugins/ :./plugins
    • config/ :. /config/plugin-resource-mapping.yaml

    También puede personalizar la ruta utilizando el siguiente comando :

    java -jar cpg.jar <absolute/path/to/plugins> <absolute/path/to/config/plugin-resource-mapping.yaml>.

    A continuación se muestra el ejemplo de sesión interactiva:

    
    Enter username : admin
    Enter resource_name (e.g., hive_data) or 'quit': hive_data
    Enter resource_type (e.g., table): table
    Enter actions (comma-separated, e.g., select,insert): select
    
    [Runner] Params: user=admin, resource=hive_data, type=table, actions=[select]
    [Runner] Plugins to run: [java-access-plugin]
    ======Result======
    {
      "status" : "SUCCESS",
      "error" : null,
      "plugin_id" : "java-access-plugin",
      "resources" : [ {
        "actions" : [ "select" ],
        "resource_name" : "hive_data",
        "resource_type" : "table",
        "actions_result" : [ {
          "select" : "true"
        } ],
        "transform_columns" : null,
        "transform_rows" : null
      } ]
    }
    =================
    
    
  2. Escribe quit o exit para parar.

Resolución de problemas

Error: "No se han encontrado extensiones de AccessPlugin "

Si obtiene el error anterior, verifique lo siguiente:

  • El directorio de plugins existe y no está vacío.
  • El JAR incluye plugin.properties en su raíz.
  • La clase plugin está anotada con @Extension e implementa AccessPlugin.
  • El plugin.id de plugin.properties coincide con el ID de plugin-resource-mapping.yaml.

Error: Plugin Not Running for Resource

Si obtiene el error anterior, verifique lo siguiente:

  • El nombre del recurso en plugin-resource-mapping.yaml se corresponde correctamente con el ID del plugin.
  • Los ID de los plugins coinciden exactamente (distingue mayúsculas de minúsculas).

Error: Rutas personalizadas no recogidas

Si obtiene el error anterior, asegúrese de utilizar rutas absolutas o pasarlas a través de las propiedades del sistema.

Limitaciones conocidas:

El conector CPG tiene las siguientes limitaciones:

  • Actualmente sólo es compatible con los plugins de PF4J-based.

  • No hay interfaz de usuario. Ejecutar utilizando la interfaz de comando.

  • La resolución de la ruta puede variar según el entorno del sistema operativo.