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

  1. Clonare l'ultima versione del pacchetto leggero CPG da : Pacchetto CPG.

  2. 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.properties di 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.

  1. Decomprimere il file del modello.

  2. Aggiornare il file per includere il file jar CPG più recente.

  3. Esegui il seguente comando:

    cd java-access-plugin
    mvn -DskipTests clean package
    

    Il vostro JAR sarà generato a: target/<your-plugin>.jar.

  4. Copiare il JAR nella cartella plugins/ del connettore CPG.

  5. Aggiornare plugin-resource-mapping.yaml per fare riferimento all'ID del plugin.

    Opzionale :Per restituire le trasformazioni di riga/colonna, impostarle con: result.setTransformColumns(...); result.setTransformRows(...);

Esecuzione del connettore CPG

  1. 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
      } ]
    }
    =================
    
    
  2. 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.