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

  1. Clone a versão mais recente do pacote leve CPG a partir do arquivo : Pacote CPG.

  2. 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.properties
    

    Você 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.properties de 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.

  1. Descompacte o arquivo de modelo.

  2. Atualize o arquivo para incluir o arquivo jar CPG mais recente.

  3. Execute o comando a seguir:

    cd java-access-plugin
    mvn -DskipTests clean package
    

    Seu JAR será gerado em: target/<your-plugin>.jar.

  4. Copie o JAR para a pasta plugins/ do conector CPG.

  5. Atualize plugin-resource-mapping.yaml para 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

  1. 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
      } ]
    }
    =================
    
    
  2. 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.yaml mapeia 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.