Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos PostgreSQL

Última actualización: Sep 04, 2026

El origen de datos PostgreSQL proporciona un canal bidireccional para leer y escribir datos en PostgreSQL. Configure tareas de sincronización de datos mediante el modo asistente o el modo script. Este tema describe cómo DataWorks admite la sincronización de datos para PostgreSQL.

Versiones compatibles

Configure orígenes de datos para las versiones 10, 11, 12, 13, 14, 15 y 16.4 de PostgreSQL. Para comprobar la versión de su base de datos PostgreSQL, ejecute la siguiente sentencia.

SHOW SERVER_VERSION;

Límites

Lectura y escritura sin conexión

Nota

Lea datos desde vistas.

  • El origen de datos PostgreSQL es compatible con la autenticación basada en contraseña, incluido el método SCRAM-SHA-256. Si cambia la contraseña o el método de autenticación en la base de datos PostgreSQL, actualice la configuración del origen de datos, pruebe la conexión nuevamente y ejecute manualmente las tareas relacionadas para comprobar los cambios.

  • PostgreSQL

  • Si el nombre de una tabla o columna en PostgreSQL comienza con un dígito, distingue entre mayúsculas y minúsculas, o incluye un guion (-), encierre el nombre entre comillas dobles (""). De lo contrario, el plugin de PostgreSQL no podrá leer ni escribir datos. En los plugins PostgreSQL Reader y Writer, las comillas dobles ("") son una palabra clave de JSON. Por lo tanto, debe escapar las comillas dobles con una barra invertida (\). Por ejemplo, si una tabla se llama 123Test, el nombre escapado es \"123Test\".

    Nota
    • Tanto las comillas dobles de apertura como las de cierre deben escaparse con una barra invertida (\).

    • El modo asistente no admite el escape de caracteres. Cambie al modo script para escapar caracteres.

    El siguiente código muestra un ejemplo de cómo escapar caracteres en modo script.

    "parameter": {
        "datasource": "abc",
        "column": [
            "id",
            "\"123Test\"", //Add escape characters
    ],
    "where": "",
    "splitPk": "id",
    "table": "public.wpw_test"
    },
  • No se admite la actualización de datos en un origen de datos PostgreSQL basada en un índice único. Para actualizar datos, primero escriba los datos en una tabla temporal y luego utilice la operación RENAME.

Lectura en tiempo real

Los siguientes límites aplican a las tareas de sincronización en tiempo real en Data Integration:

  • Data Integration ofrece compatibilidad especial para ADD COLUMN:

    • Restricción: No combine una operación ADD COLUMN con otras operaciones ADD COLUMN, DROP COLUMN u otras sentencias DDL en una sola transacción.

      Importante

      Si utiliza ADD COLUMN junto con otras operaciones, como DROP COLUMN、RENAME COLUMN u otras operaciones ALTER COLUMN, es posible que la tarea de sincronización de datos no se ejecute correctamente.

    • Limitación: Las operaciones DDL distintas de ADD COLUMN no se reconocen.

  • ALTER TABLE/CREATE TABLE no es compatible.

  • No se admite la replicación de tablas TEMPORARY, tablas UNLOGGED ni tablas Hyper. PostgreSQL no proporciona un mecanismo para suscribirse al análisis de registros WAL para estos tipos de tablas.

  • No se admite la replicación de Sequences (serial/bigserial/identity).

  • La operación TRUNCATE no es compatible.

  • No se admite la replicación de objetos grandes (Bytea).

  • No se admite la replicación de vistas, vistas materializadas ni tablas externas.

  • Cuando PostgreSQL se utiliza como origen para la sincronización en tiempo real de una sola tabla o de toda la base de datos, solo pueden sincronizarse las tablas sobre las cuales la cuenta tiene permisos de propietario.

Tipos de columna compatibles

La mayoría de los tipos de datos de PostgreSQL son compatibles. Sin embargo, algunos tipos no se admiten en operaciones de lectura y escritura de sincronización por lotes. Compruebe sus tipos de datos antes de continuar.

La siguiente tabla enumera las asignaciones de conversión de tipos para PostgreSQL.

Categoría de tipo

Tipo de dato de PostgreSQL

Entero

BIGINT, BIGSERIAL, INTEGER, SMALLINT y SERIAL

Punto flotante

DOUBLE PRECISION, MONEY, NUMERIC y REAL

