Pour renforcer la sécurité des transferts de données entre votre application cliente et Hologres, activez le chiffrement Secure Sockets Layer (SSL) en transit. Le protocole SSL utilise des certificats numériques et des protocoles cryptographiques tels que Transport Layer Security (TLS) pour établir une connexion chiffrée entre une instance Hologres et un client. Ce processus protège la confidentialité et l'intégrité de vos données en transit.
Scénarios
Le chiffrement SSL en transit convient aux scénarios suivants :
Accès distant à la base de données : lorsqu'un client doit accéder à une base de données depuis un emplacement distant, le chiffrement SSL en transit sécurise les données échangées.
Respect des exigences de conformité : de nombreuses normes sectorielles et réglementations exigent le chiffrement des données en transit. Le chiffrement SSL aide votre organisation à satisfaire à ces exigences de sécurité et de conformité.
Le protocole SSL chiffre les connexions réseau au niveau de la couche transport. Cette mesure améliore la sécurité et l'intégrité des données, mais augmente également la latence réseau.
Prérequis
Vous avez créé une instance Hologres. Pour plus d'informations, consultez la rubrique Achat d'une instance Hologres.
Vous avez téléchargé et installé un client PSQL ou JDBC. Pour plus d'informations, consultez les rubriques Client PSQL ou JDBC.
Notes d'utilisation
-
Hologres V1.1 et versions ultérieures prennent en charge le chiffrement en transit. Hologres V1.2 et versions ultérieures prennent en charge TLS. Hologres V2.1 et versions ultérieures prennent en charge le chiffrement en transit via un certificat d'autorité de certification (CA) ; vous pouvez activer cette fonctionnalité depuis la console Hologres.
RemarqueSi votre instance est antérieure à la version V1.1, consultez la rubrique Dépannage : Erreurs de préparation de la mise à niveau ou rejoignez le groupe DingTalk Hologres pour obtenir de l'aide. Pour plus d'informations, consultez la rubrique Comment obtenir davantage d'assistance en ligne ?.
-
L'activation ou la désactivation du chiffrement SSL en transit redémarre l'instance ; procédez avec prudence. Cette fonctionnalité est désactivée par défaut.
Une fois le chiffrement SSL activé pour une instance Hologres, les clients peuvent se connecter à l'instance via SSL. Vous devez configurer explicitement le client pour utiliser une connexion chiffrée ou non chiffrée.
Si vous désactivez le chiffrement SSL pour une instance Hologres, seules les connexions non SSL sont autorisées.
-
Hologres prend en charge les modes SSL suivants pour le chiffrement en transit :
Mode SSL
Version minimale prise en charge
Require : chiffre uniquement le lien de données.
V1.1
Verify-CA : chiffre le lien de données et utilise un certificat CA pour vérifier l'authenticité du serveur Hologres.
V2.1
Verify-Full : chiffre le lien de données, utilise un certificat CA pour vérifier l'authenticité du serveur Hologres et vérifie que le CN ou le DNS du certificat correspond à l'adresse de connexion Hologres configurée pour la connexion.
V2.1
Le certificat SSL est valide pendant un an. Renouvelez-le manuellement avant son expiration. À défaut, vous ne pourrez plus utiliser le chiffrement SSL pour vous connecter à l'instance.
L'activation du chiffrement SSL en transit augmente la consommation du processeur et la latence en lecture/écriture.
Après avoir activé le chiffrement SSL en transit, déconnectez puis reconnectez les connexions existantes pour que le chiffrement prenne effet.
L'activation ou la désactivation du chiffrement SSL en transit, ainsi que le renouvellement du certificat SSL, redémarrent votre instance Hologres. L'opération dure environ 3 minutes. Effectuez ces opérations pendant les heures creuses.
Étape 1 : Activer le chiffrement en transit
Connectez-vous à la console Hologres et sélectionnez une région dans le coin supérieur gauche.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'ID de l'instance cible.
Sur la page des détails de l'instance, cliquez sur Data Security.
Sous l'onglet SSL, activez l'option SSL Encryption.
Dans la boîte de dialogue Enable SSL Encryption, cliquez sur Enable SSL Encryption.
Étape 2 : Télécharger le certificat CA
Hologres fournit un certificat CA pour votre instance. Utilisez ce certificat CA sur votre client distant pour vérifier l'authenticité de l'instance.
Connectez-vous à la console Hologres et sélectionnez une région dans le coin supérieur gauche.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'ID de l'instance cible.
Sur la page des détails de l'instance, cliquez sur Data Security.
Sous l'onglet SSL, cliquez sur Download Certificate.
Étape 3 : Se connecter à Hologres
Connectez-vous à Hologres à l'aide d'un client PSQL ou de JDBC. Lors de la connexion, configurez les paramètres pour activer ou non le chiffrement SSL en transit.
Client PSQL
-
Commande de connexion
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> -
Paramètres
Paramètre
Description
AccessKey ID
L'AccessKey ID de votre compte Alibaba Cloud.
Accédez à la page AccessKey Management pour obtenir un AccessKey ID.
Nous vous recommandons d'utiliser des variables d'environnement pour les identifiants afin de réduire le risque d'exposition.
AccessKey Secret
L'AccessKey Secret de votre compte Alibaba Cloud.
Accédez à la page AccessKey Management pour obtenir un AccessKey Secret.
Nous vous recommandons d'utiliser des variables d'environnement pour les identifiants afin de réduire le risque d'exposition.
SSL Mode
Spécifie le mode SSL pour la connexion PSQL. Valeurs possibles :
-
require : utilise le chiffrement en transit et chiffre uniquement le lien de données.
-
verify-ca : chiffre le lien de données et vérifie l'authenticité de l'instance Hologres.
-
verify-full : chiffre le lien de données, vérifie l'authenticité de l'instance Hologres et vérifie que le CN ou le DNS du certificat correspond à l'adresse de connexion à la base de données configurée pour la connexion.
-
disable : n'utilise pas le chiffrement en transit.
certificate folder
Le chemin de stockage du certificat CA.
Ce paramètre est requis si le paramètre
SSL Modeest défini sur verify-ca ou verify-full.port
Le port public de l'instance Hologres.
Exemple :
80.endpoint
L'endpoint public de l'instance Hologres.
Exemple :
xxx-cn-hangzhou.hologres.aliyuncs.com.database
Le nom de la base de données Hologres.
Après la création d'une instance Hologres, une base de données par défaut nommée postgres est automatiquement créée.
Vous pouvez utiliser la base de données postgres pour vous connecter à Hologres, mais ses ressources sont limitées. Pour un usage en production, nous vous recommandons de créer une nouvelle base de données. Pour plus d'informations, consultez la rubrique Création d'une base de données.
Exemple :
mydb. -
-
Vérifiez la connexion.
Si vous définissez PGSSLMODE sur
require, la sortie suivante indique que la connexion à Hologres utilise le chiffrement 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
Lorsque vous utilisez JDBC pour vous connecter à Hologres, servez-vous des paramètres de connexion ssl et sslmode pour contrôler l'utilisation du chiffrement SSL. Le tableau suivant décrit le comportement de connexion résultant.
|
SSL activé sur l'instance |
ssl |
sslmode |
Résultat |
|
Oui |
true |
|
La connexion est établie avec succès et les données sont chiffrées en transit. |
|
Oui |
false |
|
La connexion est établie avec succès, mais les données ne sont pas chiffrées en transit. |
|
Non |
true |
|
Une erreur est signalée. Exemple :
|
|
Non |
false |
|
La connexion est établie avec succès, mais les données ne sont pas chiffrées en transit. |
Le code suivant fournit un exemple.
// 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();
}