Conector do gateway de política comum (CPG)
O conector CPG (Common Policy Gateway, gateway de política comum) é um JAR avançado e leve, baseado em plugins, que funciona como uma ponte flexível entre o site watsonx.data e uma grande variedade de mecanismos de política externos ( IBM Knowledge Catalog, Apache Ranger). Esse cliente foi projetado para fornecer uma base flexível sobre a qual você pode construir, facilitando o desenvolvimento, o teste e a implementação de integrações personalizadas.
Em seu núcleo está o CPG Plugin Runner, um JAR executável leve que carrega dinamicamente seus JARs de plug-in de controle de acesso a partir de um caminho especificado (absoluto ou relativo). Ele avalia os plug-ins com base no mapeamento da configuração e nas entradas fornecidas pelo usuário, como nome de usuário, recursos e ações. Ele está disponível como um arquivo JAR para download que pode ser facilmente baixado e usado para desenvolver plug-ins personalizados que fazem interface com vários mecanismos de política. Você pode criar seus próprios JARs adaptados a mecanismos de política específicos e testar rapidamente a integração.
Antes de Iniciar
Você deve:
-
Tenha o(s) JAR(s) do plug-in (no formato PF4J ).
-
Um arquivo de mapeamento de política que define o mapeamento dos plug-ins que devem ser executados para os mecanismos de política correspondentes.
Acesso ao pacote CPG
-
Clone a versão mais recente do pacote leve CPG a partir do arquivo : Pacote CPG.
-
Após a clonagem, você pode visualizar a seguinte estrutura de pastas:
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.propertiesVocê pode renomear ou mover pastas conforme necessário.
O pacote inclui:
-
CPG-Plugin-Runner-1.0.0.jar: O JAR do conector executável que carrega e executa seus plug-ins.
-
plugins/: Diretório para colocar seus JARs de plug-in personalizados.
-
plugin-resource-mapping.yaml: Arquivo de configuração que mapeia os recursos do watsonx.data para as IDs de plug-in do mecanismo de políticas. A seguir, um exemplo do site
plugin-resource-mapping.yaml.
plugin-mapping:
java-access-plugin:
- iceberg
ranger-access-plugin:
- iceberg
- hive_data
python-access-plugin:
- hive_data
Parâmetros que são necessários no arquivo de configuração:
-
Chaves: O nome do recurso watsonx.data (exemplo:
hive_data). -
Valores: IDs de plug-in, definidos no arquivo
plugin.propertiesde cada plug-in. Exemplo:plugin.id=java-access-plugin. O ID deve corresponder exatamente.
Criação de um plug-in (a partir do modelo) e configuração de YAML
Para se conectar ao mecanismo de política necessário de sua escolha, você deve criar um plug-in (arquivo JAR) que compile os tipos de API já incorporados em cpg.jar. O pacote CPG baixado inclui um projeto de modelo de plug-in. Você
pode usar o modelo e criar um novo para sua finalidade. Não são necessárias dependências adicionais.
-
Descompacte o arquivo de modelo.
-
Atualize o arquivo para incluir o arquivo jar CPG mais recente.
-
Execute o comando a seguir:
cd java-access-plugin mvn -DskipTests clean packageSeu JAR será gerado em:
target/<your-plugin>.jar. -
Copie o JAR para a pasta
plugins/do conector CPG. -
Atualize
plugin-resource-mapping.yamlpara fazer referência ao seu ID de plug-in.Opcional: Para retornar transformações de linha/coluna, defina-as usando: result.setTransformColumns(...); result.setTransformRows(...);
Conector CPG em execução
-
Execute o arquivo JAR do conector CPG no Terminal usando o comando: 'java -jar cpg.jar '.
Isso usará o seguinte caminho padrão para os plug-ins e o arquivo de configuração.
- plugins/ :./plugins
- config/ :. /config/plugin-resource-mapping.yaml
Você também pode personalizar o caminho usando o seguinte comando:
java -jar cpg.jar <absolute/path/to/plugins> <absolute/path/to/config/plugin-resource-mapping.yaml>.A seguir, é exibido um exemplo de sessão interativa:
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 } ] } ================= -
Digite quit ou exit para parar.
Resolução de problemas
Erro: "Nenhuma extensão AccessPlugin encontrada"
Se você receber o erro acima, verifique o seguinte:
- Os plug-ins e o diretório existem e não estão vazios.
- O JAR inclui o endereço plugin.properties em sua raiz.
- A classe do plug-in é anotada com @Extension e implementa AccessPlugin.
- O endereço plugin.id em plugin.properties corresponde ao ID em plugin-resource-mapping.yaml.
Erro: Plugin não está sendo executado para o recurso
Se você receber o erro acima, verifique o seguinte:
- O nome do recurso em
plugin-resource-mapping.yamlmapeia corretamente o ID do plug-in. - As IDs de plug-in correspondem exatamente (diferenciam maiúsculas de minúsculas).
Erro: Caminhos personalizados não são coletados
Se você receber o erro acima, certifique-se de usar caminhos absolutos ou passe-os pelas propriedades do sistema.
Limitações conhecidas:
O conector baseado em plug-in do CPG tem as seguintes limitações:
-
Atualmente, é compatível apenas com os plug-ins PF4J-based.
-
Não há interface de usuário. Executar usando a interface de linha de comando.
-
A resolução do caminho pode variar entre os ambientes do sistema operacional.