Utilisation de SSL/TLS avec une instance de base de données Amazon RDS for Db2 - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de SSL/TLS avec une instance de base de données Amazon RDS for Db2

SSL est un protocole de norme industrielle utilisé pour sécuriser les connexions réseau entre client et serveur. Après la version 3.0 de SSL, le nom du protocole est devenu TLS, mais nous y faisons souvent référence en tant que SSL. Amazon RDS prend en charge le chiffrement SSL pour les instances de base de données Amazon RDS for Db2. En utilisant SSL/TLS, vous pouvez chiffrer une connexion entre votre client d’application et votre instance de base de données RDS for Db2. Les protocoles SSL/TLS sont pris en charge dans toutes les Régions AWS pour RDS for Db2.

Pour activer le chiffrement SSL/TLS pour une instance de base de données RDS for Db2, ajoutez l’option Db2 SSL au groupe de paramètres associé avec l’instance de base de données. Amazon RDS utilise un deuxième port, comme l’exige Db2, pour les connexions SSL/TLS. Cette approche permet aussi bien aux communications en texte clair que celles à chiffrement SSL de se produire simultanément entre une instance de base de données et un client Db2. Par exemple, vous pouvez utiliser le port avec une communication en texte clair pour communiquer avec d’autres ressources à l’intérieur d’un VPC, tout en utilisant le port avec une communication à chiffrement SSL pour communiquer avec des ressources extérieures au VPC.

Création d’une connexion SSL/TLS

Pour créer une connexion SSL/TLS, choisissez une autorité de certification (CA), téléchargez un ensemble de certificats pour toutes les Régions AWS et ajoutez des paramètres à un groupe de paramètres personnalisés.

Étape 1 : choix d’une autorité de certification et téléchargement d’un certificat

Choisissez une autorité de certification (CA) et téléchargez un ensemble de certificats pour toutes les Régions AWS. Pour plus d’informations, consultez .

Étape 2 : mise à jour des paramètres dans un groupe de paramètres personnalisés

Important

Si vous utilisez le modèle Apportez votre propre licence (BYOL) pour RDS for Db2, modifiez le groupe de paramètres personnalisés que vous avez créé pour votre IBM Customer ID et votre IBM Site ID. Si vous utilisez un modèle de licence différent pour RDS for Db2, suivez la procédure pour ajouter des paramètres à un groupe de paramètres personnalisés. Pour plus d’informations, consultez Options de licence Amazon RDS for Db2.

Vous ne pouvez pas modifier les groupes de paramètres par défaut pour les instances de base de données RDS for Db2. Par conséquent, vous devez créer un groupe de paramètres personnalisés, le modifier, puis l’attacher à vos instances de base de données RDS for Db2. Pour plus d’informations sur les groupes de paramètres, consultez Groupes de paramètres de base de données pour les instances de base de données Amazon RDS.

Utilisez les valeurs de paramètres du tableau ci-dessous.

Paramètre Valeur
DB2COMM TCPIP,SSL ou SSL
SSL_SVCENAME <any port number except the number used for the non-SSL port>
Mise à jour des paramètres dans un groupe de paramètres personnalisés
  1. Créez un groupe de paramètres personnalisés en exécutant la commande create-db-parameter-group.

    Inclure les options requises suivantes :

    • --db-parameter-group-name : nom du groupe de paramètres que vous créez.

    • --db-parameter-group-family : édition et version majeure du moteur Db2. Valeurs valides : db2-se-11-5, db2-ae-11.5.

    • --description : description de ce groupe de paramètres.

    Pour plus d’informations sur la création d’un groupe de paramètres de base de données, consultez Création d’un groupe de paramètres de base de données dans Amazon RDS.

  2. Modifiez les paramètres du groupe de paramètres personnalisés que vous avez créé en exécutant la commande modify-db-parameter-group.

    Inclure les options requises suivantes :

    • --db-parameter-group-name : nom du groupe de paramètres que vous avez créé.

    • --parameters : tableau des noms de paramètres, des valeurs et méthode d’application pour la mise à jour des paramètres.

    Pour plus d’informations sur la modification d’un groupe de paramètres, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

  3. Associez le groupe de paramètres à votre instance de base de données RDS for Db2. Pour plus d’informations, consultez Association d’un groupe de paramètres de base de données à une instance de base de données dans Amazon RDS.

