Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados PostgreSQL

Última atualização: Jun 27, 2026

A fonte de dados PostgreSQL oferece um canal bidirecional para leitura e gravação de dados no PostgreSQL. Configure tarefas de sincronização de dados usando o modo assistente ou o modo script. Este tópico descreve como o DataWorks suporta a sincronização de dados para PostgreSQL.

Versões suportadas

Configure fontes de dados para as versões do PostgreSQL 10, 11, 12, 13, 14, 15 e 16.4. Para verificar a versão do seu banco de dados PostgreSQL, execute a seguinte instrução.

SHOW SERVER_VERSION;

Limitações

Leitura e gravação offline

Nota

Leia dados de views.

  • A fonte de dados PostgreSQL suporta autenticação baseada em senha, incluindo o método SCRAM-SHA-256. Se você alterar a senha ou o método de autenticação no banco de dados PostgreSQL, atualize a configuração da fonte de dados, teste a conexão novamente e execute manualmente as tarefas relacionadas para validar as alterações.

  • PostgreSQL

  • Se o nome de uma tabela ou coluna no PostgreSQL começar com um dígito, diferenciar maiúsculas de minúsculas ou incluir um hífen (-), envolva o nome entre aspas duplas (""). Caso contrário, o plugin do PostgreSQL não conseguirá ler ou gravar dados. Nos plugins PostgreSQL Reader e Writer, as aspas duplas ("") são uma palavra-chave JSON. Portanto, escape as aspas duplas com uma barra invertida (\). Por exemplo, se uma tabela for nomeada como 123Test, o nome escapado será \"123Test\".

    Nota
    • Escape tanto as aspas duplas de abertura quanto as de fechamento com uma barra invertida (\).

    • O modo assistente não suporta escape de caracteres. Mude para o modo script para realizar essa operação.

    O código a seguir mostra um exemplo de como escapar caracteres no modo script.

    "parameter": {
        "datasource": "abc",
        "column": [
            "id",
            "\"123Test\"", //Add escape characters
    ],
    "where": "",
    "splitPk": "id",
    "table": "public.wpw_test"
    },
  • Não há suporte para atualização de dados em uma fonte de dados PostgreSQL com base em um índice exclusivo. Para atualizar dados, primeiro grave-os em uma tabela temporária e depois use a operação RENAME.

Leitura em tempo real

Os limites a seguir se aplicam a tarefas de sincronização em tempo real no Data Integration:

  • O Data Integration oferece suporte especial para ADD COLUMN:

    • Restrição: Não combine uma operação ADD COLUMN com outras operações ADD COLUMN, DROP COLUMN ou outras instruções DDL em uma única transação.

      Importante

      Se você usar ADD COLUMN junto com outras operações, como DROP COLUMN、RENAME COLUMN ou outras operações ALTER COLUMN, a tarefa de sincronização de dados poderá falhar durante a execução.

    • Limitação: O sistema não reconhece operações DDL diferentes de ADD COLUMN.

  • Não há suporte para ALTER TABLE/CREATE TABLE.

  • Não há suporte para replicação de tabelas TEMPORARY, tabelas UNLOGGED e tabelas Hyper. O PostgreSQL não fornece um mecanismo para assinar a análise de logs WAL para esses tipos de tabelas.

  • Não há suporte para replicação de Sequences (serial/bigserial/identity).

  • Não há suporte para a operação TRUNCATE.

  • Não há suporte para replicação de objetos grandes (Bytea).

  • Não há suporte para replicação de views, materialized views e foreign tables.

  • Quando o PostgreSQL é usado como origem para sincronização em tempo real de tabela única ou de banco de dados completo, apenas as tabelas para as quais a conta possui permissões de proprietário podem ser sincronizadas.

Tipos de colunas suportados

A maioria dos tipos de dados do PostgreSQL é suportada. No entanto, alguns tipos não têm suporte para operações de leitura e gravação em sincronização em lote. Verifique seus tipos de dados antes de prosseguir.

A tabela a seguir lista os mapeamentos de conversão de tipos para PostgreSQL.

Categoria de tipo

Tipo de dados PostgreSQL

Inteiro

BIGINT, BIGSERIAL, INTEGER, SMALLINT e SERIAL

Ponto flutuante

