Utilizzo di SSL/TLS con un’istanza database Amazon RDS per Db2 - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di SSL/TLS con un’istanza database Amazon RDS per Db2

Secure Sockets Layer (SSL) è un protocollo standard del settore utilizzato per proteggere connessioni di rete tra client e server. Dopo SSL versione 3.0, il nome è stato modificato in Transport Layer Security (TLS), ma spesso il protocollo viene ancora indicato come SSL. Amazon RDS supporta la crittografia SSL per le istanze database Amazon RDS per Db2. Con SSL/TLS, puoi crittografare una connessione tra il client dell’applicazione e l’istanza database RDS per Db2. Il supporto SSL/TLS è disponibile in tutte le Regioni AWS per RDS per Db2.

Puoi abilitare la crittografia SSL/TLS per un’istanza database RDS per Db2 aggiungendo l’opzione Db2 SSL al gruppo di parametri associato all’istanza database. Amazon RDS utilizza una seconda porta, come richiesto da Db2, per le connessioni SSL/TLS. In questo modo è consentito allo stesso tempo sia testo in chiaro sia comunicazioni con crittografia SSL tra un’istanza database e un client Db2. Ad esempio, è possibile utilizzare la porta con testo in chiaro per comunicare con altre risorse all'interno di un VPC mentre utilizzi la porta con crittografia SSL per comunicare con risorse all'esterno del VPC.

Creazione di una connessione SSL/TLS

Per creare una connessione SSL/TLS, scegli un’autorità di certificazione (CA), scarica un bundle di certificati per tutte le Regioni AWS e aggiungi parametri a un gruppo di parametri personalizzato.

Fase 1: scegliere una CA e scaricare un certificato

Scegli un’autorità di certificazione (CA) e scarica un bundle di certificati per tutte le Regioni AWS. Per ulteriori informazioni, consulta .

Fase 2: aggiornare i parametri in un gruppo di parametri personalizzato

Importante

Se utilizzi il modello basato sull’uso di licenze proprie (BYOL) per RDS per Db2, modifica il gruppo di parametri personalizzato che hai creato per l’IBM Customer ID e l’IBM Site ID. Se utilizzi un modello di licenza diverso per RDS per Db2, segui la procedura per aggiungere parametri a un gruppo di parametri personalizzato. Per ulteriori informazioni, consulta Opzioni di licenza per Amazon RDS per Db2.

Non è possibile modificare i gruppi di parametri predefiniti per le istanze database RDS per Db2. È pertanto necessario creare un gruppo di parametri personalizzato, modificarlo e collegarlo alle istanze database RDS per Db2. Per informazioni sui gruppi di parametri, consultare Gruppi di parametri database per istanze database Amazon RDS.

Utilizza le impostazioni dei parametri riportate nella seguente tabella.

Parametro Valore
DB2COMM TCPIP,SSL o SSL
SSL_SVCENAME <any port number except the number used for the non-SSL port>
Per aggiornare i parametri in un gruppo di parametri personalizzato
  1. Crea un gruppo di parametri personalizzato eseguendo il comando create-db-parameter-group.

    Includi le seguenti opzioni obbligatorie:

    • --db-parameter-group-name: un nome per il gruppo di parametri che stai creando.

    • --db-parameter-group-family: l’edizione e la versione principale del motore Db2. Valori validi: db2-se-11-5, db2-ae-11.5.

    • --description: una descrizione del gruppo di parametri.

    Per ulteriori informazioni sulla creazione di un gruppo di parametri database, consulta Creazione di un gruppo di parametri database in Amazon RDS.

  2. Modifica i parametri nel gruppo di parametri personalizzato che hai creato eseguendo il comando modify-db-parameter-group.

    Includi le seguenti opzioni obbligatorie:

    • --db-parameter-group-name: il nome del gruppo di parametri creato.

    • --parameters: un array di nomi di parametri, valori e metodi di applicazione per l’aggiornamento dei parametri.

    Per ulteriori informazioni sulla modifica di un gruppo di parametri, consulta Modifica dei parametri in un gruppo di parametri database in Amazon RDS.

  3. Associa il gruppo di parametri all’istanza database RDS per Db2. Per ulteriori informazioni, consulta Associazione di un gruppo di parametri database a un’istanza database in Amazon RDS.

Connettiti al server di database Db2

Le istruzioni per la connessione al server di database Db2 sono specifiche della lingua.