Cadena

VARCHAR, CHAR, TEXT, BIT e INET

Fecha y hora

DATE, TIME y TIMESTAMP

Booleano

BOOL

Binario

BYTEA

Nota
  • Los tipos de columna distintos de los enumerados anteriormente no son compatibles.

  • En PostgreSQL Reader, los tipos MONEY, INET y BIT deben convertirse mediante una sintaxis similar a a_inet::varchar.

Preparativos previos a la sincronización de datos

Antes de sincronizar datos en DataWorks, prepare el entorno de PostgreSQL como se describe en esta sección para garantizar que las tareas de sincronización de datos de PostgreSQL puedan configurarse y ejecutarse correctamente en DataWorks. Las siguientes secciones describen los pasos de preparación para la sincronización de PostgreSQL.

Preparativo 1: Crear una cuenta y configurar permisos

Planifique una cuenta de inicio de sesión en la base de datos para las operaciones posteriores. Esta cuenta debe tener los permisos REPLICATION、 LOGIN en la base de datos.

Nota

La sincronización en tiempo real solo admite el mecanismo de replicación lógica. La replicación lógica utiliza un modelo de publicación y suscripción en el que uno o más suscriptores se suscriben a una o más publicaciones en un nodo publicador. Los suscriptores extraen datos de las publicaciones a las que están suscritos.

La replicación lógica de una tabla generalmente comienza tomando una instantánea de los datos en la base de datos publicadora y copiándolos al suscriptor. Una vez completada la instantánea, los cambios en el publicador se envían al suscriptor en tiempo real.

  1. Cree una cuenta.

    Para obtener más información, consulte Create an account.

  2. Configure los permisos.

    Compruebe si la cuenta tiene el permiso replication.

    select userepl from pg_user where usename='xxx'

    El resultado esperado es True. Si el resultado es False, la cuenta no tiene el permiso. Ejecute la siguiente sentencia para otorgar el permiso.

    ALTER USER <user> REPLICATION;

Preparativo 2: Comprobar si se admite una base de datos en espera

SELECT pg_is_in_recovery()

Solo se admite la base de datos principal. El resultado esperado es False. Si el resultado es True, la base de datos es una base de datos en espera. La sincronización en tiempo real no admite bases de datos en espera. Modifique la configuración del origen de datos para que apunte a la base de datos principal. Para obtener más información, consulte Configure the data source.

Preparativo 3: Comprobar si wal_level está establecido en logical

show wal_level

wal_level especifica el nivel de wal_log. El resultado esperado es logical. De lo contrario, el mecanismo de replicación lógica no es compatible.

Preparativo 4: Comprobar si puede iniciarse un proceso wal_sender

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

Si max_wal_senders no está vacío y su valor es mayor que el número de entradas max_wal_senders en pg_stat_replication, hay procesos wal_sender inactivos disponibles. La base de datos PostgreSQL inicia procesos wal_sender para que el programa de sincronización de datos envíe registros a los suscriptores.

Para cada tabla que deba sincronizarse, ejecute manualmente la sentencia ALTER TABLE [tableName] REPLICA IDENTITY FULL para otorgar los permisos necesarios. De lo contrario, la tarea de sincronización en tiempo real fallará.

Después de iniciar una tarea de sincronización en tiempo real de PostgreSQL, se crean automáticamente slots y publicaciones en la base de datos. El formato del nombre del slot es di_slot_ + synchronization task ID, y el formato del nombre de la publicación es di_pub_ + Solution ID. Después de detener o retirar la tarea de sincronización en tiempo real, elimine manualmente los slots y las publicaciones. De lo contrario, los archivos WAL de PostgreSQL podrían crecer continuamente. Busque el ID de la tarea de sincronización en la lista de tareas de DataWorks Data Integration, localice la tarea correspondiente y compruebe su estado y configuraciones de programación para confirmar si la tarea se ha detenido o retirado.

Agregar un origen de datos

Antes de desarrollar una tarea de sincronización en DataWorks, agregue el origen de datos requerido a DataWorks siguiendo las instrucciones en Data source configuration. Consulte las descripciones de parámetros en la consola de DataWorks para comprender el significado de los parámetros al agregar un origen de datos.

Si la autenticación SSL está habilitada para su base de datos PostgreSQL, también debe habilitar la autenticación SSL al agregar un origen de datos PostgreSQL en DataWorks. Para obtener más información, consulte Add SSL authentication for a PostgreSQL data source.

