通用政策网关(CPG)连接器

通用策略网关(CPG)连接器是一种先进的、基于插件的轻量级 JAR,是 watsonx.data 与各种外部策略引擎之间的灵活桥梁 ( IBM Knowledge Catalog, Apache Ranger)。 该客户端旨在为您提供一个灵活的基础,使您可以在此基础上轻松开发、测试和部署自定义集成。

它的核心是 CPG Plugin Runner,这是一个轻量级可执行 JAR,可从指定路径(绝对路径或相对路径)动态加载访问控制插件 JAR。 它根据配置映射和用户提供的输入(如用户名、资源和操作)评估插件。 它是一个可下载的 JAR 文件,可轻松下载并用于开发与多个策略引擎接口的自定义插件。 您可以针对特定策略引擎创建自己的 JAR,快速测试集成。

准备工作

贵方必须:

  • 准备好插件 JAR( PF4J 格式)。

  • 策略映射文件,定义了相应策略引擎应运行的插件映射。

访问中央方案包

  1. 从.CPG 软件包克隆最新版本的 CPG 轻量级软件包:CPG 软件包

  2. 克隆后,您可以查看以下文件夹结构:

    
    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
    

    您可以根据需要重命名或移动文件夹。

套餐包括

  • CPG-Plugin-Runner-1.0.0.jar: 加载和运行插件的可执行连接器 JAR。

  • plugins/:放置自定义插件 JAR 的目录。

  • plugin-resource-mapping.yaml: 将 watsonx.data 资源映射到策略引擎插件 ID 的配置文件。 以下是 plugin-resource-mapping.yaml 的示例。


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

配置文件中所需的参数:

  • 关键字:watsonx.data 资源的名称(例如 hive_data )。

  • :插件 ID,在每个插件的 plugin.properties 文件中定义。 示例:plugin.id=java-access-plugin。 ID 必须完全匹配。

创建插件(从模板)并配置 YAML

要连接到您所选择的所需策略引擎,您必须创建一个插件(JAR 文件),该插件可根据 cpg.jar 中已嵌入的 API 类型进行编译。 下载的 CPG 软件包包括一个插件模板项目。 您可以使用该模板,也可以根据自己的需要创建一个新模板。 不需要其他依赖项。

  1. 解压模板文件。

  2. 更新文件以包含最新的 CPG jar 文件。

  3. 运行以下命令:

    cd java-access-plugin
    mvn -DskipTests clean package
    

    您的 JAR 将在 target/<your-plugin>.jar.

  4. 将 JAR 复制到 CPG 连接器的 plugins/ 文件夹中。

  5. 更新 plugin-resource-mapping.yaml 以引用您的插件 ID。

    可选 :要返回行/列变换,请使用:result.setTransformColumns(...); result.setTransformRows(...) 进行设置;

运行 CPG 连接器

  1. 使用命令从终端运行 CPG 连接器 JAR 文件:java -jar cpg.jar '。

    插件和配置文件将使用以下默认路径。

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

    您还可以使用以下命令自定义路径:

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

    下面显示的是交互式会话示例:

    
    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. 输入 quit 或 exit 即可停止。

故障诊断

错误:“未找到 AccessPlugin 扩展名”

如果出现上述错误,请验证以下内容:

  • 插件和目录存在且不为空。
  • JAR 的根目录包括 plugin.properties。
  • 插件类使用 @Extension 进行注解,并实现 AccessPlugin。
  • plugin.properties 中的 plugin.id 与 plugin-resource-mapping.yaml 中的 ID 匹配。

错误:资源插件未运行

如果出现上述错误,请验证以下内容:

  • plugin-resource-mapping.yaml 中的资源名称可正确映射到插件 ID。
  • 插件 ID 完全匹配(区分大小写)。

错误:未拾取自定义路径

如果出现上述错误,请确保使用绝对路径或通过系统属性传递。

已知限制

基于 CPG 插入式连接器有以下限制:

  • 目前仅支持 PF4J-based 插件。

  • 没有用户界面。 使用命令行界面运行。

  • 不同操作系统环境的路径分辨率可能不同。