Java
Per connettersi al server di database Db2 utilizzando Java
  1. Scarica il driver JDBC. Per ulteriori informazioni, consulta DB2 JDBC Driver Versions and Downloads nella documentazione di IBM Support.

  2. Crea un file di script della shell con i seguenti contenuti. Questo script aggiunge tutti i certificati del bundle in un Java KeyStore.

    Importante

    Verifica che keytool sia presente nel percorso dello script in modo da essere identificabile dallo script. Se utilizzi un client Db2, puoi individuare il keytool in ~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. Per eseguire lo script della shell e importare il file PEM con il bundle di certificati in un Java KeyStore, esegui il comando seguente. Sostituisci shell_file_name.sh con il nome del file di script della shell e password con la password per Java KeyStore.

    ./shell_file_name.sh global-bundle.pem password truststore.jks
  4. Per connetterti al server Db2, esegui il comando seguente. Sostituisci i seguenti segnaposto nell’esempio con le informazioni relative all’istanza database RDS per Db2.

    • ip_address: l’indirizzo IP per l’endpoint dell’istanza database.

    • port: il numero di porta per la connessione SSL. Può essere qualsiasi numero di porta tranne quello utilizzato per la porta non SSL.

    • database_name: il nome del database nell’istanza database.

    • master_username: il nome dell’utente master per l’istanza database.

    • master_password: la password dell’utente master per l’istanza database.

    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
Per connettersi al server di database Db2 utilizzando Node.js
  1. Installa il driver node-ibm_db. Per ulteriori informazioni, consulta Installing the node-ibm_db driver on Linux and UNIX systems nella documentazione di IBM Db2.

  2. Crea un file JavaScript con i seguenti contenuti. Sostituisci i seguenti segnaposto nell’esempio con le informazioni relative all’istanza database RDS per Db2.

    • ip_address: l’indirizzo IP per l’endpoint dell’istanza database.

    • master_username: il nome dell’utente master per l’istanza database.

    • master_password: la password dell’utente master per l’istanza database.

    • database_name: il nome del database nell’istanza database.

    • port: il numero di porta per la connessione SSL. Può essere qualsiasi numero di porta tranne quello utilizzato per la porta 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. Per eseguire il file JavaScript, esegui il comando seguente.

    node ssl-test.js
Python
Per connettersi al server di database Db2 utilizzando Python
  1. Crea un file Python con i seguenti contenuti. Sostituisci i seguenti segnaposto nell’esempio con le informazioni relative all’istanza database RDS per Db2.

    • port: il numero di porta per la connessione SSL. Può essere qualsiasi numero di porta tranne quello utilizzato per la porta non SSL.

    • master_username: il nome dell’utente master per l’istanza database.

    • master_password: la password dell’utente master per l’istanza database.

    • database_name: il nome del database nell’istanza database.

    • ip_address: l’indirizzo IP per l’endpoint dell’istanza database.

    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. Crea il seguente script della shell, che esegue il file Python creato. Sostituisci python_file_name.py con il nome del tuo file di 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. Per importare il file PEM con il bundle di certificati ed eseguire lo script della shell, esegui il comando seguente. Sostituisci shell_file_name.sh con il nome del file di script della shell.

    ./shell_file_name.sh global-bundle.pem
Db2 CLP
Per connettersi al server di database Db2 utilizzando Db2 CLP
  1. Per connetterti all’istanza Db2 utilizzando Db2 CLP, hai bisogno di GSKit, che puoi scaricare da IBM Fix Central. Per utilizzare Db2 CLP, è necessario anche il client IBM Db2, che è possibile scaricare da Download initial Version 11.5 clients and drivers sul sito di IBM Support.

  2. Crea un keystore.

    gsk8capicmd_64 -keydb -create -db "directory/keystore-filename" -pw "changeThisPassword" -type pkcs12 -stash
  3. Importa il bundle di certificati nel keystore.

    gsk8capicmd_64 -cert -import -file global-bundle.pem -target directory/keystore-filename> -target_stashed
  4. Aggiorna la configurazione dell’istanza Db2.

    db2 update dbm cfg using SSL_CLNT_KEYDB keystore-filename SSL_CLNT_STASH keystore stash file immediate
  5. Cataloga il nodo e il database.

    db2 catalog tcpip node ssluse1 REMOTE endpoint SERVER ssl_svcename security ssl db2 catalog database testdb as ssltest at node ssluse1
  6. Connettiti al database.

    db2 connect to ssltest user username using password