Desarrollo de tareas de sincronización de datos: Guía del proceso de sincronización de PostgreSQL

Para obtener información sobre el punto de entrada y el procedimiento para configurar una tarea de sincronización, consulte las siguientes guías de configuración.

Guía de configuración de tareas de sincronización por lotes de tabla única

Guía de configuración de tareas de sincronización de lectura por lotes de base de datos completa y lectura en tiempo real de base de datos completa

Para obtener más información sobre el procedimiento, consulte Configure a full-database batch synchronization task y Configure a full-database real-time synchronization task.

Preguntas frecuentes

  • Problema de recuperación de datos de sincronización principal-en espera

    El problema de sincronización principal-en espera se refiere a un escenario en el que PostgreSQL utiliza recuperación ante desastres principal-en espera, y la base de datos en espera recupera datos continuamente de la base de datos principal. Debido a que existe una diferencia de tiempo entre la sincronización de datos principal y en espera, especialmente en ciertas situaciones como latencia de red, los datos recuperados en la base de datos en espera pueden diferir significativamente de la base de datos principal. Los datos sincronizados desde la base de datos en espera no son una instantánea completa del momento actual.

  • Restricción de consistencia

    PostgreSQL es un sistema RDBMS que proporciona una interfaz de consulta de datos fuertemente consistente. Por ejemplo, cuando se ejecuta una tarea de sincronización y otros escritores están escribiendo datos en la base de datos, PostgreSQL Reader no recupera los datos recién escritos debido a la función de instantánea de la base de datos.

    Lo anterior describe las características de consistencia de la sincronización de datos de PostgreSQL Reader en modo de hilo único. PostgreSQL Reader puede realizar extracciones de datos concurrentes según su configuración, por lo que no se puede garantizar una consistencia estricta de los datos.

    Después de que PostgreSQL Reader divide los datos basándose en splitPk, se inician secuencialmente varias tareas concurrentes para completar la sincronización de datos. Estas tareas concurrentes no pertenecen a la misma transacción de lectura y existen intervalos de tiempo entre ellas. Por lo tanto, los datos no constituyen una instantánea de datos completa y consistente.

    Las instantáneas consistentes para operaciones multihilo son técnicamente inviables. Esto solo puede abordarse desde una perspectiva de ingeniería. Las siguientes soluciones implican compensaciones. Elija según su situación.

    • Utilice sincronización de hilo único, lo que implica que no hay fragmentación de datos. La desventaja es una velocidad más lenta, pero garantiza la consistencia.

    • Detenga otros escritores de datos para asegurar que los datos actuales sean estáticos, por ejemplo, bloqueando tablas o deteniendo la sincronización de la base de datos en espera. La desventaja es el posible impacto en el negocio en línea.

  • Problema de codificación de base de datos

    PostgreSQL solo admite las codificaciones de chino simplificado EUC_CN y UTF-8 en el lado del servidor. PostgreSQL Reader utiliza JDBC para la extracción de datos en el nivel subyacente. JDBC admite nativamente varias codificaciones y realiza la conversión de codificación en el nivel subyacente. Por lo tanto, PostgreSQL Reader no requiere que especifique una codificación y puede detectar y convertir codificaciones automáticamente.

    Si la codificación de escritura subyacente de PostgreSQL es inconsistente con su codificación configurada, PostgreSQL Reader no puede detectar este problema ni proporcionar una solución. Los datos exportados pueden contener caracteres ilegibles.

  • Métodos de sincronización de datos incrementales

    PostgreSQL Reader utiliza sentencias SELECT de JDBC para la extracción de datos. Por lo tanto, puede usar SELECT…WHERE… para extraer datos incrementales. Los métodos son los siguientes:

    • Cuando una aplicación en línea escribe datos en la base de datos, llena el campo de modificación con la marca de tiempo de la modificación, incluyendo inserciones, actualizaciones y eliminaciones (eliminaciones lógicas). Para tales aplicaciones, PostgreSQL Reader solo necesita agregar la marca de tiempo de la fase de sincronización anterior en la condición where.

    • Para datos secuenciales recién agregados, PostgreSQL Reader solo necesita agregar el ID autoincrementable máximo de la fase anterior en la condición where.

    Si no hay ninguna columna para distinguir entre datos nuevos y modificados a nivel de negocio, PostgreSQL Reader no puede realizar la sincronización incremental de datos y solo puede sincronizar datos completos.

  • Seguridad SQL

    PostgreSQL Reader proporciona la sentencia querySql para que implemente sentencias de extracción SELECT personalizadas. PostgreSQL Reader no realiza ninguna validación de seguridad en la sentencia querySql.

  • Si no puede seleccionar el nombre de tabla deseado al configurar una tarea de sincronización, solucione el problema de la siguiente manera:

    • Compruebe si el origen de datos está conectado.

    • Compruebe si la cuenta de PostgreSQL utilizada para el origen de datos tiene los permisos de tabla necesarios.

    • Si la base de datos contiene una gran cantidad de tablas, se recomienda buscar directamente escribiendo el nombre de la tabla.

  • PostgreSQL no admite la sincronización de tablas fragmentadas. Si tiene una gran cantidad de tablas PostgreSQL para sincronizar, se recomienda utilizar una tarea de sincronización de base de datos completa. Para obtener más información, consulte Full-database synchronization task configuration guide.

