Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting
Authentifizierung mit mTLS für Redshift-Streaming-Aufnahme aus Apache Kafka-Quellen
Mutual Transport Layer Security (mTLS) ermöglicht es einem Server, einen Client zu authentifizieren, an den er Informationen sendet, und dem Client, den Server zu authentifizieren. Der Vorteil der Verwendung von mTLS besteht darin, vertrauenswürdige Authentifizierung für eine Vielzahl von Anwendungsfällen in verschiedenen branchenübergreifenden Anwendungen bereitzustellen. Dazu gehören Anwendungsfälle in der Finanz-, Einzelhandels-, Regierungs- und Gesundheitsbranche. Bei der Streaming-Aufnahme in Redshift erfolgt die Authentifizierung zwischen einem Server, bei dem es sich um Amazon MSK, Apache Kafka oder Confluent Cloud handeln kann, und einem von Amazon Redshift bereitgestellten Cluster oder einer Arbeitsgruppe von Amazon Redshift Serverless.
Dieses Thema enthält Verfahren und Beispiele für SQL-Befehle, die zeigen, wie ein externes Schema erstellt werden kann, das mTLS zur Authentifizierung zwischen dem Redshift-Client und einem beliebigen Apache Kafka-Server verwendet. Die Schritte in diesem Thema ergänzen die vollständigen Schritte zur Einrichtung der Streaming-Aufnahme aus Apache Kafka-Quellen. Weitere Informationen finden Sie unter Erste Schritte mit der Streaming-Aufnahme aus Apache-Kafka-Quellen.
Voraussetzungen für die Verwendung von mTLS für die Streaming-Aufnahme
Dieser Abschnitt enthält die erforderlichen Schritte für die Verwendung von mTLS für die Streaming-Aufnahme mit AWS Certificate Manager oder AWS Secrets Manager.
Als ersten Schritt müssen Sie über eine private Zertifizierungsstelle (PCA) verfügen oder eine solche einrichten, mit der Sie Zertifikate ausstellen können, die unter anderem eine sichere Kommunikation über sichere Kommunikationskanäle ermöglichen. AWS Private Certificate Authority (Private CA) ist ein verfügbarer Service, der diese Funktion ausführt. Weitere Informationen finden Sie unter Erstellen einer privaten Zertifizierungsstelle im Benutzerhandbuch für AWS Private Certificate Authority. Nachdem Sie die private Zertifizierungsstelle erstellt haben, exportieren Sie das Root-CA-Zertifikat, und speichern Sie es in einer Datei mit der Erweiterung .pem.
Gehen Sie wie folgt vor, um einen Cluster zu erstellen, der das CA-Zertifikat verwendet:
Verwenden von mTLS für die Streaming-Aufnahme mit AWS Certificate Manager
Das folgende Verfahren zeigt, wie mTLS für die Redshift-Streaming-Aufnahme mithilfe von AWS Certificate Manager (ACM) für die Zertifikatsspeicherung und -verwaltung konfiguriert wird:
Anfordern eines privaten Zertifikats über ACM. Wählen Sie dabei die PCA, die Sie im Abschnitt „Voraussetzungen“ erstellt haben, als Zertifizierungsstelle aus. ACM speichert das signierte Zertifikat und den angehängten privaten Schlüssel für die sichere Kommunikation. Weitere Informationen zum Verwalten von Zertifikaten mit ACM finden Sie unter Ausstellen und Verwalten von Zertifikaten im AWS Certificate Manager-Benutzerhandbuch.
Fügen Sie für die IAM-Rolle, die Sie zur Verwaltung Ihres Redshift-Clusters oder Ihrer Arbeitsgruppe von Amazon Redshift Serverless verwenden, die Berechtigung zum Exportieren des Zertifikats hinzu, nämlich acm:ExportCertificate. Weitere Informationen zum Einrichten der erforderlichen IAM-Ressourcen für die Streaming-Aufnahme finden Sie unter Einrichten der Streaming-Aufnahme von Kafka aus. Geben Sie im nächsten Schritt dieselbe IAM-Rolle an, um das externe Schema zu erstellen.
Anmerkung
Anfragen an AWS Certificate Manager zur Anforderung eines Internet-Gateways (IGW) oder eines NAT-Gateways (NGW) in Ihrer VPC. Wenn Ihre VPC weder über eine IGW, noch über eine NGW verfügt, gehen Sie wie folgt vor:
Verwenden Sie Secrets Manager anstelle von ACM, um Ihre Zertifikate zu speichern.
Fügen Sie Ihrer VPC einen VPC-Endpunkt „Secrets Manager“ hinzu.
Informationen zur Verwendung von Secrets Manager mit mTLS für die Streaming-Aufnahme finden Sie nachfolgend unter Verwenden von mTLS für die Streaming-Aufnahme mit AWS Secrets Manager.
Rufen Sie den Bootstrap-Broker-URI für den Amazon MSK-, Apache Kafka- oder Confluent Cloud-Cluster ab. Weitere Informationen zum Abrufen des Bootstrap-Broker-URI finden Sie unter Abrufen der Bootstrap Brokers für einen Amazon-MSK-Cluster im Entwicklerhandbuch zu Amazon Managed Streaming for Apache-Kafka.
Führen Sie einen SQL-Befehl wie den folgenden aus, um ein externes Schema zu erstellen, das den Cluster einem externen Redshift-Schema zuordnet, unter Verwendung von
mtls.Wichtige Parameter:
IAM_ROLE – Die dem Cluster zugeordnete IAM-Rolle für die Streaming-Aufnahme.
URI – Bootstrap-Broker-URI für den Cluster. Beachten Sie, dass für Amazon MSK Port 9094 für die Kommunikation mit Brokern für die TLS-Verschlüsselung angegeben ist.
AUTHENTICATION_ARN – Der ARN des ACM-Zertifikats. Der ARN ist in der ACM-Konsole verfügbar, wenn Sie das ausgegebene Zertifikat auswählen.
Nachdem Sie diese Konfigurationsschritte ausgeführt haben, können Sie eine materialisierte Redshift-Ansicht erstellen, die auf das im Beispiel definierte Schema verweist, und dann REFRESH MATERIALIZED VIEW verwenden, um Daten zu streamen. Weitere Informationen finden Sie unter Erste Schritte mit der Streaming-Aufnahme aus Apache-Kafka-Quellen.
Verwenden von mTLS für die Streaming-Aufnahme mit AWS Secrets Manager
Sie können mTLS für die Redshift-Streaming-Aufnahme konfigurieren, indem Sie AWS Secrets Manager für die Zertifikatsverwaltung verwenden, wenn Sie nicht in AWS Certificate Manager auf das Zertifikat verweisen möchten. In den folgenden Schritten wird beschrieben, wie Sie mTLS mit Secrets Manager konfigurieren.
Erstellen Sie mit dem Tool Ihrer Wahl eine Zertifikatsignaturanforderung und einen privaten Schlüssel. Anschließend können Sie die Signaturanforderung verwenden, um ein signiertes Zertifikat zu generieren. Verwenden Sie dabei dieselbe AWS private CA (PCA), mit der Sie das Zertifikat für den Cluster generiert haben. Weitere Informationen zur Ausstellung eines Zertifikats finden Sie unter IssueCertificate in der AWS Private Certificate Authority-API-Referenz.
Extrahieren Sie das Zertifikat mit AWS Private Certificate Authority. Weitere Informationen finden Sie unter Abrufen eines privaten Zertifikats im AWS Private Certificate Authority-Benutzerhandbuch.
Speichern Sie das Zertifikat und den privaten Schlüssel, die im vorigen Schritt unter AWS Secrets Manager generiert wurden. Wählen Sie
Other type of secret, und verwenden Sie das Klartext-Format. Die Schlüssel-Wert-Paare sollten das Format{"certificate":"<cert value>","privateKey":"<pkey value>"}haben, wie im folgenden Beispiel. Weitere Informationen zur Erstellung und Verwaltung von Secrets in AWS Secrets Manager finden Sie unter Erstellen und Verwalten von Secrets mit AWS Secrets Manager im AWS Secrets Manager-Benutzerhandbuch.{"certificate":"-----BEGIN CERTIFICATE----- klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi H4hAX8/eE96qCcjkpfT84EdvHzp6fC+/WwM0oXlwUEWlvfMCXNaG5D8SqRq3qA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -----END CERTIFICATE-----", "privateKey":"-----BEGIN PRIVATE KEY----- klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi 7OD4m1dBEs3Fj++hDMH9rYRp99RqtCOf0EWOUe139KOilOsW+cyhAoc9Ci2+Jo/k 17u2N1iGILMQEZuCRtnJOkFYkw== -----END PRIVATE KEY-----"}Fügen Sie die Berechtigungsrichtlinie zum Abrufen des Secrets an die IAM-Rolle an, die Sie für die Verwaltung Ihres Amazon-Redshift-Clusters oder Ihrer Arbeitsgruppe von Amazon Redshift Serverless verwenden. Diese Berechtigung ist
secretsmanager:GetSecretValue. Weitere Informationen finden Sie unter Einrichten der Authentifizierung. Weitere Informationen zum Verwalten von IAM-Richtlinien finden Sie unter Bearbeiten von IAM-Richtlinien. Geben Sie im nächsten Schritt dieselbe IAM-Rolle an, um das externe Schema zu erstellen.Führen Sie in Redshift den SQL-Befehl zum Erstellen des externen Schemas aus. Sie verwenden den AUTHENTICATION-Typ
mtls. Sie geben auch den URI des Clusters und den ARN des Secrets in AWS Secrets Manager an.CREATE EXTERNAL SCHEMA my_schema FROM KAFKA IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION mtls URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094' SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';
Wichtige Parameter:
IAM_ROLE – Die dem Cluster zugeordnete IAM-Rolle für die Streaming-Aufnahme.
URI – Bootstrap-Broker-URI für den Cluster. Beachten Sie, dass für Amazon MSK Port 9094 für die Kommunikation mit Brokern für die TLS-Verschlüsselung angegeben ist.
SECRET_ARN – Der ARN des Secrets von Secrets Manager, der das für mTLS zu verwendende Zertifikat enthält.
Aktivieren der mTLS-Authentifizierung für ein vorhandenes externes Schema
Wenn Sie über ein vorhandenes externes Schema verfügen, das Sie für die Streaming-Aufnahme verwenden, und Sie gegenseitiges TLS für die Authentifizierung implementieren möchten, können Sie einen Befehl wie den folgenden ausführen, der die mTLS-Authentifizierung und den ARN des ACM-Zertifikats in ACM spezifiziert.
ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';
Oder Sie können die mTLS-Authentifizierung mit Verweis auf den Secret-ARN in AWS Secrets Manager angeben.
ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';
Informationen zum Befehl ALTER EXTERNAL SCHEMA finden Sie unter ALTER EXTERNAL SCHEMA.