Fermer

avril 6, 2024

Guide étape par étape pour sécuriser la connexion SSL JDBC avec Postgres dans AWS Glue / Blogs / Perficient

Guide étape par étape pour sécuriser la connexion SSL JDBC avec Postgres dans AWS Glue / Blogs / Perficient


Avez-vous déjà essayé de connecter une base de données à AWS Glue à l’aide d’une connexion de chiffrement SSL JDBC ? Cela peut être tout un casse-tête. Il y a quelques mois, j’ai été confronté à ce défi précis. Je pensais que ce serait facile, mais j’avais tort ! Lorsque j’ai cherché de l’aide en ligne, je n’ai pas trouvé beaucoup de conseils utiles. Alors, j’ai retroussé mes manches et expérimenté jusqu’à ce que je comprenne enfin.

Maintenant, je partage mes apprentissages avec vous. Dans ce blog, je vais détailler les étapes de manière claire et facile à suivre. À la fin, vous saurez exactement comment connecter votre base de données à AWS Glue avec le cryptage SSL. Rendons ensemble cette tâche complexe un peu plus simple.

Avant d’aller de l’avant, discutons brièvement du fonctionnement du cryptage SSL.

  1. Le client envoie une demande de connexion (Client Hello).
  2. Le serveur répond en choisissant le cryptage (Server Hello).
  3. Le client vérifie l’identité du serveur à l’aide de son certificat et de son certificat racine.
  4. L’échange de clés établit une clé de chiffrement partagée.
  5. Données cryptées échangées en toute sécurité.
  6. Le client peut s’authentifier avec son certificat avant l’échange de données cryptées.
  7. La connexion se termine à la fin de la session ou à l’expiration du délai.

Cryptage SSL

Maintenant que vous avez compris les bases, continuons à configurer Glue pour le cryptage SSL.

Les étapes ci-dessus constituent les étapes de base du processus de cryptage SSL. Voyons maintenant comment configurer AWS Glue pour le cryptage SSL. Avant de commencer le processus de configuration, nous avons besoin du formatage suivant ci-dessous.

1)Certificat client

2 Certificat racine

3) Clé de certificat

au format DER. C’est le format adapté à la colle AWS.

DER (Distinguished Encoding Rules) est un format de codage binaire utilisé dans les protocoles cryptographiques comme SSL/TLS pour représenter et échanger des structures de données définies par ASN.1. Il garantit un codage sans ambiguïté et de taille minimale des données cryptographiques telles que les certificats.

Voici comment procéder pour chaque composant :

1 .Certificat Client (PEM):

Ce certificat est utilisé par le client (dans ce cas, AWS Glue) pour s’authentifier auprès du serveur (par exemple, une autre base de données) lors de la négociation SSL. Il comprend la clé publique du client et est généralement signé par une autorité de certification (CA) de confiance ou une autorité de certification intermédiaire.

Si votre certificat client n’est pas déjà au format DER, vous pouvez le convertir à l’aide de l’outil de ligne de commande OpenSSL :

openssl x509 -in client_certificate.pem -outform der -out client_certificate.der

Remplacer client_certificate.pem avec le nom de fichier de votre certificat client au format DER, et client_certificate.der avec le nom de fichier souhaité pour le certificat client converti encodé en DER.

2.Certificat racine (PEM):

Le certificat racine appartient à l’autorité de certification (CA) qui a signé le certificat du serveur (dans ce cas, la base de données Postgre). Il est utilisé par le client pour vérifier l’authenticité du certificat du serveur lors du SSL.

Convertissez le certificat racine au format DER à l’aide de la commande suivante :

openssl x509 -in root_certificate.pem -outform der -out root_certificate.der

Remplacer root_certificate.pem avec le nom de fichier de votre certificat racine au format DER, et root_certificate.der avec le nom de fichier souhaité pour le certificat racine converti encodé en DER.

3.Clé de certificat (PKCS#8 PEM):

Il s’agit de la clé privée correspondant au certificat client. Il est utilisé pour prouver la propriété du certificat client lors de la négociation SSL.

Convertissez la clé de certificat au format PEM PKCS#8 à l’aide de l’outil de ligne de commande OpenSSL :

openssl pkcs8 -topk8 -inform PEM -outform DER -in certificate_key.pem -out certificate_key.pk8 -nocrypt

Remplacer certificate_key.pem avec le nom de fichier de votre clé de certificat au format PEM, et certificate_key.pk8 avec le nom de fichier souhaité pour la clé de certificat convertie encodée PKCS#8 PEM.

Stocké les certificats ci-dessus et la clé du compartiment S3. Nous aurons besoin de ces certificats lors de la configuration de la colle AWS.

Fichiers AWS S3

Pour connecter AWS Glue à une base de données PostgreSQL via SSL à l’aide de PySpark, vous devrez fournir les certificats SSL nécessaires et configurer correctement la connexion. Voici un exemple de script PySpark montrant comment y parvenir :

from pyspark.context import SparkContext
from awsglue.context import GlueContext
from pyspark.sql import SparkSession

# Initialize Spark and Glue contexts
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# Define PostgreSQL connection properties
jdbc_url = "jdbc:postgresql://your_postgresql_host:5432/your_database"
connection_properties = {
    "user": "your_username",
    "password": "your_password",
    "ssl": "true",
    "sslmode": "verify-ca",  # SSL mode: verify-ca or verify-full
    "sslrootcert": "s3://etl-test-bucket1/root_certificate.der",  # S3 Path to root certificate
    "sslcert": "s3://etl-test-bucket1/client_certificate.der",     # S3 Path to client certificate
    "sslkey": "s3://etl-test-bucket1/certificate_key.pk8"         # S3 Path to client certificate key
}

# Load data from PostgreSQL table
dataframe = spark.read.jdbc(url=jdbc_url, table="your_table_name", properties=connection_properties)

# Perform data processing or analysis
# For example:
dataframe.show()

# Stop Spark session
spark.stop()

Maintenant, dans votre travail de colle, cliquez sur Détails du poste page et faites défiler vers le bas jusqu’à ce que vous voyiez Chemin des JAR dépendants et Chemin des fichiers référencés choix. Sous Chemin des JAR dépendants placez l’emplacement du chemin S3 où vous avez stocké le fichier jar et dans Chemin des fichiers référencés ajoutez le chemin S3 du certificat client, racine et clé converti, séparé par une virgule »,

Détails de la tâche AWS Glue

Cliquez maintenant sur Enregistrer l’option et tu es prêt à partir

Ceci conclut les étapes de configuration d’une connexion JDBC sécurisée avec DB dans AWS Glue. Pour résumer, dans ce blog nous :

1) Vous avez expliqué comment le cryptage SSL peut être utilisé pour un échange de données sécurisé entre AWS Glue et votre base de données (ici Postgresql)

2) Les étapes pour configurer le cryptage SSL dans AWS Glue pour sécuriser la connexion JDBC avec une base de données

Vous pouvez lire mes autres blogs ici

en savoir plus sur AWS Glue






Source link