Apéndice 1: Demostración de script y descripción de parámetros

Configurar una tarea de sincronización por lotes mediante el editor de código

Si desea configurar una tarea de sincronización por lotes mediante el editor de código, configure los parámetros relacionados en el script según los requisitos unificados de formato de script. Para obtener más información, consulte Script mode configuration. La siguiente información describe los parámetros que debe configurar para los orígenes de datos cuando configura una tarea de sincronización por lotes mediante el editor de código.

Demostración de script de Reader

Para configurar un trabajo que extraiga datos de una base de datos PostgreSQL, utilice el modo script. Para obtener más información, consulte Configure a batch synchronization task in script mode.

{ "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 del script de Reader

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

El nombre del origen de datos. El modo script permite agregar orígenes de datos. El valor de este parámetro debe ser igual al nombre del origen de datos que agregó.

Sí

N/A

table

El nombre de la tabla desde la cual desea sincronizar datos.

Sí

N/A

column

El conjunto de nombres de columna a sincronizar en la tabla configurada, descrito en una matriz JSON. De forma predeterminada, se utilizan todas las columnas, por ejemplo, [*].

  • Se admite la selección de columnas, lo que significa que puede seleccionar columnas específicas para sincronizar.

  • Se admite la reordenación de columnas, lo que significa que las columnas pueden sincronizarse en un orden diferente al esquema de la tabla.

  • Se admiten constantes. Debe seguir el formato de sintaxis SQL de MySQL, por ejemplo, ["id", "table","1", "'mingya.wmy'", "'null'", "to_char(a+1)", "2.3" , "true"] .

    • id es un nombre de columna regular.

    • table es un nombre de columna que contiene una palabra reservada.

    • 1 es una constante entera.

    • 'mingya.wmy' es una constante de cadena (se requiere un par de comillas simples).

    • 'null' es una cadena.

    • to_char(a+1) es una función que calcula la longitud de la cadena.

    • 2.3 es un número de punto flotante.

    • true es un valor booleano.

  • column debe especificar explícitamente el conjunto de columnas a sincronizar y no puede dejarse vacío.

Sí

N/A

splitFactor

El factor de división. Configure el número de divisiones de datos. Si se configuran varios hilos concurrentes, los datos se dividen en concurrency × splitFactor partes. Por ejemplo, si la concurrencia es 5 y splitFactor es 5, los datos se dividen en 5 × 5 = 25 partes y se ejecutan en 5 hilos concurrentes.

Nota

Rango de valores recomendado: 1 a 100. Valores excesivamente grandes pueden causar errores de falta de memoria (OOM).

No

5

splitPk

Cuando PostgreSQL Reader extrae datos, si especifica splitPk, la columna representada por splitPk se utiliza para la fragmentación de datos. La sincronización de datos inicia tareas concurrentes para mejorar el rendimiento de la sincronización:

  • Se recomienda utilizar la clave principal de la tabla para splitPk, ya que las claves principales generalmente están distribuidas uniformemente, lo que reduce el riesgo de puntos críticos de datos en los fragmentos resultantes.

  • splitPk solo admite fragmentación de datos enteros. No se admiten cadenas, puntos flotantes, fechas y otros tipos. Si especifica un tipo no compatible, la función splitPk se ignora y se utiliza un solo canal para la sincronización.

  • Si no se especifica splitPk, incluyendo no proporcionar splitPk o dejar vacío el valor de splitPk, la sincronización de datos utiliza un solo canal para sincronizar los datos de la tabla.

No

N/A

where

La condición de filtro. PostgreSQL Reader concatena SQL basándose en las condiciones column, table y where especificadas, y extrae datos basándose en el SQL. Por ejemplo, durante las pruebas, puede usar la condición where para especificar un escenario de negocio. Normalmente, se sincronizan los datos del día actual. Puede especificar la condición where como id>2 and sex=1:

  • La condición where puede utilizarse eficazmente para la sincronización incremental de datos.

  • Si la condición where no está configurada o se deja vacía, se realiza la sincronización de datos de toda la tabla.

No

N/A

querySql (modo avanzado, no disponible en modo asistente)

En algunos escenarios de negocio, la configuración where es insuficiente para describir las condiciones de filtro. Utilice este parámetro para definir SQL de filtro personalizado. Cuando se configura este parámetro, el sistema de sincronización de datos ignora las configuraciones de tablas, columnas y splitPk, y utiliza directamente el contenido de este parámetro para filtrar datos. Por ejemplo, para sincronizar datos después de un JOIN de múltiples tablas, use select a,b from table_a join table_b on table_a.id = table_b.id. Cuando configura querySql, PostgreSQL Reader ignora las configuraciones de tabla, columna y where.

No

N/A

fetchSize

Este parámetro especifica el número de registros obtenidos por lote entre el plugin y el servidor de base de datos. Este valor determina el número de interacciones de red entre Data Integration y el servidor, y puede mejorar significativamente el rendimiento de extracción de datos.

Nota

Un valor de fetchSize demasiado grande (>2048) puede causar que el proceso de sincronización de datos se quede sin memoria (OOM).

No

512

Demostración de script de Writer

El siguiente es un ejemplo de configuración de script. Para obtener más información, consulte las descripciones de parámetros anteriores.

{ "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 del script de Writer

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

El nombre del origen de datos. El modo script permite agregar orígenes de datos. El valor de este parámetro debe ser igual al nombre del origen de datos que agregó.

Sí

N/A

table

El nombre de la tabla hacia la cual desea sincronizar datos.

Sí

N/A

writeMode

El modo de escritura. Actualmente, se admiten los modos insert y copy:

  • insert: Ejecuta la sentencia insert into...values... de PostgreSQL para escribir datos en PostgreSQL. Si ocurre un conflicto de clave principal o índice único, el registro a sincronizar se convierte en datos sucios. Se recomienda utilizar primero el modo insert.

  • copy: PostgreSQL proporciona el comando copy para copiar datos entre tablas y archivos (salida estándar, entrada estándar). Data Integration admite el uso de copy from para cargar datos en tablas. Se recomienda probar este modo solo cuando encuentre problemas de rendimiento.

No

insert

column

Las columnas en las que se escriben los datos en la tabla de destino, separadas por comas. Por ejemplo, "column":["id","name","age"]. Para escribir datos en todas las columnas secuencialmente, use (), por ejemplo, "column":[""].

Sí

N/A

preSql

Las sentencias SQL a ejecutar antes de que se ejecute la tarea de sincronización de datos. Actualmente, el modo asistente solo permite una sentencia SQL, mientras que el modo script admite múltiples sentencias SQL, por ejemplo, para borrar datos antiguos.

No

N/A

postSql

Las sentencias SQL a ejecutar después de que se ejecute la tarea de sincronización de datos. Actualmente, el modo asistente solo permite una sentencia SQL, mientras que el modo script admite múltiples sentencias SQL, por ejemplo, para agregar una marca de tiempo.

No

N/A

batchSize

El número de registros enviados por lote. Este valor puede reducir significativamente el número de interacciones de red entre Data Integration y PostgreSQL, y mejorar el throughput general. Sin embargo, establecer este valor demasiado alto puede causar que el proceso de Data Integration se quede sin memoria (OOM).

No

1,024

pgType

La configuración de conversión para tipos específicos de PostgreSQL. Los tipos admitidos incluyen bigint[], double[], text[], Jsonb y JSON. El siguiente es un ejemplo de configuración.

{
    "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"
                    }

                }
            }
        }]
    }
}

