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
-
Clona la última versión del paquete ligero CPG desde el paquete : Paquete CPG.
-
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.propertiesPuedes 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.propertiesde 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.
-
Descomprima el archivo de plantilla.
-
Actualice el archivo para incluir el último archivo jar de la CPG.
-
Ejecute el mandato siguiente:
cd java-access-plugin mvn -DskipTests clean packageSu JAR se generará en:
target/<your-plugin>.jar. -
Copie el JAR en la carpeta
plugins/del conector CPG. -
Actualice
plugin-resource-mapping.yamlpara 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
-
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 } ] } ================= -
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.yamlse 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.