Datenverschlüsselung ist ein wichtiger Aspekt der Datensicherheit, sowohl bei der Speicherung (at rest) als auch während der Übertragung (in transit). In diesem Kontext werden wir die Verschlüsselung mit Microsoft SQL Server und Python betrachten.
1. Datenverschlüsselung in SQL Server
a. Verschlüsselung at rest
SQL Server bietet mehrere Möglichkeiten, Daten at rest zu verschlüsseln:
Transparent Data Encryption (TDE): TDE verschlüsselt die gesamte Datenbank auf der Festplatte. Dies umfasst die Datenbankdateien, Backup-Dateien und Transaktionsprotokolle. Die Verschlüsselung erfolgt auf der Ebene des Speichersystems, ohne dass Änderungen an der Anwendung erforderlich sind.
-- Aktivieren von TDE für eine Datenbank CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE MyServerCert; ALTER DATABASE MyDatabase SET ENCRYPTION ON;
Column-Level Encryption: Diese Methode ermöglicht die Verschlüsselung einzelner Spalten in einer Tabelle. Sie ist nützlich, wenn nur bestimmte sensible Daten verschlüsselt werden sollen.
-- Erstellen eines symmetrischen Schlüssels CREATE SYMMETRIC KEY MyColumnKey WITH ALGORITHM = AES_256 ENCRYPTION BY PASSWORD = 'MyPassword'; -- Verschlüsseln einer Spalte OPEN SYMMETRIC KEY MyColumnKey DECRYPTION BY PASSWORD = 'MyPassword'; UPDATE MyTable SET MyEncryptedColumn = EncryptByKey(Key_GUID('MyColumnKey'), MySensitiveData);
b. Verschlüsselung in transit
SQL Server verwendet standardmäßig TLS (Transport Layer Security), um Daten während der Übertragung zu verschlüsseln. Um dies zu aktivieren, müssen Sie ein Zertifikat auf dem SQL Server installieren und die entsprechenden Netzwerkeinstellungen konfigurieren.
TLS-Konfiguration:
- Erwerben Sie ein Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle (CA).
- Installieren Sie das Zertifikat auf dem SQL Server.
- Konfigurieren Sie SQL Server, um das Zertifikat zu verwenden.
-- Überprüfen des Zertifikats SELECT * FROM sys.certificates;
2. Datenverschlüsselung mit Python
a. Verschlüsselung at rest
Python bietet verschiedene Bibliotheken zur Verschlüsselung von Daten, wie z.B. cryptography
und pycryptodome
.
Beispiel mit
cryptography
:from cryptography.fernet import Fernet # Schlüssel generieren key = Fernet.generate_key() cipher_suite = Fernet(key) # Daten verschlüsseln data = b"My sensitive data" encrypted_data = cipher_suite.encrypt(data) # Daten entschlüsseln decrypted_data = cipher_suite.decrypt(encrypted_data)
b. Verschlüsselung in transit
Für die Verschlüsselung in transit kann Python die ssl
-Bibliothek verwenden, um sichere Verbindungen zu erstellen.
Beispiel mit
ssl
:import ssl import socket # Erstellen eines sicheren Sockets context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) context.load_cert_chain(certfile="server.crt", keyfile="server.key") with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: with context.wrap_socket(sock, server_side=True) as ssock: ssock.bind(('localhost', 443)) ssock.listen(5) conn, addr = ssock.accept() with conn: print('Connected by', addr) data = conn.recv(1024) print('Received', data) conn.sendall(data)
3. Kombination von SQL Server und Python
Wenn Sie Python verwenden, um mit einer SQL Server-Datenbank zu interagieren, können Sie die Verschlüsselungsfunktionen von SQL Server nutzen, um die Daten at rest zu schützen, und die ssl
-Bibliothek von Python, um die Daten in transit zu verschlüsseln.
Beispiel für eine sichere Verbindung zu SQL Server mit
pyodbc
:import pyodbc import ssl # SSL-Kontext erstellen context = ssl.create_default_context() # Verbindung zur SQL Server-Datenbank herstellen conn = pyodbc.connect( 'DRIVER={ODBC Driver 17 for SQL Server};' 'SERVER=my_server;' 'DATABASE=my_database;' 'UID=my_username;' 'PWD=my_password;', sslcontext=context ) cursor = conn.cursor() cursor.execute("SELECT * FROM MyTable") rows = cursor.fetchall() for row in rows: print(row)
Fazit
Die Verschlüsselung von Daten at rest und in transit ist entscheidend für die Sicherheit Ihrer Anwendungen. SQL Server bietet robuste Mechanismen für die Verschlüsselung von Daten at rest und in transit, während Python flexible Bibliotheken für die Verschlüsselung und sichere Kommunikation bereitstellt. Durch die Kombination dieser Technologien können Sie ein hohes Maß an Datensicherheit erreichen.