DOUBLE PRECISION, MONEY, NUMERIC e REAL

String

VARCHAR, CHAR, TEXT, BIT e INET

Data e hora

DATE, TIME e TIMESTAMP

Booleano

BOOL

Binário

BYTEA

Nota
  • Não há suporte para tipos de coluna diferentes dos listados acima.

  • No PostgreSQL Reader, converta os tipos MONEY, INET e BIT usando sintaxe semelhante a a_inet::varchar.

Preparações antes da sincronização de dados

Antes de sincronizar dados no DataWorks, prepare o ambiente PostgreSQL conforme descrito nesta seção para garantir que as tarefas de sincronização sejam configuradas e executadas corretamente. As seções a seguir detalham as etapas de preparação para a sincronização do PostgreSQL.

Preparação 1: Criar uma conta e configurar permissões

Planeje uma conta de login no banco de dados para as operações subsequentes. Essa conta deve ter as permissões REPLICATION、 LOGIN no banco de dados.

Nota

A sincronização em tempo real suporta apenas o mecanismo de replicação lógica. A replicação lógica utiliza um modelo de publicação e assinatura, no qual um ou mais assinantes subscrevem a uma ou mais publicações em um nó publicador. Os assinantes extraem dados das publicações às quais estão vinculados.

A replicação lógica de uma tabela geralmente começa com a captura de um snapshot dos dados no banco de dados publicador e sua cópia para o assinante. Após a conclusão do snapshot, as alterações no publicador são enviadas ao assinante em tempo real.

  1. Crie uma conta.

    Para mais informações, consulte Criar uma conta.

  2. Configure as permissões.

    Verifique se a conta possui a permissão replication.

    select userepl from pg_user where usename='xxx'

    O resultado esperado é True. Se o resultado for False, a conta não tem a permissão necessária. Execute a instrução a seguir para conceder a permissão.

    ALTER USER <user> REPLICATION;

Preparação 2: Verificar se há suporte para banco de dados standby

SELECT pg_is_in_recovery()

Apenas o banco de dados primário é suportado. O resultado esperado é False. Se o resultado for True, trata-se de um banco de dados standby. A sincronização em tempo real não suporta bancos de dados standby. Altere a configuração da fonte de dados para apontar para o banco de dados primário. Para mais informações, consulte Configurar a fonte de dados.

Preparação 3: Verificar se wal_level está definido como logical

show wal_level

O parâmetro wal_level especifica o nível de wal_log. O resultado esperado é logical. Caso contrário, o mecanismo de replicação lógica não será suportado.

Preparação 4: Verificar se um processo wal_sender pode ser iniciado

-- Query max_wal_senders show max_wal_senders; -- Query the number of pg_stat_replication entries select count(*) from pg_stat_replication

Se max_wal_senders não estiver vazio e seu valor for maior que o número de entradas max_wal_senders em pg_stat_replication, existem processos wal_sender ociosos disponíveis. O banco de dados PostgreSQL inicia processos wal_sender para que o programa de sincronização de dados envie logs aos assinantes.

Para cada tabela a ser sincronizada, execute manualmente a instrução ALTER TABLE [tableName] REPLICA IDENTITY FULL para conceder as permissões necessárias. Caso contrário, a tarefa de sincronização em tempo real falhará.

Após o início de uma tarefa de sincronização em tempo real do PostgreSQL, slots e publicações são criados automaticamente no banco de dados. O formato do nome do slot é di_slot_ + Solution ID , e o formato do nome da publicação é di_pub_ + Solution ID. Depois que a tarefa de sincronização em tempo real for interrompida ou removida, exclua manualmente os slots e as publicações. Caso contrário, os arquivos WAL do PostgreSQL poderão crescer continuamente.

Adicionar uma fonte de dados

Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária seguindo as instruções em Gerenciamento de fontes de dados. Consulte as descrições de parâmetros no console do DataWorks para entender o significado de cada parâmetro ao adicionar uma fonte de dados.

Se a autenticação SSL estiver ativada para seu banco de dados PostgreSQL, ative-a também ao adicionar a fonte de dados PostgreSQL no DataWorks. Para mais informações, consulte Adicionar autenticação SSL para uma fonte de dados PostgreSQL.

Desenvolvimento de tarefas de sincronização de dados: Guia do processo de sincronização PostgreSQL

