コモン・ポリシー・ゲートウェイ(CPG)コネクタ

コモン・ポリシー・ゲートウェイ(CPG)コネクタは、 watsonx.data と多種多様な外部ポリシーエンジン( IBM Knowledge Catalog, Apache レンジャー)との間の柔軟な橋渡しの役割を果たす、プラグインベースの高度な軽量 JAR です。 このクライアントは、カスタム統合の開発、テスト、およびデプロイを容易にし、その上に構築できる柔軟な基盤を提供するように設計されています。

CPG Plugin Runnerは軽量な実行可能JARで、指定したパス(絶対パスまたは相対パス)からアクセス制御プラグインJARを動的にロードします。 コンフィギュレーションマッピングと、ユーザー名、リソース、アクションといったユーザーから提供された入力に基づいてプラグインを評価する。 ダウンロード可能なJARファイルとして提供されており、簡単にダウンロードして、複数のポリシー・エンジンとインターフェースするカスタムプラグインを開発するために使用することができる。 特定のポリシー・エンジンに合わせた独自のJARを構築し、迅速に統合をテストすることができる。

開始前に

以下を実行する必要があります。

  • プラグインJAR( PF4J 形式)を用意する。

  • 対応するポリシーエンジンのために実行されるべきプラグインのマッピングを定義するポリシーマッピングファイル。

CPGパッケージへのアクセス

  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 )。

  • :値:各プラグインの plugin.properties ファイルで定義されているプラグインID。 例: plugin.id=java-access-plugin. IDは正確に一致しなければならない。

(テンプレートからの)プラグインの構築とYAMLの設定

選択した必要なポリシーエンジンに接続するには、 cpg.jar にすでに組み込まれている API タイプに対してコンパイルするプラグイン (JAR ファイル) を作成する必要があります。 ダウンロードしたCPGパッケージには、プラグイン・テンプレート・プロジェクトが含まれています。 テンプレートを使用したり、目的に応じて新しいテンプレートを作成することができます。 追加の依存関係は必要ない。

  1. テンプレートファイルを解凍します。

  2. 最新のCPG jarファイルを含むようにファイルを更新する。

  3. 以下のコマンドを実行します。

    cd java-access-plugin
    mvn -DskipTests clean package
    

    JARは以下の場所に生成されます: target/<your-plugin>.jar.

  4. JARをCPGコネクタの plugins/ フォルダにコピーします。

  5. プラグインIDを参照するように plugin-resource-mapping.yaml

    オプション :行/列変換を返すには、次のように設定します: 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と入力して停止する。

トラブルシューティング

エラー"No AccessPlugin extensions found"

上記のエラーが発生した場合は、以下を確認してください:

  • pluginsとディレクトリは存在し、空ではありません。
  • JARのルートには plugin.properties。
  • プラグインクラスは @Extension でアノテーションされ、 AccessPlugin を実装しています。
  • plugin.properties の plugin.id は plugin-resource-mapping.yaml の ID と一致する。

エラーリソース用のプラグインが実行されていません

上記のエラーが発生した場合は、以下を確認してください:

  • plugin-resource-mapping.yaml のリソース名はプラグインIDに正しくマッピングされます。
  • プラグインIDは正確に一致します(大文字と小文字は区別されます)。

エラーカスタムパスが検出されない

上記のエラーが発生した場合は、絶対パスを使用するか、システム・プロパティを通して渡すようにしてください。

既知の制限:

CPGプラグインベースのコネクターには以下の制限がある:

  • 現在、 PF4J-based プラグインのみをサポートしています。

  • ユーザーインターフェースはない。 コマンドラインインターフェイスを使って実行する。

  • パスの解像度はOS環境によって異なる場合があります。