通用政策网关(CPG)连接器
通用策略网关(CPG)连接器是一种先进的、基于插件的轻量级 JAR,是 watsonx.data 与各种外部策略引擎之间的灵活桥梁 ( IBM Knowledge Catalog, Apache Ranger)。 该客户端旨在为您提供一个灵活的基础,使您可以在此基础上轻松开发、测试和部署自定义集成。
它的核心是 CPG Plugin Runner,这是一个轻量级可执行 JAR,可从指定路径(绝对路径或相对路径)动态加载访问控制插件 JAR。 它根据配置映射和用户提供的输入(如用户名、资源和操作)评估插件。 它是一个可下载的 JAR 文件,可轻松下载并用于开发与多个策略引擎接口的自定义插件。 您可以针对特定策略引擎创建自己的 JAR,快速测试集成。
准备工作
贵方必须:
-
准备好插件 JAR( PF4J 格式)。
-
策略映射文件,定义了相应策略引擎应运行的插件映射。
访问中央方案包
-
从.CPG 软件包克隆最新版本的 CPG 轻量级软件包:CPG 软件包。
-
克隆后,您可以查看以下文件夹结构:
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 软件包包括一个插件模板项目。 您可以使用该模板,也可以根据自己的需要创建一个新模板。 不需要其他依赖项。
-
解压模板文件。
-
更新文件以包含最新的 CPG jar 文件。
-
运行以下命令:
cd java-access-plugin mvn -DskipTests clean package您的 JAR 将在
target/<your-plugin>.jar. -
将 JAR 复制到 CPG 连接器的
plugins/文件夹中。 -
更新
plugin-resource-mapping.yaml以引用您的插件 ID。可选 :要返回行/列变换,请使用:result.setTransformColumns(...); result.setTransformRows(...) 进行设置;
运行 CPG 连接器
-
使用命令从终端运行 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 } ] } ================= -
输入 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 插件。
-
没有用户界面。 使用命令行界面运行。
-
不同操作系统环境的路径分辨率可能不同。