Para mejorar la seguridad de las transferencias de datos entre su aplicación cliente y Hologres, habilite el cifrado Secure Sockets Layer (SSL) en tránsito. SSL utiliza certificados digitales y protocolos criptográficos como Transport Layer Security (TLS) para establecer una conexión cifrada entre una instancia de Hologres y un cliente. Este proceso protege la confidencialidad e integridad de sus datos en tránsito.
Escenarios
El cifrado SSL en tránsito es adecuado para los siguientes escenarios:
Acceso remoto a bases de datos: cuando un cliente necesita acceder a una base de datos desde una ubicación remota, el cifrado SSL en tránsito protege los datos durante la transferencia.
Cumplimiento de normativas: muchos estándares y regulaciones de la industria exigen que los datos se cifren en tránsito. El cifrado SSL ayuda a su organización a cumplir estos requisitos de seguridad y normativos.
SSL cifra las conexiones de red en la capa de transporte, lo que mejora la seguridad y la integridad de los datos, pero también añade latencia a la red.
Requisitos previos
Se creó una instancia de Hologres. Para obtener más información, consulte Purchase a Hologres instance.
Se descargó e instaló un cliente PSQL o JDBC. Para obtener más información, consulte PSQL client o JDBC.
Notas de uso
-
Hologres V1.1 y versiones posteriores admiten el cifrado en tránsito. Hologres V1.2 y versiones posteriores son compatibles con TLS. Hologres V2.1 y versiones posteriores admiten el cifrado en tránsito mediante un certificado CA; esta función se habilita desde la consola de Hologres.
NotaSi su instancia tiene una versión anterior a la V1.1, consulte Troubleshooting: Upgrade preparation errors o únase al grupo de DingTalk de Hologres para obtener asistencia. Para obtener más información, consulte How do I get more online support?.
-
Habilitar o deshabilitar el cifrado SSL en tránsito reinicia la instancia, por lo que debe proceder con precaución. Esta función está deshabilitada de forma predeterminada.
Después de habilitar el cifrado SSL en una instancia de Hologres, los clientes pueden conectarse a ella mediante SSL. Debe configurar explícitamente el cliente para usar una conexión cifrada o no cifrada.
Si deshabilita el cifrado SSL en una instancia de Hologres, solo se permiten conexiones sin SSL.
-
Hologres admite los siguientes modos SSL para el cifrado en tránsito:
Modo SSL
Versión mínima compatible
Require: cifra únicamente el enlace de datos.
V1.1
Verify-CA: cifra el enlace de datos y usa un certificado CA para verificar la autenticidad del servidor de Hologres.
V2.1
Verify-Full: cifra el enlace de datos, usa un certificado CA para verificar la autenticidad del servidor de Hologres y comprueba que el CN o DNS del certificado coincida con la dirección de conexión de Hologres configurada.
V2.1
El certificado SSL tiene una vigencia de un año. Debe renovarlo manualmente antes de que caduque. De lo contrario, ya no podrá usar el cifrado SSL para conectarse a la instancia.
Habilitar el cifrado SSL en tránsito aumenta el consumo de CPU y la latencia de lectura y escritura.
Tras habilitar el cifrado SSL en tránsito, debe desconectar y volver a conectar las conexiones existentes para que el cifrado surta efecto.
Habilitar o deshabilitar el cifrado SSL en tránsito, así como renovar el certificado SSL, reinicia su instancia de Hologres. Este proceso tarda aproximadamente 3 minutos. Ejecute estas operaciones fuera del horario de mayor actividad.
Paso 1: Habilitar el cifrado en tránsito
Inicie sesión en la consola de Hologres y seleccione una región en la esquina superior izquierda.
En el panel de navegación izquierdo, haga clic en Instances y luego haga clic en el ID de la instancia de destino.
En la página de detalles de la instancia, haga clic en Data Security.
En la pestaña SSL, active el interruptor SSL Encryption.
En el cuadro de diálogo Enable SSL Encryption, haga clic en Enable SSL Encryption.
Paso 2: Descargar el certificado CA
Hologres proporciona un certificado CA para su instancia. Use este certificado CA en su cliente remoto para verificar la autenticidad de la instancia.
Inicie sesión en la consola de Hologres y seleccione una región en la esquina superior izquierda.
En el panel de navegación izquierdo, haga clic en Instances y luego haga clic en el ID de la instancia de destino.
En la página de detalles de la instancia, haga clic en Data Security.
En la pestaña SSL, haga clic en Download Certificate.
Paso 3: Conectarse a Hologres
Puede conectarse a Hologres mediante un cliente PSQL o JDBC. Durante el proceso de conexión, configure los parámetros para controlar si se habilita el cifrado SSL en tránsito.
Cliente PSQL
-
Comando de conexión
PG_USER=<AccessKey ID> PG_PASSWORD=<AccessKey Secret> PG_SSLMODE=<SSL Mode> PG_SSLROOTCERT=<certificate folder> PGSSLMODE=$PG_SSLMODE PGSSLROOTCERT=$PG_SSLROOTCERT PGUSER=$PG_USER PGPASSWORD=$PG_PASSWORD psql -p <Port> -h <Endpoint> -d <Database> -
Parámetros
Parámetro
Descripción
AccessKey ID
El AccessKey ID de su cuenta de Alibaba Cloud. Obténgalo en AccessKey.
Se recomienda usar variables de entorno para las credenciales y reducir el riesgo de exposición.
AccessKey Secret
El AccessKey Secret de su cuenta de Alibaba Cloud.
Obténgalo en AccessKey.
Se recomienda usar variables de entorno para las credenciales y reducir el riesgo de exposición.
SSL Mode
Especifica el modo SSL para la conexión PSQL. Valores válidos:
require: usa el cifrado en tránsito y cifra únicamente el enlace de datos.
verify-ca: cifra el enlace de datos y verifica la autenticidad de la instancia de Hologres.
verify-full: cifra el enlace de datos, verifica la autenticidad de la instancia de Hologres y comprueba que el CN o DNS del certificado coincida con la dirección de conexión de la base de datos configurada.
disable: no usa el cifrado en tránsito.
certificate folder
La ruta de almacenamiento del certificado CA.
Este parámetro es obligatorio si el parámetro
SSL Modese establece en verify-ca o verify-full.port
El puerto público de la instancia de Hologres.
Ejemplo:
80.endpoint
El endpoint público de la instancia de Hologres.
Ejemplo:
xxx-cn-hangzhou.hologres.aliyuncs.com.database
El nombre de la base de datos de Hologres.
Después de crear una instancia de Hologres, se crea automáticamente una base de datos predeterminada llamada postgres.
Puede usar la base de datos postgres para conectarse a Hologres, pero esta base de datos tiene recursos limitados. Para entornos de producción, se recomienda crear una nueva base de datos. Para obtener más información, consulte Create a database.
Ejemplo:
mydb. -
Compruebe la conexión.
Si establece PGSSLMODE en
require, a continuación se muestra la salida que indica que la conexión a Hologres usa cifrado SSL.PGUSER=$PG_USER PGPASSWORD=$PG_PASSWORD PGSSLMODE=require psql -h $HOST_NAME -p $PORT -d $DB -E psql (14.2, server 11.3) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help.
JDBC
Cuando use JDBC para conectarse a Hologres, utilice los parámetros de conexión ssl y sslmode para controlar si se usa el cifrado SSL. En la siguiente tabla se describe el comportamiento resultante de la conexión.
SSL habilitado en la instancia | ssl | sslmode | Resultado |
Sí | true |
| La conexión es exitosa y los datos se cifran en tránsito. |
Sí | false |
| La conexión es exitosa, pero los datos no se cifran en tránsito. |
No | true |
| Se reporta un error. Ejemplo: |
No | false |
| La conexión es exitosa, pero los datos no se cifran en tránsito. |
A continuación se muestra un ejemplo de código.
// Set the endpoint of the Hologres instance.
String hostname = "hgxxxxxxx-cn-hangzhou-vpc.hologres.aliyuncs.com:80";
// Set the port of the Hologres instance.
String port = "80";
// Set the name of the database to connect to.
String dbname = "postgres";
String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbname+"?binaryTransfer=true";
Properties properties = new Properties();
// Set the database username. Using an environment variable is recommended.
properties.setProperty("user", "accessid");
// Set the database password. Using an environment variable is recommended.
properties.setProperty("password", "accesskey");
// Configure the connection to use SSL.
properties.setProperty("ssl", "true");
// Specify the file path of the root certificate.
properties.setProperty("sslrootcert", path + "/" + "hologres_certificate.crt");
// Set the SSL mode. Valid values are require, verify-ca, and verify-full.
properties.setProperty("sslmode", "verify-full");
try {
Class.forName("org.postgresql.Driver");
Connection connection = DriverManager.getConnection(jdbcUrl, properties);
// The following code queries the 'example' table, which is assumed to exist.
PreparedStatement preparedStatement = connection.prepareStatement("select * from " +
"example");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnCount = rsmd.getColumnCount();
Map map = new HashMap();
for (int i = 0; i < columnCount; i++) {
map.put(rsmd.getColumnName(i + 1).toLowerCase(), resultSet.getObject(i + 1));
}
System.out.println(map);
}
} catch (Exception exception) {
exception.printStackTrace();
}