No

N/A

Apéndice 2: Agregar autenticación SSL para un origen de datos PostgreSQL

Descripción de los archivos de autenticación SSL de PostgreSQL

Al crear o modificar una conexión de origen de datos PostgreSQL en DataWorks, puede configurar la autenticación SSL. A continuación se describen los parámetros de configuración de la autenticación SSL.

Base de datos PostgreSQL

Configuración del origen de datos PostgreSQL en DataWorks

Cifrado de enlace SSL

Cifrado de cliente

Configuración de ACL

Elemento de configuración

Descripción

Habilitado

Deshabilitado

N/A

Archivo de certificado Truststore

Opcional. El cliente utiliza este certificado para autenticar al servidor.

  • No configurado: Se usa una conexión estándar.

  • Configurado: Se usa una conexión cifrada con SSL.

Habilitado

Configuración de ACL establecida en prefer

  • Archivo de certificado Keystore

  • Archivo de clave privada

  • Contraseña de clave privada

Tanto el archivo de certificado Keystore como el archivo de clave privada son opcionales. Cuando la configuración de ACL se establece en prefer, el servidor no exige la verificación del certificado del cliente.

  • Si el archivo de clave privada no está cifrado, se utiliza una conexión cifrada con SSL para conectarse a la base de datos y se verifica el archivo de clave privada.

  • Si el archivo de clave privada está cifrado, debe configurar la contraseña de clave privada para verificar correctamente el archivo de clave privada y establecer la conexión.

