CPG(공용 정책 게이트웨이) 커넥터
CPG(Common Policy Gateway) 커넥터는 watsonx.data 와 다양한 외부 정책 엔진( IBM Knowledge Catalog, Apache Ranger) 사이의 유연한 가교 역할을 하는 고급 플러그인 기반의 경량 JAR입니다. 이 클라이언트는 사용자 지정 통합을 쉽게 개발, 테스트 및 배포할 수 있는 유연한 기반을 제공하도록 설계되었습니다.
그 핵심에는 지정된 경로(절대 또는 상대)에서 액세스 제어 플러그인 JAR을 동적으로 로드하는 경량 실행 JAR인 CPG 플러그인 러너가 있습니다. 구성 매핑과 사용자 이름, 리소스 및 작업과 같은 사용자 제공 입력을 기반으로 플러그인을 평가합니다. 여러 정책 엔진과 인터페이스하는 사용자 지정 플러그인을 개발하는 데 쉽게 다운로드하여 사용할 수 있는 다운로드 가능한 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입니다.
-
플러그인/: 사용자 정의 플러그인 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 패키지에는 플러그인 템플릿 프로젝트가 포함되어 있습니다. 템플릿을 사용하거나 목적에 맞게 새 템플릿을 만들 수 있습니다. 추가 종속성은 필요하지 않습니다.
-
템플릿 파일의 압축을 풉니다.
-
최신 CPG jar 파일을 포함하도록 파일을 업데이트합니다.
-
다음 명령을 실행하십시오.
cd java-access-plugin mvn -DskipTests clean packageJAR이 생성됩니다:
target/<your-plugin>.jar. -
JAR을 CPG 커넥터의
plugins/폴더에 복사합니다. -
plugin-resource-mapping.yaml을 업데이트하여 플러그인 ID를 참조하세요.선택 사항 :행/열 변환을 반환하려면 다음을 사용하여 설정합니다: result.setTransformColumns(...); result.setTransformRows(...);
실행 중인 CPG 커넥터
-
터미널에서 다음 명령을 사용하여 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 } ] } ================= -
종료 또는 종료하기를 입력하여 중지합니다.
문제점 해결
오류: " 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 환경에 따라 다를 수 있습니다.