Add support for Cassandra auth with SSL check (#318)

Following recommended approach in Datastax documenation I've added the necessary TLS/SSL check

https://docs.datastax.com/en/developer/python-driver/3.17/security/index.html
This commit is contained in:
Tyler Oliver 2025-03-20 22:25:23 +00:00 committed by GitHub
parent 322725be04
commit fe422b2b95
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 10 additions and 3 deletions

View file

@ -1,6 +1,7 @@
from cassandra.cluster import Cluster from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider from cassandra.auth import PlainTextAuthProvider
from ssl import SSLContext, PROTOCOL_TLSv1_2
class TrustGraph: class TrustGraph:
@ -17,8 +18,9 @@ class TrustGraph:
self.username = username self.username = username
if username and password: if username and password:
ssl_context = SSLContext(PROTOCOL_TLSv1_2)
auth_provider = PlainTextAuthProvider(username=username, password=password) auth_provider = PlainTextAuthProvider(username=username, password=password)
self.cluster = Cluster(hosts, auth_provider=auth_provider) self.cluster = Cluster(hosts, auth_provider=auth_provider, ssl_context=ssl_context)
else: else:
self.cluster = Cluster(hosts) self.cluster = Cluster(hosts)
self.session = self.cluster.connect() self.session = self.cluster.connect()

View file

@ -6,6 +6,7 @@ from .. exceptions import RequestError
from cassandra.cluster import Cluster from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider from cassandra.auth import PlainTextAuthProvider
from cassandra.query import BatchStatement from cassandra.query import BatchStatement
from ssl import SSLContext, PROTOCOL_TLSv1_2
import uuid import uuid
import time import time
@ -21,12 +22,14 @@ class TableStore:
print("Connecting to Cassandra...", flush=True) print("Connecting to Cassandra...", flush=True)
if cassandra_user and cassandra_password: if cassandra_user and cassandra_password:
ssl_context = SSLContext(PROTOCOL_TLSv1_2)
auth_provider = PlainTextAuthProvider( auth_provider = PlainTextAuthProvider(
username=cassandra_user, password=cassandra_password username=cassandra_user, password=cassandra_password
) )
self.cluster = Cluster( self.cluster = Cluster(
cassandra_host, cassandra_host,
auth_provider=auth_provider auth_provider=auth_provider,
ssl_context=ssl_context
) )
else: else:
self.cluster = Cluster(cassandra_host) self.cluster = Cluster(cassandra_host)

View file

@ -10,6 +10,7 @@ import argparse
import time import time
from cassandra.cluster import Cluster from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider from cassandra.auth import PlainTextAuthProvider
from ssl import SSLContext, PROTOCOL_TLSv1_2
from .... schema import Rows from .... schema import Rows
from .... schema import rows_store_queue from .... schema import rows_store_queue
@ -17,6 +18,7 @@ from .... log_level import LogLevel
from .... base import Consumer from .... base import Consumer
module = ".".join(__name__.split(".")[1:-1]) module = ".".join(__name__.split(".")[1:-1])
ssl_context = SSLContext(PROTOCOL_TLSv1_2)
default_input_queue = rows_store_queue default_input_queue = rows_store_queue
default_subscriber = module default_subscriber = module
@ -45,7 +47,7 @@ class Processor(Consumer):
if graph_username and graph_password: if graph_username and graph_password:
auth_provider = PlainTextAuthProvider(username=graph_username, password=graph_password) auth_provider = PlainTextAuthProvider(username=graph_username, password=graph_password)
self.cluster = Cluster(graph_host.split(","), auth_provider=auth_provider) self.cluster = Cluster(graph_host.split(","), auth_provider=auth_provider, ssl_context=ssl_context)
else: else:
self.cluster = Cluster(graph_host.split(",")) self.cluster = Cluster(graph_host.split(","))
self.session = self.cluster.connect() self.session = self.cluster.connect()