Configuración de ACL establecida en verify-ca

  • Archivo de certificado Keystore: Obligatorio. Es el certificado CA del cliente que este utiliza para demostrar su identidad ante el servidor.

  • Archivo de clave privada: Obligatorio. El cliente conserva este archivo de clave privada, el cual no se comparte públicamente. Se utiliza junto con el archivo de certificado Keystore cargado en el servidor para la autenticación de identidad.

  • Contraseña de clave privada: Opcional. Si el archivo de clave privada está protegido con contraseña, debe proporcionar dicha contraseña. De lo contrario, puede dejar el campo vacío.

Nota
  • Cuando la configuración de ACL se establece en prefer, no se exige la verificación del contenido del cliente.

    • Si no se configuran archivos para la autenticación SSL, se utiliza una conexión estándar.

    • Si se agregan archivos de autenticación para SSL, consulte las descripciones correspondientes en la tabla anterior.

  • Cuando la configuración de ACL se establece en verify-ca, configure el archivo de certificado Keystore, el archivo de clave privada y la contraseña de clave privada para crear el origen de datos.

Obtener archivos de autenticación SSL de PostgreSQL

En esta sección se utiliza una instancia de ApsaraDB RDS for PostgreSQL como ejemplo para generar certificados de autenticación SSL.

  1. Obtenga el archivo de certificado Truststore.

    Para obtener más información sobre cómo conseguir el archivo de certificado Truststore, consulte Configure an SSL-encrypted connection.

    1. Ir a la lista de instancias RDS, haga clic en la instancia RDS de la región correspondiente y luego haga clic en el ID de la instancia destino para ir a la página de detalles de la instancia.

    2. Seleccione la cadena de conexión que desea proteger.

      1. En el panel de navegación izquierdo, haga clic en Data Security.

      2. Haga clic en la pestaña SSL.

      3. Haga clic en Use Cloud Certificate.

      4. En la fila Configure Database Certificate (Prevent Database Spoofing), haga clic en Modify.

      5. En el cuadro de diálogo Select Connection String to Protect, seleccione la cadena de conexión destino (por ejemplo, la dirección de red interna).

      6. Haga clic en OK.

    Nota
    • Si el endpoint público está habilitado, se muestran tanto los endpoints internos como los públicos. Un certificado en la nube solo puede proteger un endpoint. Dado que el endpoint interno es relativamente más seguro, le recomendamos proteger el endpoint público. Para obtener más información sobre cómo ver los endpoints internos y públicos, consulte View internal and public endpoints.

    • Si necesita proteger tanto los endpoints internos como los públicos, consulte Configure a custom certificate.

    • Después de configurar el certificado en la nube, el Running Status de la instancia cambia a Modifying SSL. Este estado dura aproximadamente tres minutos. Espere hasta que el estado de ejecución cambie a Running antes de continuar.

    c. Haga clic en Download CA Certificate para obtener el archivo de certificado Truststore.

    El paquete de certificado CA descargado contiene tres archivos. Al configurar el origen de datos PostgreSQL en DataWorks, cargue el archivo con extensión .pem o el archivo con extensión .p7b en el elemento de configuración Archivo de certificado Truststore.

  2. Obtenga y configure el archivo de certificado Keystore, el archivo de clave privada y la contraseña de clave privada.

    Requisitos previos: Ha completado configuring an SSL-encrypted connection o configuring a custom certificate, y cuenta con la herramienta OpenSSL.

    Nota

    Si utiliza un sistema Linux, OpenSSL viene preinstalado. Si utiliza un sistema Windows, descargue e instale el paquete de software OpenSSL.

    Para obtener más información sobre cómo conseguir y configurar el archivo de certificado Keystore, el archivo de clave privada y la contraseña de clave privada, consulte Configure a client certificate.

    1. Utilice la herramienta OpenSSL en un sistema Linux o instale el software OpenSSL en un sistema Windows para generar un certificado autofirmado (ca1.crt) y su clave privada (ca1.key).

      openssl req -new -x509 -days 3650 -nodes -out ca1.crt -keyout ca1.key -subj "/CN=root-ca1"
    2. Genere un archivo de solicitud de firma de certificado de cliente (client.csr) y una clave privada de certificado de cliente (client.key).

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

      En este comando, el valor CN después del parámetro -subj debe establecerse con el nombre de usuario que utiliza el cliente para acceder a la base de datos.

    3. Genere el 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. Si su servidor RDS PostgreSQL requiere verificación del certificado CA del cliente, abra el archivo de certificado autofirmado del cliente generado ca1.crt, copie el contenido del certificado y péguelo en el cuadro de diálogo Client CA Certificate Public Key Content como certificado CA del cliente.

      En el panel Configure Client CA Certificate, haga clic en Enable Client CA Certificate. En el cuadro de diálogo que aparece, pegue el contenido de la clave pública del certificado CA generado (ca1.crt) en el cuadro de texto Public Key y luego haga clic en OK. Después de modificar el certificado CA del cliente, la instancia se reinicia automáticamente.

    5. Después de configurar el certificado CA del cliente en el lado de RDS, al configurar el origen de datos PostgreSQL en DataWorks, convierta la clave privada del certificado de cliente client.key a un archivo client.pk8 y cargue el archivo client.pk8 en el elemento de configuración Archivo de clave privada dentro de la configuración del origen de datos PostgreSQL en DataWorks.

      cp client.key client.pk8
    6. Configure la contraseña de la clave privada.

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

      Al ejecutar el comando para configurar la contraseña de la clave privada, debe introducir una contraseña. Si establece una contraseña, utilice la misma para la contraseña de clave privada en la configuración del origen de datos PostgreSQL en DataWorks.