Para obter informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias de configuração a seguir.

Guia de configuração de tarefa de sincronização em lote de tabela única

Guia de configuração de tarefa de sincronização para leitura em lote e leitura em tempo real de banco de dados completo

Para mais detalhes sobre o procedimento, consulte Configurar uma tarefa de sincronização em lote de banco de dados completo e Configurar uma tarefa de sincronização em tempo real de banco de dados completo.

Perguntas frequentes

  • Problema de recuperação de dados na sincronização primário-standby

    Esse problema refere-se a um cenário em que o PostgreSQL utiliza recuperação de desastres primário-standby, e o banco de dados standby recupera dados continuamente do banco primário. Devido à diferença temporal entre a sincronização dos dados primários e standby, especialmente em situações como latência de rede, os dados recuperados no banco standby podem divergir significativamente do banco primário. Os dados sincronizados a partir do banco standby não representam um snapshot completo do momento atual.

  • Restrição de consistência

    O PostgreSQL é um sistema RDBMS que oferece uma interface de consulta de dados fortemente consistente. Por exemplo, quando uma tarefa de sincronização está em execução e outros gravadores estão inserindo dados no banco, o PostgreSQL Reader não recupera os dados recém-gravados devido ao recurso de snapshot do banco de dados.

    O texto acima descreve as características de consistência da sincronização de dados do PostgreSQL Reader no modo single-thread. O PostgreSQL Reader pode realizar extração de dados concorrente com base na sua configuração, portanto, a consistência estrita dos dados não pode ser garantida.

    Depois que o PostgreSQL Reader divide os dados com base no splitPk, várias tarefas concorrentes são iniciadas sequencialmente para concluir a sincronização. Essas tarefas concorrentes não pertencem à mesma transação de leitura e há intervalos de tempo entre elas. Portanto, os dados não constituem um snapshot completo e consistente.

    Snapshots consistentes para operações multithread são tecnicamente inviáveis. Isso só pode ser resolvido sob uma perspectiva de engenharia. As soluções a seguir envolvem compensações. Escolha a mais adequada à sua situação.

    • Utilize a sincronização single-thread, o que significa ausência de fragmentação de dados. A desvantagem é a velocidade menor, mas garante a consistência.

    • Interrompa outros gravadores de dados para garantir que os dados atuais estejam estáticos, por exemplo, bloqueando tabelas ou parando a sincronização do banco standby. A desvantagem é o possível impacto nos negócios online.

  • Problema de codificação do banco de dados

    O PostgreSQL suporta apenas as codificações de chinês simplificado EUC_CN e UTF-8 no lado do servidor. O PostgreSQL Reader usa JDBC para extração de dados na camada subjacente. O JDBC suporta nativamente várias codificações e realiza a conversão automaticamente. Portanto, o PostgreSQL Reader não exige que você especifique uma codificação, podendo detectá-la e convertê-la automaticamente.

    Se a codificação de gravação subjacente do PostgreSQL for inconsistente com a codificação configurada, o PostgreSQL Reader não conseguirá detectar esse problema nem fornecer uma solução. Os dados exportados podem conter caracteres corrompidos.

  • Métodos de sincronização incremental de dados

    O PostgreSQL Reader usa instruções JDBC SELECT para extração de dados. Portanto, use SELECT…WHERE… para extrair dados incrementais. Os métodos são os seguintes:

    • Quando uma aplicação online grava dados no banco, ela preenche o campo de modificação com o timestamp da alteração, incluindo inserções, atualizações e exclusões (exclusões lógicas). Para tais aplicações, o PostgreSQL Reader precisa apenas adicionar o timestamp da fase de sincronização anterior na condição where.

    • Para dados sequenciais recém-adicionados, o PostgreSQL Reader precisa apenas adicionar o ID autoincremental máximo da fase anterior na condição where.

    Se não houver nenhuma coluna para distinguir entre dados novos e modificados no nível de negócio, o PostgreSQL Reader não poderá realizar a sincronização incremental e sincronizará apenas os dados completos.

  • Segurança de SQL

    O PostgreSQL Reader fornece a instrução querySql para que você implemente instruções SELECT personalizadas. O PostgreSQL Reader não realiza nenhuma validação de segurança na instrução querySql.

  • Se não for possível selecionar o nome da tabela desejado ao configurar uma tarefa de sincronização, solucione o problema da seguinte forma:

    • Verifique se a fonte de dados está conectada.

    • Confira se a conta do PostgreSQL usada para a fonte de dados possui as permissões necessárias na tabela.

    • Caso o banco de dados contenha um grande número de tabelas, pesquise diretamente digitando o nome da tabela.

  • O PostgreSQL não suporta sincronização de tabelas fragmentadas. Se você tiver muitas tabelas PostgreSQL para sincronizar, utilize uma tarefa de sincronização de banco de dados completo. Para mais informações, consulte Guia de configuração de tarefa de sincronização de banco de dados completo.

