Establecimiento de conexiones TCP/IP seguras en modo SSL
GaussDB(DWS) es compatible con SSL estándar. Como protocolo altamente seguro, SSL autentica la identificación bidireccional entre el servidor y el cliente mediante firmas digitales y certificados digitales para garantizar la transmisión de datos segura. Para soportar la conexión SSL, GaussDB(DWS) ha obtenido los certificados y claves formales para el servidor y el cliente del centro de certificación de CA. Se supone que la clave y el certificado para el servidor son server.key y server.crt respectivamente; la clave y el certificado para el cliente son client.key y client.crt respectivamente, y el nombre del certificado de root de CA es cacert.pem.
El modo de conexión SSL es más seguro. De forma predeterminada, la función SSL en un clúster permite conexiones SSL y no SSL desde el cliente. Por motivos de seguridad, se recomienda conectarse al clúster a través de SSL desde el cliente. Asegúrese de que el certificado, la clave privada y el certificado raíz del servidor GaussDB(DWS) se hayan configurado de forma predeterminada. Para usar por la fuerza una conexión SSL, configure el parámetro require_ssl en el área Require SSL Connection de la página Security Settings del clúster en la consola de gestión de GaussDB(DWS). Requerir conexión SSL en la página Configuración de seguridad del clúster. Para obtener más información, consulte Configuración de la conexión SSL y Combinaciones de parámetros de conexión de SSL en el cliente y el servidor.
El uso del certificado predeterminado puede suponer riesgos para la seguridad. Para mejorar la seguridad del sistema, se recomienda cambiar periódicamente el certificado para evitar que se descifra la contraseña. Si necesita reemplazar el certificado, póngase en contacto con el database customer service.
Configuración de la conexión SSL
Prerrequisitos
- Después de modificar los parámetros de seguridad y de que las modificaciones surtan efecto, el clúster puede reiniciarse, lo que hace que el clúster no esté disponible temporalmente.
- Para modificar la configuración de seguridad del clúster, asegúrese de que se cumplen las siguientes condiciones:
- El estado del clúster es Available o Unbalanced.
- El Task Information no se puede establecer en Creating snapshot, Scaling out, Configuring ni en Restarting.
Procedimiento
- Inicie sesión en la consola de gestión de GaussDB(DWS).
- En el árbol de navegación de la izquierda, haga clic en Clusters.
- En la lista de clústeres, haga clic en el nombre de un clúster. En la página que se muestra, haga clic en Security Settings.
De forma predeterminada, Configuration Status está Synchronized, lo que indica que se muestra el resultado de la base de datos más reciente.
- En el área de SSL Connection, habilite Require SSL Connection (recomendado).
indica que la función está activada. El require_ssl está configurado en 1 para indicar que el servidor requiere por la fuerza la conexión SSL.
indica que la función está deshabilitada (valor predeterminado). El parámetro require_ssl se establece en 0 e indica que el servidor no requiere conexiones SSL. Para obtener más información acerca de cómo configurar el parámetro require_ssl, consulte require_ssl (Server).
Figura 1 Conexión de SSL
- Si se utiliza el cliente de gsql o el controlador de ODBC proporcionado por GaussDB(DWS), GaussDB(DWS) admite el protocolo de SSL TLSv1.2.
- Si se utiliza el controlador de JDBC proporcionado por GaussDB(DWS), GaussDB(DWS) admite protocolos de SSL, como SSLv3, TLSv1, TLSv1.1 y TLSv1.2. El protocolo de SSL utilizado entre el cliente y la base de datos depende de la versión de Java Development Kit (JDK) utilizada por el cliente. Generalmente, JDK admite múltiples protocolos de SSL.
- Haga clic en Apply.
El sistema guarda automáticamente la configuración de conexión de SSL. En la página de Security Settings, Configuration Status es Applying. Después de que Configuration Status cambie a Synchronized, los ajustes se guardaron y surtieron efecto.
Configuración de los parámetros del certificado digital relacionados con la autenticación SSL en el cliente gsql
Después de desplegar un clúster de almacén de datos, el modo de autenticación SSL está habilitado de forma predeterminada. El certificado de servidor, la clave privada y el certificado root se han configurado de forma predeterminada. Es necesario configurar los parámetros del cliente.
- Inicie sesión en la consola de gestión de GaussDB(DWS). En el panel de navegación, elija Client Connections.
- En el área de Driver haga clic en download an SSL certificate.
Figura 2 Descargar un certificado de SSL
- Utilice una herramienta de transferencia de archivos (como WinSCP) para cargar el certificado de SSL en el host donde está instalado el cliente.
Por ejemplo, guarde el certificado descargado dws_ssl_cert.zip en el directorio de /home/dbadmin/dws_ssl/.
- Utilice una herramienta de conexión remota SSH (como PuTTY) para iniciar sesión en el host donde está instalado el cliente gsql y ejecute los siguientes comandos para ir al directorio donde está almacenado el certificado SSL y descomprimir el certificado SSL:
cd /home/dbadmin/dws_ssl/ unzip dws_ssl_cert.zip
- Run the export command and configure digital certificate parameters related to SSL authentication on the host where the gsql client is installed.
There are two SSL authentication modes: bidirectional authentication and unidirectional authentication. Different authentication modes require different client environment variables. For details, see Modos de autenticación SSL y parámetros de cliente.
The following parameters must be configured for bidirectional authentication:
export PGSSLCERT="/home/dbadmin/dws_ssl/sslcert/client.crt" export PGSSLKEY="/home/dbadmin/dws_ssl/sslcert/client.key" export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/dbadmin/dws_ssl/sslcert/cacert.pem"
Se deben configurar los siguientes parámetros para la autenticación unidireccional:
export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/dbadmin/dws_ssl/sslcert/cacert.pem"
- Se recomienda utilizar la autenticación bidireccional por motivos de seguridad.
- Las variables de entorno configuradas para un cliente deben contener las rutas absolutas de archivo.
- Cambie los permisos de clave privada del cliente.
Los permisos en el certificado raíz del cliente, la clave privada, el certificado y el archivo de clave privada cifrada deben ser 600. Si los permisos no cumplen con el requisito, el cliente no puede conectarse al clúster en modo SSL.
chmod 600 client.key chmod 600 client.crt chmod 600 client.key.cipher chmod 600 client.key.rand chmod 600 cacert.pem
Modos de autenticación SSL y parámetros de cliente
Hay dos modos de autenticación SSL: autenticación bidireccional y autenticación unidireccional. La tabla Tabla 1 muestra las diferencias entre estos dos modos. Se recomienda utilizar la autenticación bidireccional por motivos de seguridad.
Modos de autenticación |
Descripción |
Variables de entorno configuradas en un cliente |
Mantenimiento |
---|---|---|---|
Autenticación bidireccional (recomendado) |
El cliente verifica el certificado del servidor y el servidor verifica el certificado del cliente. La conexión se puede configurar solo después de que las verificaciones se hayan realizado correctamente. |
Establezca las siguientes variables de entorno:
|
Este modo de autenticación es aplicable a escenarios que requieren una alta seguridad de datos. Al utilizar este modo, se recomienda establecer la variable de cliente PGSSLMODE en verificar-ca para fines de seguridad de datos de red. |
Autenticación unidireccional |
El cliente verifica el certificado del servidor, mientras que el servidor no verifica el certificado del cliente. El servidor carga la información del certificado y la envía al cliente. El cliente verifica el certificado del servidor de acuerdo con el certificado raíz. |
Establezca las siguientes variables de entorno:
|
Para evitar la suplantación de enlaces basada en TCP, se recomienda utilizar la autenticación de certificado SSL. Además de configurar el certificado root del cliente, se recomienda establecer la variable PGSSLMODE para verificar-ca en el cliente. |
Configurar variables de entorno relacionadas con la autenticación SSL en el cliente. Para obtener más información, véase Tabla 2.
La ruta de las variables de entorno se establece en /home/dbadmin/dws_ssl/ como ejemplo. Reemplácelo con la ruta real.
Variable de entorno |
Descripción |
Rango de valor |
---|---|---|
PGSSLCERT |
Especifica los archivos de certificado de un cliente, incluida la clave pública. Los certificados demuestran la identidad legal del cliente y la clave pública se envía al extremo remoto para el cifrado de datos. |
Se debe especificar la ruta absoluta de los archivos, por ejemplo:
export PGSSLCERT='/home/dbadmin/dws_ssl/sslcert/client.crt' (Sin valor predeterminado) |
PGSSLKEY |
Especifica el archivo de clave privada del cliente utilizado para descifrar las firmas digitales y los datos cifrados mediante la clave pública. |
Se debe especificar la ruta absoluta de los archivos, por ejemplo:
export PGSSLKEY='/home/dbadmin/dws_ssl/sslcert/client.key' (Sin valor predeterminado) |
PGSSLMODE |
Especifica si se debe negociar con el servidor acerca de la conexión SSL y especifica la prioridad de la conexión SSL. |
Valores y significados:
Valor predeterminado: prefer
NOTA:
Cuando un cliente externo accede a un clúster, se muestra el mensaje de error "ssl SYSCALL error" en algunos nodos. En este caso, ejecute export PGSSLMODE="allow" o export PGSSLMODE="prefer". |
PGSSLROOTCERT |
Especifica el archivo de certificado raíz para emitir certificados de cliente. El certificado raíz se utiliza para verificar el certificado del servidor. |
Se debe especificar la ruta absoluta de los archivos, por ejemplo:
export PGSSLROOTCERT='/home/dbadmin/dws_ssl/sslcert/certca.pem' Valor predeterminado: null |
PGSSLCRL |
Especifica el archivo de lista de revocación de certificados, que se utiliza para comprobar si hay un certificado de servidor en la lista. Si el certificado está en la lista, no es válido. |
Se debe especificar la ruta absoluta de los archivos, por ejemplo:
export PGSSLCRL='/home/dbadmin/dws_ssl/sslcert/sslcrl-file.crl' Valor predeterminado: null |
Combinaciones de parámetros de conexión de SSL en el cliente y el servidor
Si el cliente utiliza el modo de conexión de cifrado de SSL y si se debe verificar el certificado de servidor dependen del parámetro de cliente de sslmode y los parámetros del servidor (cluster) ssl y require_ssl. A continuación se enumeran los parámetros:
- ssl (Server)
El parámetro de ssl indica si se debe habilitar la función de SSL. on indica que la función está habilitada, y off indica que la función está deshabilitada.
- El valor predeterminado es on y no puede establecer este parámetro en la consola de gestión de GaussDB(DWS).
- require_ssl (Server)
El parámetro require_ssl especifica si el servidor requiere por la fuerza una conexión de SSL. Este parámetro es válido solo cuando ssl está establecido en on. on indica que el servidor requiere por la fuerza una conexión de SSL. off indica que el servidor no requiere conexión de SSL.
- El valor predeterminado es off. Puede establecer el parámetro require_ssl en el área de Require SSL Connection de la página de Security Settings del clúster en la consola de gestión de GaussDB(DWS).
- sslmode (Client)
Puede establecer este parámetro en la herramienta de cliente de SQL.
- En el cliente de línea de comandos gsql, este parámetro es el parámetro PGSSLMODE.
- En el cliente de Data Studio, este parámetro es el parámetro SSL Mode.
Las combinaciones del parámetro de cliente sslmode y los parámetros de servidor ssl y require_ssl son las siguientes.
ssl (Server) |
sslmode (Client) |
require_ssl (Server) |
Resultado |
---|---|---|---|
on |
disable |
on |
El servidor requiere SSL, pero el cliente deshabilita SSL para la conexión. Como resultado, no se puede configurar la conexión. |
disable |
off |
La conexión no está cifrada. |
|
allow |
on |
La conexión está cifrada. |
|
allow |
off |
La conexión no está cifrada. |
|
prefer |
on |
La conexión está cifrada. |
|
prefer |
off |
La conexión está cifrada. |
|
require |
on |
La conexión está cifrada. |
|
require |
off |
La conexión está cifrada. |
|
verify-ca |
on |
La conexión está cifrada y se verifica el certificado del servidor. |
|
verify-ca |
off |
La conexión está cifrada y se verifica el certificado del servidor. |
|
off |
disable |
on |
La conexión no está cifrada. |
disable |
off |
La conexión no está cifrada. |
|
allow |
on |
La conexión no está cifrada. |
|
allow |
off |
La conexión no está cifrada. |
|
prefer |
on |
La conexión no está cifrada. |
|
prefer |
off |
La conexión no está cifrada. |
|
require |
on |
El cliente requiere SSL, pero SSL está deshabilitado en el servidor. Por lo tanto, no se puede establecer la conexión. |
|
require |
off |
El cliente requiere SSL, pero SSL está deshabilitado en el servidor. Por lo tanto, no se puede establecer la conexión. |
|
verify-ca |
on |
El cliente requiere SSL, pero SSL está deshabilitado en el servidor. Por lo tanto, no se puede establecer la conexión. |
|
verify-ca |
off |
El cliente requiere SSL, pero SSL está deshabilitado en el servidor. Por lo tanto, no se puede establecer la conexión. |