Configurar archivos de autenticación SSL de PostgreSQL

Al cargar los archivos de certificado obtenidos en los elementos de configuración de PostgreSQL en DataWorks, realice las siguientes operaciones:

Configuración de ACL: Vaya a la lista de instancias RDS, haga clic en la instancia RDS de la región correspondiente, haga clic en el ID de la instancia destino para ir a la página de detalles de la instancia y luego haga clic en Data Security > ACL Configuration para modificar la configuración. Puede seleccionar diferentes métodos de autenticación SSL. Para obtener más información, consulte Configure ACL.

Los métodos de autenticación SSL disponibles son:

  • prefer: Cifra el enlace de datos.

  • verify-ca: Cifra el enlace de datos y verifica la autenticidad del certificado del cliente.

  • verify-full: Cifra el enlace de datos, verifica la autenticidad del certificado del cliente y comprueba que el CN del certificado coincida con el nombre de usuario de la base de datos.

  • cert: Utiliza un certificado en lugar de una contraseña para iniciar sesión, cifra el enlace de datos, verifica la autenticidad del certificado del cliente y comprueba que el CN del certificado coincida con el nombre de usuario de la base de datos.

Nota
  • Si el método de autenticación ACL se establece en prefer, el servidor PostgreSQL no exige la verificación del certificado del cliente.

  • Si el método de autenticación ACL se establece en verify-ca en RDS PostgreSQL, debe cargar el certificado de cliente correcto al configurar el origen de datos PostgreSQL en DataWorks, para que el servidor pueda verificar la autenticación del cliente.