Connecteur Common Policy Gateway (CPG)

Le connecteur CPG (Common Policy Gateway) est un JAR léger et avancé, basé sur des plugins, qui sert de pont flexible entre watsonx.data et une grande variété de moteurs de politiques externes ( IBM Knowledge Catalog, Apache Ranger). Ce client est conçu pour fournir une base flexible sur laquelle vous pouvez vous appuyer, facilitant ainsi le développement, le test et le déploiement d'intégrations personnalisées.

Son cœur est le CPG Plugin Runner, un JAR exécutable léger qui charge dynamiquement vos plugins JAR de contrôle d'accès à partir d'un chemin spécifié (absolu ou relatif). Il évalue les plugins sur la base du mappage de la configuration et des données fournies par l'utilisateur, telles que le nom d'utilisateur, les ressources et les actions. Il est disponible sous la forme d'un fichier JAR téléchargeable qui peut être facilement téléchargé et utilisé pour développer des plugins personnalisés qui s'interfacent avec de multiples moteurs de politiques. Vous pouvez créer vos propres JAR adaptés à des moteurs de politiques spécifiques et tester rapidement l'intégration.

Avant de commencer

Vous devez :

  • Avoir le(s) JAR(s) du plugin (au format PF4J ).

  • Un fichier de mappage des politiques définissant le mappage des plugins qui doivent être exécutés pour les moteurs de politiques correspondants.

Accès au paquet CPG

  1. Clonez la dernière version du paquet CPG light weight à partir de : CPG package.

  2. Après le clonage, vous pouvez voir la structure de dossier suivante :

    
    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
    

    Vous pouvez renommer ou déplacer des dossiers si nécessaire.

Le module inclut les éléments suivants :

  • CPG-Plugin-Runner-1.0.0.jar: Le connecteur JAR exécutable qui charge et exécute vos plugins.

  • plugins/ : Répertoire où placer les JARs de vos plugins personnalisés.

  • plugin-resource-mapping.yaml: Fichier de configuration associant les ressources watsonx.data aux identifiants des plugins du moteur de stratégie. Voici un exemple du site plugin-resource-mapping.yaml.


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

Paramètres requis dans le fichier de configuration :

  • Clés: Le nom de la ressource watsonx.data (exemple hive_data).

  • Valeurs: ID du plugin, définis dans le fichier plugin.properties de chaque plugin. Exemple : plugin.id=java-access-plugin. L'ID doit correspondre exactement.

Construction d'un plugin (à partir d'un modèle) et configuration YAML

Pour vous connecter au moteur de politique requis de votre choix, vous devez créer un plugin (fichier JAR) qui compile les types d'API déjà intégrés dans cpg.jar. Le paquet CPG téléchargé comprend un projet de modèle de plugin. Vous pouvez utiliser le modèle et en créer un nouveau pour vos besoins. Des dépendances supplémentaires ne sont pas nécessaires.

  1. Décompressez le fichier du modèle.

  2. Mettre à jour le fichier pour inclure le dernier fichier jar du CPG.

  3. Exécutez la commande suivante :

    cd java-access-plugin
    mvn -DskipTests clean package
    

    Votre JAR sera généré à l'adresse suivante target/<your-plugin>.jar.

  4. Copiez le JAR dans le dossier plugins/ du connecteur CPG.

  5. Mettez à jour plugin-resource-mapping.yaml pour faire référence à l'ID de votre plugin.

    Facultatif : pour renvoyer les transformations ligne/colonne, définissez-les en utilisant : result.setTransformColumns(...); result.setTransformRows(...);

Connecteur CPG en cours d'exécution

  1. Exécutez le fichier JAR du connecteur CPG à partir du terminal à l'aide de la commande : 'java -jar cpg.jar '.

    Ceci utilisera le chemin par défaut suivant pour les plugins et le fichier de configuration.

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

    Vous pouvez également personnaliser le chemin d'accès en utilisant la commande suivante :

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

    L'exemple de session interactive s'affiche ci-dessous :

    
    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. Tapez quit ou exit pour arrêter.

Traitement des incidents

Erreur : "Aucune extension AccessPlugin n'a été trouvée"

Si vous obtenez l'erreur ci-dessus, vérifiez les points suivants :

  • Le répertoire des plugins existe et n'est pas vide.
  • Le JAR inclut plugin.properties à sa racine.
  • La classe de plugin est annotée avec @Extension et implémente AccessPlugin.
  • L'adresse plugin.id de plugin.properties correspond à l'ID de plugin-resource-mapping.yaml.

Erreur : Le plugin ne fonctionne pas pour la ressource

Si vous obtenez l'erreur ci-dessus, vérifiez les points suivants :

  • Le nom de la ressource dans plugin-resource-mapping.yaml correspond correctement à l'ID du plugin.
  • Les identifiants des plugins correspondent exactement (sensible à la casse).

Erreur : Les chemins d'accès personnalisés ne sont pas pris en compte

Si vous obtenez l'erreur ci-dessus, veillez à utiliser des chemins d'accès absolus ou à les transmettre par l'intermédiaire des propriétés du système.

Limites connues :

Le connecteur enfichable CPG présente les limitations suivantes :

  • Actuellement, seuls les plugins PF4J-based sont pris en charge.

  • Il n'y a pas d'interface utilisateur. Exécution à l'aide de l'interface de ligne de commande.

  • La résolution du chemin d'accès peut varier selon les environnements du système d'exploitation.