Apêndice 1: Exemplo de script e descrição de parâmetros

Configurar uma tarefa de sincronização em lote usando o editor de código

Para configurar uma tarefa de sincronização em lote usando o editor de código, defina os parâmetros relacionados no script de acordo com os requisitos unificados de formato. Para mais informações, consulte Configuração no modo script. As informações a seguir descrevem os parâmetros que devem ser configurados para fontes de dados ao utilizar o editor de código.

Exemplo de script do Reader

Para configurar um job que extrai dados de um banco de dados PostgreSQL, use o modo script. Para mais informações, consulte Configurar uma tarefa de sincronização em lote no modo script.

{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"postgresql",// The plugin name. "parameter":{ "datasource":"",// The data source. "column":[// The columns. "col1", "col2" ], "where":"",// The filter condition. "splitPk":"",// The column used as the split key for data sharding. Data synchronization starts concurrent tasks for data synchronization. "table":""// The table name. }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true, // A value of false for throttle indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent":1, // The concurrency of the job. "mbps":"12"// The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Parâmetros do script do Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

Nome da fonte de dados. O modo script permite adicionar fontes de dados. O valor deste parâmetro deve ser idêntico ao nome da fonte de dados adicionada.

Sim

N/A

table

Nome da tabela da qual você deseja sincronizar dados.

Sim

N/A

column

Conjunto de nomes de colunas a serem sincronizados na tabela configurada, descrito em um array JSON. Por padrão, todas as colunas são usadas, por exemplo, [*].

  • Há suporte para seleção de colunas, permitindo escolher colunas específicas para sincronização.

  • A reordenação de colunas é suportada, possibilitando sincronizar as colunas em uma ordem diferente do schema da tabela.

  • Constantes são aceitas. Siga o formato de sintaxe SQL do MySQL, por exemplo, ["id", "table","1", "'mingya.wmy'", "'null'", "to_char(a+1)", "2,3" , "true"] .

    • id é um nome de coluna comum.

    • table é um nome de coluna que contém uma palavra reservada.

    • 1 é uma constante inteira.

    • 'mingya.wmy' é uma constante string (requer um par de aspas simples).

    • 'null' é uma string.

    • to_char(a+1) é uma função que calcula o comprimento da string.

    • 2,3 é um número de ponto flutuante.

    • true é um valor booleano.

  • column deve especificar explicitamente o conjunto de colunas a sincronizar e não pode ficar vazio.

Sim

N/A

splitFactor

Fator de divisão. Permite configurar o número de divisões de dados. Se múltiplas threads concorrentes forem configuradas, os dados serão divididos em concurrency × splitFactor partes. Por exemplo, se a concorrência for 5 e o splitFactor for 5, os dados serão divididos em 5 × 5 = 25 partes e executados em 5 threads concorrentes.

Nota

Faixa de valores recomendada: 1 a 100. Valores excessivamente altos podem causar erros de falta de memória (OOM).

Não

5

splitPk

Ao extrair dados, se você especificar splitPk, a coluna representada por splitPk será usada para fragmentação de dados. A sincronização inicia tarefas concorrentes para melhorar o desempenho:

  • Recomenda-se usar a chave primária da tabela para splitPk, pois chaves primárias geralmente têm distribuição uniforme, reduzindo o risco de hotspots de dados nos shards resultantes.

  • O splitPk suporta apenas fragmentação de dados inteiros. Strings, pontos flutuantes, datas e outros tipos não são suportados. Se um tipo não suportado for especificado, o recurso splitPk será ignorado e um único canal será usado para sincronização.

  • Se splitPk não for especificado, seja omitido ou deixado vazio, a sincronização usará um único canal para os dados da tabela.

Não

N/A

where

Condição de filtro. O PostgreSQL Reader concatena o SQL com base nas condições column, table e where especificadas, extraindo dados conforme esse SQL. Por exemplo, durante testes, use a condição where para definir um cenário de negócios. Normalmente, sincronizam-se os dados do dia atual. Defina a condição where como id>2 and sex=1:

  • A condição where pode ser usada eficazmente para sincronização incremental de dados.

  • Se a condição where não for configurada ou estiver vazia, a sincronização de dados da tabela inteira será realizada.

Não

N/A

querySql (modo avançado, indisponível no modo assistente)

Em alguns cenários de negócios, a configuração where é insuficiente para descrever as condições de filtro. Use este parâmetro para definir um SQL de filtro personalizado. Quando configurado, o sistema de sincronização ignora as configurações de tabelas, colunas e splitPk, usando diretamente o conteúdo deste parâmetro para filtrar dados. Por exemplo, para sincronizar dados após um JOIN de múltiplas tabelas, use select a,b from table_a join table_b on table_a.id = table_b.id. Ao configurar querySql, o PostgreSQL Reader ignora as configurações de tabela, coluna e where.

Não

N/A

fetchSize

Este parâmetro define o número de registros buscados por lote entre o plugin e o servidor de banco de dados. Esse valor determina o número de interações de rede entre o Data Integration e o servidor, podendo melhorar significativamente o desempenho de extração de dados.

Nota

Um valor de fetchSize muito alto (>2.048) pode causar falta de memória (OOM) no processo de sincronização de dados.

Não

512

Exemplo de script do Writer

A seguir, um exemplo de configuração de script. Para mais informações, consulte as descrições de parâmetros acima.

{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"postgresql",// The plugin name. "parameter":{ "datasource":"",// The data source. "column":[// The columns. "col1", "col2" ], "table":"",// The table name. "preSql":[],// The SQL statements executed before the data synchronization task. "postSql":[],// The SQL statements executed after the data synchronization task. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// A value of false for throttle indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent":1, // The concurrency of the job. "mbps":"12"// The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Parâmetros do script do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

Nome da fonte de dados. O modo script permite adicionar fontes de dados. O valor deste parâmetro deve ser idêntico ao nome da fonte de dados adicionada.

Sim

N/A

table

Nome da tabela para a qual você deseja sincronizar dados.

Sim

N/A

writeMode

Modo de gravação. Atualmente, os modos insert e copy são suportados:

  • insert: Executa a instrução PostgreSQL insert into...values... para gravar dados no PostgreSQL. Se ocorrer conflito de chave primária ou índice único, o registro a ser sincronizado torna-se dado sujo. Recomenda-se usar o modo insert primeiramente.

  • copy: O PostgreSQL fornece o comando copy para copiar dados entre tabelas e arquivos (saída padrão, entrada padrão). O Data Integration suporta o uso de copy from para carregar dados nas tabelas. Tente este modo apenas se encontrar problemas de desempenho.

Não

insert

column

Colunas nas quais os dados serão gravados na tabela de destino, separadas por vírgulas. Por exemplo, "column":["id","name","age"]. Para gravar dados em todas as colunas sequencialmente, use (), por exemplo, "column":[""].

Sim

N/A

preSql

Instruções SQL a serem executadas antes da tarefa de sincronização de dados. Atualmente, o modo assistente permite apenas uma instrução SQL, enquanto o modo script suporta múltiplas instruções, por exemplo, para limpar dados antigos.

Não

N/A

postSql

Instruções SQL a serem executadas após a tarefa de sincronização de dados. Atualmente, o modo assistente permite apenas uma instrução SQL, enquanto o modo script suporta múltiplas instruções, por exemplo, para adicionar um timestamp.

Não

N/A

batchSize

Número de registros enviados por lote. Esse valor pode reduzir significativamente o número de interações de rede entre o Data Integration e o PostgreSQL, melhorando o throughput geral. No entanto, definir esse valor muito alto pode causar falta de memória (OOM) no processo do Data Integration.

Não

1.024

pgType

Configuração de conversão para tipos específicos do PostgreSQL. Os tipos suportados incluem bigint[], double[], text[], Jsonb e JSON. Abaixo está um exemplo de configuração.

{
    "job":
    {
        "content":
        [{
            "reader": {...},
            "writer":
            {
                "parameter":
                {
                    "column":
                    [
                        // Destination table field list
                        "bigint_arr",
                        "double_arr",
                        "text_arr",
                        "jsonb_obj",
                        "json_obj"
                    ],
                    "pgType":
                    {
                        // Special type settings. The key is the field name of the destination table, and the value is the field type.
                        "bigint_arr": "bigint[]",
                        "double_arr": "double[]",
                        "text_arr": "text[]",
                        "jsonb_obj": "jsonb",
                        "json_obj": "json"
                    }

                }
            }
        }]
    }
}

Não

N/A

Apêndice 2: Adicionar autenticação SSL para uma fonte de dados PostgreSQL

Descrição do arquivo de autenticação SSL do PostgreSQL

Ao criar ou modificar uma conexão de fonte de dados PostgreSQL no DataWorks, configure a autenticação SSL. Os parâmetros de configuração da autenticação SSL estão descritos abaixo.

Banco de dados PostgreSQL

Configuração da fonte de dados PostgreSQL no DataWorks

Criptografia de link SSL

Criptografia do cliente

Configuração de ACL

Item de configuração

Descrição

Ativado

Desativado

N/A

Arquivo de certificado Truststore

Opcional. O cliente usa este certificado para autenticar o servidor.

  • Não configurado: Uma conexão regular é usada.

  • Configurado: Uma conexão criptografada por SSL é usada.

Ativado

Configuração de ACL definida como prefer

  • Arquivo de certificado Keystore

  • Arquivo de chave privada

  • Senha da chave privada

Tanto o Arquivo de certificado Keystore quanto o Arquivo de chave privada são opcionais. Quando a Configuração de ACL está definida como prefer, o servidor não impõe a verificação do certificado do cliente.

  • Se o Arquivo de chave privada não estiver criptografado, uma conexão criptografada por SSL será usada para conectar ao banco de dados, e o arquivo de chave privada será verificado.

  • Se o Arquivo de chave privada estiver criptografado, configure a Senha da chave privada para verificar corretamente o Arquivo de chave privada e estabelecer a conexão.

Configuração de ACL definida como verify-ca

  • Arquivo de certificado Keystore: Obrigatório. Este é o certificado CA do cliente usado para provar sua identidade ao servidor.

  • Arquivo de chave privada: Obrigatório. O cliente detém este arquivo de chave privada, que não é compartilhado publicamente. Ele é usado em conjunto com o Arquivo de certificado Keystore enviado ao servidor para autenticação de identidade.

  • Senha da chave privada: Opcional. Se o arquivo de chave privada for protegido por senha, forneça a senha da chave privada. Caso contrário, deixe-o vazio.

Nota
  • Quando a configuração de ACL está definida como prefer, a verificação do conteúdo do cliente não é imposta.

    • Se nenhum arquivo for configurado para autenticação SSL, uma conexão regular será usada.

    • Se arquivos de autenticação forem adicionados para SSL, consulte as descrições correspondentes na tabela acima.

  • Quando a configuração de ACL está definida como verify-ca, configure o Arquivo de certificado Keystore, o Arquivo de chave privada e a Senha da chave privada para criar a fonte de dados.

Obter arquivos de autenticação SSL do PostgreSQL

Esta seção usa uma instância do ApsaraDB RDS for PostgreSQL como exemplo para gerar certificados de autenticação SSL.

  1. Obtenha o Arquivo de certificado Truststore.

    Para mais informações sobre como obter o Arquivo de certificado Truststore, consulte Configurar uma conexão criptografada por SSL.

    1. Acesse a lista de instâncias RDS, clique em na instância RDS na região correspondente e, em seguida, clique em no ID da instância alvo para ir à página de detalhes da instância.

    2. Selecione a string de conexão que deseja proteger. A figura a seguir ilustra o procedimento:

    image

    Nota
    • Se o endpoint público estiver habilitado, tanto os endpoints internos quanto os públicos serão exibidos. Um certificado de nuvem pode proteger apenas um endpoint. Como o endpoint interno é relativamente mais seguro, proteja o endpoint público. Para mais informações sobre como visualizar endpoints internos e públicos, consulte Visualizar endpoints internos e públicos.

    • Se precisar proteger tanto os endpoints internos quanto os públicos, consulte Configurar um certificado personalizado.

    • Após configurar o certificado de nuvem, o Running Status da instância muda para Modifying SSL. Esse status dura cerca de três minutos. Aguarde até que o status de execução mude para Running antes de prosseguir.

    c. Clique em Download CA Certificate para obter o arquivo de certificado Truststore.

    image

    O pacote de certificado CA baixado contém três arquivos. Ao configurar a fonte de dados PostgreSQL no DataWorks, faça upload do arquivo com extensão .pem ou do arquivo com extensão .p7b no item de configuração Arquivo de certificado Truststore.

  2. Obtenha e configure o Arquivo de certificado Keystore, o Arquivo de chave privada e a Senha da chave privada.

    Pré-requisitos: Você concluiu a configuração de uma conexão criptografada por SSL ou a configuração de um certificado personalizado, e possui a ferramenta OpenSSL.

    Nota

    Se você usa um sistema Linux, o OpenSSL já vem pré-instalado. Se usa Windows, baixe e instale o pacote de software OpenSSL.

    Para mais informações sobre como obter e configurar o Arquivo de certificado Keystore, o Arquivo de chave privada e a Senha da chave privada, consulte Configurar um certificado de cliente.

    1. Use a ferramenta OpenSSL em um sistema Linux ou instale o software OpenSSL em um sistema Windows para gerar um certificado autoassinado (ca1.crt) e sua chave privada (ca1.key).

      openssl req -new -x509 -days 3650 -nodes -out ca1.crt -keyout ca1.key -subj "/CN=root-ca1"
    2. Gere um arquivo de solicitação de assinatura de certificado de cliente (client.csr) e uma chave privada de certificado de cliente (client.key).

      openssl req -new -nodes -text -out client.csr -keyout client.key -subj "/CN=<client_username>"

      Neste comando, o valor CN após o parâmetro -subj deve ser definido como o nome de usuário usado pelo cliente para acessar o banco de dados.

    3. Gere o certificado de cliente (client.crt).

      openssl x509 -req -in client.csr -text -days 365  -CA ca1.crt -CAkey ca1.key -CAcreateserial  -out client.crt
    4. Se o seu servidor RDS PostgreSQL exigir verificação de certificado CA do cliente, abra o arquivo de certificado autoassinado do cliente gerado ca1.crt, copie o conteúdo do certificado e cole-o na caixa de diálogo Client CA Certificate Public Key Content como o certificado CA do cliente.image

    5. Após configurar o certificado CA do cliente no lado do RDS, ao configurar a fonte de dados PostgreSQL no DataWorks, converta a chave privada do certificado de cliente client.key para um arquivo client.pk8 e faça upload do arquivo client.pk8 no item de configuração Arquivo de chave privada na configuração da fonte de dados PostgreSQL do DataWorks.

      cp client.key client.pk8
    6. Configure a senha da chave privada.

      openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DES
      Nota

      Ao executar o comando para configurar a senha da chave privada, insira uma senha. Se definir uma senha, use a mesma senha para a senha da chave privada na configuração da fonte de dados PostgreSQL do DataWorks.

Configurar arquivos de autenticação SSL do PostgreSQL

Ao fazer upload dos arquivos de certificado obtidos para os itens de configuração do PostgreSQL no DataWorks, realize as seguintes operações:

image

Configuração de ACL: Acesse a lista de instâncias RDS, clique em na instância RDS na região correspondente, clique em no ID da instância alvo para ir à página de detalhes da instância e, em seguida, clique em Data Security > ACL Configuration para modificar a configuração. Selecione diferentes métodos de autenticação SSL. Para mais informações, consulte Configurar ACL.

image

Nota
  • Se o método de autenticação ACL estiver definido como prefer, o servidor PostgreSQL não impõe a verificação do certificado do cliente.

  • Se o método de autenticação ACL estiver definido como verify-ca no RDS PostgreSQL, faça upload do certificado de cliente correto ao configurar a fonte de dados PostgreSQL no DataWorks, para que o servidor possa verificar a autenticação do cliente.