Connexion à votre serveur de base de données Db2

Les instructions de connexion à votre serveur de base de données Db2 sont spécifiques à la langue.

Java
Connexion à votre serveur de base de données Db2 à l’aide de Java
  1. Téléchargez le pilote JDBC. Pour plus d’informations, consultez Versions et téléchargements du pilote JDBC DB2 dans la documentation de support IBM.

  2. Créez un fichier script shell avec le contenu suivant. Ce script ajoute tous les certificats du bundle à un Java KeyStore.

    Important

    Vérifiez que keytool existe sur le chemin d’accès indiqué dans le script afin que celui-ci puisse le localiser. Si vous utilisez un client Db2, vous pouvez trouver le keytool sous ~sqlib/java/jdk64/jre/bin.

    #!/bin/bash PEM_FILE=$1 PASSWORD=$2 KEYSTORE=$3 # number of certs in the PEM file CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l) for N in $(seq 0 $(($CERTS - 1))); do ALIAS="${PEM_FILE%.*}-$N" cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }" | keytool -noprompt -import -trustcacerts -alias $ALIAS -keystore $KEYSTORE -storepass $PASSWORD done
  3. Pour exécuter le script shell et importer le fichier PEM contenant le bundle de certificats dans un Java KeyStore, exécutez la commande suivante. Remplacez shell_file_name.sh par le nom de votre fichier script shell et password par le mot de passe de votre Java KeyStore.

    ./shell_file_name.sh global-bundle.pem password truststore.jks
  4. Pour vous connecter à votre serveur Db2, exécutez la commande suivante. Remplacez les espaces réservés suivants dans l’exemple par les informations sur votre instance de base de données RDS for Db2.

    • ip_address : adresse IP du point de terminaison de votre instance de base de données.

    • port : numéro de port de la connexion SSL. Il peut s’agir de n’importe quel numéro de port à l’exception du numéro utilisé pour le port non SSL.

    • database_name : nom de votre base de données dans votre instance de base de données.

    • master_username : nom d’utilisateur principal de votre instance de base de données.

    • master_password : nom du mot de passe principal de votre instance de base de données.

    export trustStorePassword=MyPassword java -cp ~/dsdriver/jdbc_sqlj_driver/linuxamd64/db2jcc4.jar \ com.ibm.db2.jcc.DB2Jcc -url \ "jdbc:db2://ip_address:port/database_name:\ sslConnection=true;sslTrustStoreLocation=\ ~/truststore.jks;\ sslTrustStorePassword=${trustStorePassword};\ sslVersion=TLSv1.2;\ encryptionAlgorithm=2;\ securityMechanism=7;" \ -user master_username -password master_password
Node.js
Connexion à votre serveur de base de données Db2 à l’aide de Node.js
  1. Installez le pilote node-ibm_db. Pour plus d’informations, consultez Installation du pilote node-ibm_db sur les systèmes Linux et UNIX dans la documentation IBM Db2.

  2. Créez un fichier JavaScript basé sur le contenu suivant. Remplacez les espaces réservés suivants dans l’exemple par les informations sur votre instance de base de données RDS for Db2.

    • ip_address : adresse IP du point de terminaison de votre instance de base de données.

    • master_username : nom d’utilisateur principal de votre instance de base de données.

    • master_password : nom du mot de passe principal de votre instance de base de données.

    • database_name : nom de votre base de données dans votre instance de base de données.

    • port : numéro de port de la connexion SSL. Il peut s’agir de n’importe quel numéro de port à l’exception du numéro utilisé pour le port non SSL.

    var ibmdb = require("ibm_db"); const hostname = "ip_address"; const username = "master_username"; const password = "master_password"; const database = "database_name"; const port = "port"; const certPath = "/root/qa-bundle.pem"; ibmdb.open("DRIVER={DB2};DATABASE=" + database + ";HOSTNAME=" + hostname + ";UID=" + username + ";PWD=" + password + ";PORT=" + port + ";PROTOCOL=TCPIP;SECURITY=SSL;SSLServerCertificate=" + certPath + ";", function (err, conn){ if (err) return console.log(err); conn.close(function () { console.log('done'); }); });
  3. Pour modifier le fichier JavaScript, exécutez la commande suivante.

    node ssl-test.js
