CPG(공용 정책 게이트웨이) 커넥터

CPG(Common Policy Gateway) 커넥터는 watsonx.data 와 다양한 외부 정책 엔진( IBM Knowledge Catalog, Apache Ranger) 사이의 유연한 가교 역할을 하는 고급 플러그인 기반의 경량 JAR입니다. 이 클라이언트는 사용자 지정 통합을 쉽게 개발, 테스트 및 배포할 수 있는 유연한 기반을 제공하도록 설계되었습니다.

그 핵심에는 지정된 경로(절대 또는 상대)에서 액세스 제어 플러그인 JAR을 동적으로 로드하는 경량 실행 JAR인 CPG 플러그인 러너가 있습니다. 구성 매핑과 사용자 이름, 리소스 및 작업과 같은 사용자 제공 입력을 기반으로 플러그인을 평가합니다. 여러 정책 엔진과 인터페이스하는 사용자 지정 플러그인을 개발하는 데 쉽게 다운로드하여 사용할 수 있는 다운로드 가능한 JAR 파일로 제공됩니다. 특정 정책 엔진에 맞춘 자체 JAR을 구축하여 통합을 신속하게 테스트할 수 있습니다.

시작하기 전에

다음을 수행해야 합니다.

  • 플러그인 JAR( PF4J 형식)을 준비합니다.

  • 해당 정책 엔진에 대해 실행해야 하는 플러그인의 매핑을 정의하는 정책 매핑 파일입니다.

CPG 패키지 액세스

  1. 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입니다.

  • 플러그인/: 사용자 정의 플러그인 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. plugin-resource-mapping.yaml 을 업데이트하여 플러그인 ID를 참조하세요.

    선택 사항 :행/열 변환을 반환하려면 다음을 사용하여 설정합니다: result.setTransformColumns(...); result.setTransformRows(...);

실행 중인 CPG 커넥터

  1. 터미널에서 다음 명령을 사용하여 CPG 커넥터 JAR 파일을 실행합니다: 'java -jar cpg.jar '.

    그러면 플러그인 및 구성 파일에 다음과 같은 기본 경로가 사용됩니다.

    • 플러그인/ :./플러그인
    • 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. 종료 또는 종료하기를 입력하여 중지합니다.

문제점 해결

오류: " AccessPlugin 확장자를 찾을 수 없음"

위 오류가 발생하면 다음을 확인하세요:

  • 플러그인 및 디렉터리가 존재하며 비어 있지 않습니다.
  • JAR은 루트에 plugin.properties 을 포함합니다.
  • 플러그인 클래스는 @Extension으로 주석을 달고 AccessPlugin 을 구현합니다.
  • plugin.properties 의 plugin.id 은 plugin-resource-mapping.yaml 의 ID 와 일치합니다.

오류입니다: 리소스에 대한 플러그인이 실행되지 않음

위 오류가 발생하면 다음을 확인하세요:

  • plugin-resource-mapping.yaml 의 리소스 이름이 플러그인 ID에 올바르게 매핑됩니다.
  • 플러그인 ID가 정확히 일치합니다(대소문자 구분).

오류입니다: 사용자 지정 경로가 선택되지 않음

위 오류가 발생하면 절대 경로를 사용하거나 시스템 속성을 통해 경로를 전달하세요.

알려진 제한 사항:

CPG 플러그인 기반 커넥터에는 다음과 같은 제한 사항이 있습니다:

  • 현재 PF4J-based 플러그인만 지원합니다.

  • 사용자 인터페이스가 없습니다. 명령줄 인터페이스를 사용하여 실행합니다.

  • 경로 해상도는 OS 환경에 따라 다를 수 있습니다.