Connettore Common Policy Gateway (CPG)
Il connettore Common Policy Gateway (CPG) è un JAR avanzato e leggero basato su plugin che funge da ponte flessibile tra watsonx.data e un'ampia varietà di motori di policy esterni ( IBM Knowledge Catalog, Apache Ranger). Questo client è stato progettato per fornire una base flessibile su cui è possibile costruire, semplificando lo sviluppo, il test e la distribuzione di integrazioni personalizzate.
Il suo cuore è il CPG Plugin Runner, un JAR eseguibile leggero che carica dinamicamente i JAR dei plugin di controllo degli accessi da un percorso specificato (assoluto o relativo). Valuta i plugin in base alla mappatura della configurazione e agli input forniti dall'utente, come nome utente, risorse e azioni. È disponibile come file JAR scaricabile che può essere facilmente scaricato e utilizzato per sviluppare plugin personalizzati che si interfacciano con più motori di policy. È possibile creare JAR personalizzati per motori di policy specifici e testare rapidamente l'integrazione.
Prima di iniziare
È necessario:
-
Avere i JAR dei plugin (in formato PF4J ).
-
Un file di mappatura dei criteri che definisce la mappatura dei plugin da eseguire per i motori dei criteri corrispondenti.
Accesso al pacchetto CPG
-
Clonare l'ultima versione del pacchetto leggero CPG da : Pacchetto CPG.
-
Dopo la clonazione, è possibile visualizzare la seguente struttura di cartelle:
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È possibile rinominare o spostare le cartelle secondo le necessità.
Il pacchetto comprende:
-
CPG-Plugin-Runner-1.0.0.jar: Il connettore eseguibile JAR che carica ed esegue i plugin.
-
plugins/: Directory in cui collocare i JAR dei plugin personalizzati.
-
plugin-resource-mapping.yaml: File di configurazione che mappa le risorse di watsonx.data agli ID dei plugin del motore di policy. Di seguito è riportato un esempio di
plugin-resource-mapping.yaml.
plugin-mapping:
java-access-plugin:
- iceberg
ranger-access-plugin:
- iceberg
- hive_data
python-access-plugin:
- hive_data
Parametri richiesti nel file di configurazione:
-
Chiavi: Il nome della risorsa watsonx.data (esempio
hive_data). -
Valori: ID dei plugin, definiti nel file
plugin.propertiesdi ciascun plugin. Esempio:plugin.id=java-access-plugin. L'ID deve corrispondere esattamente.
Creare un plugin (da un modello) e configurare YAML
Per connettersi al motore di policy di propria scelta, è necessario creare un plugin (file JAR) che si compili con i tipi di API già incorporati in cpg.jar. Il pacchetto CPG scaricato include un progetto di modello di plugin. È
possibile utilizzare il modello e crearne uno nuovo per il proprio scopo. Non sono necessarie dipendenze aggiuntive.
-
Decomprimere il file del modello.
-
Aggiornare il file per includere il file jar CPG più recente.
-
Esegui il seguente comando:
cd java-access-plugin mvn -DskipTests clean packageIl vostro JAR sarà generato a:
target/<your-plugin>.jar. -
Copiare il JAR nella cartella
plugins/del connettore CPG. -
Aggiornare
plugin-resource-mapping.yamlper fare riferimento all'ID del plugin.Opzionale :Per restituire le trasformazioni di riga/colonna, impostarle con: result.setTransformColumns(...); result.setTransformRows(...);
Esecuzione del connettore CPG
-
Eseguire il file JAR del connettore CPG dal Terminale utilizzando il comando: 'java -jar cpg.jar '.
Si utilizzerà il seguente percorso predefinito per i plugin e il file di configurazione.
- plugins/ :./plugins
- config/ :. /config/plugin-resource-mapping.yaml
È inoltre possibile personalizzare il percorso utilizzando il seguente comando:
java -jar cpg.jar <absolute/path/to/plugins> <absolute/path/to/config/plugin-resource-mapping.yaml>.Di seguito viene visualizzata una sessione interattiva di esempio:
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 } ] } ================= -
Digitare quit o exit per interrompere.
Risoluzione dei problemi
Errore: "Nessuna estensione AccessPlugin trovata"
Se si ottiene l'errore di cui sopra, verificare quanto segue:
- La directory dei plugin esiste e non è vuota.
- Il JAR include plugin.properties nella sua radice.
- La classe del plugin è annotata con @Extension e implementa AccessPlugin.
- L'indirizzo plugin.id di plugin.properties corrisponde all'ID di plugin-resource-mapping.yaml.
Errore: Plugin non in esecuzione per la risorsa
Se si ottiene l'errore di cui sopra, verificare quanto segue:
- Il nome della risorsa in
plugin-resource-mapping.yamlè mappato correttamente all'ID del plugin. - Gli ID dei plugin coincidono esattamente (sensibile alle maiuscole e alle minuscole).
Errore: Percorsi personalizzati non rilevati
Se si ottiene l'errore di cui sopra, assicurarsi di usare percorsi assoluti o di passarli attraverso le proprietà del sistema.
Limitazioni note:
Il connettore a spina CPG presenta le seguenti limitazioni:
-
Attualmente supporta solo i plugin di PF4J-based.
-
Non esiste un'interfaccia utente. Esecuzione tramite interfaccia a riga di comando.
-
La risoluzione del percorso può variare tra gli ambienti del sistema operativo.