Python
Connexion à votre serveur de base de données Db2 à l’aide de Python
  1. Créez un fichier Python avec le contenu suivant. Remplacez les espaces réservés suivants dans l’exemple par les informations sur votre instance de base de données RDS for Db2.

    • port : numéro de port de la connexion SSL. Il peut s’agir de n’importe quel numéro de port à l’exception du numéro utilisé pour le port non SSL.

    • master_username : nom d’utilisateur principal de votre instance de base de données.

    • master_password : nom du mot de passe principal de votre instance de base de données.

    • database_name : nom de votre base de données dans votre instance de base de données.

    • ip_address : adresse IP du point de terminaison de votre instance de base de données.

    import click import ibm_db import sys port = port; master_user_id = "master_username" # Master id used to create your DB instance master_password = "master_password" # Master password used to create your DB instance db_name = "database_name" # If not given "db-name' vpc_customer_private_ip = "ip_address" # Hosts end points - Customer private IP Addressicert_path = "/root/ssl/global-bundle.pem" # cert path @click.command() @click.option("--path", help="certificate path") def db2_connect(path): try: conn = ibm_db.connect(f"DATABASE={db_name};HOSTNAME={vpc_customer_private_ip};PORT={port}; PROTOCOL=TCPIP;UID={master_user_id};PWD={master_password};SECURITY=ssl;SSLServerCertificate={path};", "", "") try: ibm_db.exec_immediate(conn, 'create table tablename (a int);') print("Query executed successfully") except Exception as e: print(e) finally: ibm_db.close(conn) sys.exit(1) except Exception as ex: print("Trying to connect...") if __name__ == "__main__": db2_connect()
  2. Créez le script shell suivant, qui exécute le fichier Python que vous avez créé. Remplacez python_file_name.py par le nom de votre fichier script Python.

    #!/bin/bash PEM_FILE=$1 # number of certs in the PEM file CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l) for N in $(seq 0 $(($CERTS - 1))); do ALIAS="${PEM_FILE%.*}-$N" cert=`cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }"` cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }" > $ALIAS.pem python3 <python_file_name.py> --path $ALIAS.pem output=`echo $?` if [ $output == 1 ]; then break fi done
  3. Pour importer le fichier PEM contenant le bundle de certificats et exécuter le script shell, exécutez la commande suivante. Remplacez shell_file_name.sh par le nom de votre fichier script shell.

    ./shell_file_name.sh global-bundle.pem
Db2 CLP
Connexion à votre serveur de base de données Db2 à l’aide de Db2 CLP
  1. Pour vous connecter à votre instance Db2 à l’aide de Db2 CLP, vous avez besoin de GSKit, que vous pouvez télécharger sur IBM Fix Central. Pour utiliser Db2 CLP, vous avez également besoin du client IBM Db2, que vous pouvez télécharger depuis Télécharger les clients et les pilotes de la version 11.5 initiale sur le support IBM.

  2. Créez un magasin de clés.

    gsk8capicmd_64 -keydb -create -db "directory/keystore-filename" -pw "changeThisPassword" -type pkcs12 -stash
  3. Importez les bundles de certificats dans le magasin de clés.

    gsk8capicmd_64 -cert -import -file global-bundle.pem -target directory/keystore-filename> -target_stashed
  4. Mettez à jour la configuration de l’instance Db2.

    db2 update dbm cfg using SSL_CLNT_KEYDB keystore-filename SSL_CLNT_STASH keystore stash file immediate
  5. Cataloguez le nœud et la base de données.

    db2 catalog tcpip node ssluse1 REMOTE endpoint SERVER ssl_svcename security ssl db2 catalog database testdb as ssltest at node ssluse1
  6. Etablit une connexion à la base de données

    db2 connect to ssltest user username using password