Common Policy Gateway (CPG) Anschluss
Der Common Policy Gateway (CPG)-Konnektor ist ein fortschrittliches, Plugin-basiertes, leichtgewichtiges JAR, das als flexible Brücke zwischen watsonx.data und einer Vielzahl von externen Policy Engines dient ( IBM Knowledge Catalog, Apache Ranger). Dieser Client ist so konzipiert, dass er eine flexible Grundlage bietet, auf der Sie aufbauen können, um benutzerdefinierte Integrationen einfach zu entwickeln, zu testen und bereitzustellen.
Das Herzstück ist der CPG Plugin Runner, ein leichtgewichtiges, ausführbares JAR, das Ihre Plugin-JARs für die Zugriffskontrolle dynamisch von einem angegebenen Pfad (entweder absolut oder relativ) lädt. Es wertet Plugins auf der Grundlage der Konfigurationszuordnung und der vom Benutzer bereitgestellten Eingaben wie Benutzername, Ressourcen und Aktionen aus. Es ist als herunterladbare JAR-Datei verfügbar, die einfach heruntergeladen und zur Entwicklung benutzerdefinierter Plugins verwendet werden kann, die mit mehreren Policy Engines zusammenarbeiten. Sie können Ihre eigenen JARs erstellen, die auf bestimmte Policy Engines zugeschnitten sind, und die Integration schnell testen.
Vorbereitende Schritte
Sie müssen wie folgt vorgehen:
-
Sie haben die JAR-Datei(en) des Plugins (im Format PF4J ).
-
Eine Richtlinienzuordnungsdatei, die die Zuordnung der Plugins definiert, die für die entsprechenden Richtlinienmodule ausgeführt werden sollen.
Zugriff auf das CPG-Paket
-
Klonen Sie die neueste Version des leichtgewichtigen CPG-Pakets von : CPG-Paket.
-
Nach dem Klonen können Sie die folgende Ordnerstruktur sehen:
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.propertiesSie können Ordner nach Bedarf umbenennen oder verschieben.
Das Paket enthält Folgendes:
-
CPG-Plugin-Runner-1.0.0.jar: Das ausführbare Connector-JAR, das Ihre Plugins lädt und ausführt.
-
plugins/: Verzeichnis, in dem Sie Ihre benutzerdefinierten Plugin-JARs ablegen.
-
plugin-resource-mapping.yaml: Konfigurationsdatei, die die Ressourcen von watsonx.data den Plugin-IDs der Policy Engine zuordnet. Nachfolgend finden Sie ein Beispiel für die Website
plugin-resource-mapping.yaml.
plugin-mapping:
java-access-plugin:
- iceberg
ranger-access-plugin:
- iceberg
- hive_data
python-access-plugin:
- hive_data
Parameter, die in der Konfigurationsdatei erforderlich sind:
-
Schlüssel: Der Name der Ressource watsonx.data (Beispiel
hive_data). -
Werte: Plugin-IDs, die in der Datei
plugin.propertiesdes jeweiligen Plugins definiert sind. Beispiel:plugin.id=java-access-plugin. Die ID muss genau übereinstimmen.
Erstellung eines Plugins (aus einer Vorlage) und Konfiguration von YAML
Um sich mit der gewünschten Policy Engine Ihrer Wahl zu verbinden, müssen Sie ein Plugin (JAR-Datei) erstellen, das gegen die bereits in cpg.jar eingebetteten API-Typen kompiliert. Das heruntergeladene CPG-Paket enthält ein Plugin-Vorlagenprojekt.
Sie können die Vorlage verwenden und eine neue Vorlage für Ihre Zwecke erstellen. Zusätzliche Abhängigkeiten sind nicht erforderlich.
-
Entpacken Sie die Vorlagendatei.
-
Aktualisieren Sie die Datei, damit sie die neueste CPG jar-Datei enthält.
-
Führen Sie den folgenden Befehl aus:
cd java-access-plugin mvn -DskipTests clean packageIhr JAR wird generiert unter:
target/<your-plugin>.jar. -
Kopieren Sie die JAR-Datei in den Ordner
plugins/des CPG-Connectors. -
Aktualisieren Sie
plugin-resource-mapping.yaml, um auf Ihre Plugin-ID zu verweisen.Optional :Um Zeilen-/Spalten-Transformationen zurückzugeben, setzen Sie sie mit: result.setTransformColumns(...); result.setTransformRows(...);
Laufender CPG-Anschluss
-
Führen Sie die JAR-Datei des CPG-Connectors über das Terminal aus, indem Sie den Befehl 'java -jar cpg.jar '.
Dabei wird der folgende Standardpfad für Plugins und die Konfigurationsdatei verwendet.
- plugins/ :./plugins
- config/ :. /config/plugin-resource-mapping.yaml
Sie können den Pfad auch mit dem folgenden Befehl anpassen:
java -jar cpg.jar <absolute/path/to/plugins> <absolute/path/to/config/plugin-resource-mapping.yaml>.Im Folgenden wird die interaktive Beispielsitzung angezeigt:
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 } ] } ================= -
Geben Sie quit oder exit ein, um zu beenden.
Fehlerbehebung
Fehler: "Keine AccessPlugin Erweiterungen gefunden"
Wenn Sie die obige Fehlermeldung erhalten, überprüfen Sie Folgendes:
- Das Plugin-Verzeichnis existiert und ist nicht leer.
- Die JAR-Datei enthält plugin.properties in ihrem Stammverzeichnis.
- Die Plugin-Klasse ist mit @Extension annotiert und implementiert AccessPlugin.
- Die plugin.id in plugin.properties stimmt mit der ID in plugin-resource-mapping.yaml überein.
Fehler: Plugin läuft nicht für Ressource
Wenn Sie die obige Fehlermeldung erhalten, überprüfen Sie Folgendes:
- Der Ressourcenname in
plugin-resource-mapping.yamlwird korrekt auf die Plugin-ID abgebildet. - Die Plugin-IDs stimmen genau überein (Groß- und Kleinschreibung wird beachtet).
Fehler: Benutzerdefinierte Pfade werden nicht erfasst
Wenn Sie die obige Fehlermeldung erhalten, stellen Sie sicher, dass Sie absolute Pfade verwenden oder diese über Systemeigenschaften übergeben.
Bekannte Beschränkungen:
Der CPG-Steckverbinder hat die folgenden Einschränkungen:
-
Derzeit werden nur PF4J-based Plugins unterstützt.
-
Es gibt keine Benutzeroberfläche. Ausführung über die Befehlszeilenschnittstelle.
-
Die Pfadauflösung kann je nach Betriebssystemumgebung variieren.