Autenticazione con mTLS per l’importazione in streaming Redshift da origini Apache Kafka - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

Autenticazione con mTLS per l’importazione in streaming Redshift da origini Apache Kafka

mTLS consente a un server di autenticare il client a cui invia informazioni e al client di autenticare il server. Il vantaggio dell’utilizzo di mTLS consiste nel fornire un’autenticazione affidabile per una varietà di casi d’uso in diverse applicazioni verticali del settore. Tra questi figurano casi d’uso nei settori finanziario, retail, governativo e sanitario. In caso di importazione in streaming in Redshift, l’autenticazione avviene tra un server, che può essere Amazon MSK, Apache Kafka o Confluent Cloud, e un cluster con provisioning Amazon Redshift o un gruppo di lavoro Amazon Redshift serverless.

In questo argomento vengono illustrati le procedure e gli esempi di comandi SQL che mostrano come creare uno schema esterno che utilizza mTLS per l’autenticazione tra il client Redshift e qualsiasi server Apache Kafka. Le fasi illustrate in questo argomento completano la procedura per configurare l’importazione in streaming da origini Apache Kafka. Per ulteriori informazioni, consulta Nozioni di base sull’importazione in streaming da origini Apache Kafka.

Prerequisiti per l’utilizzo di mTLS per l’importazione in streaming

In questa sezione vengono illustrate le fasi preliminari per l’utilizzo di mTLS per l’importazione in streaming con AWS Certificate Manager o Gestione dei segreti AWS.

Come fase preliminare, devi disporre di o creare un’autorità di certificazione privata (PCA), che puoi utilizzare per emettere certificati che, tra le altre cose, consentono la comunicazione sicura attraverso canali di comunicazione sicuri. AWS Autorità di certificazione privata (CA privata) è un servizio disponibile che svolge questa funzione. Per ulteriori informazioni, consulta Creazione di una CA privata nella Guida per l’utente di AWS Autorità di certificazione privata. Dopo avere creato la CA privata, esporta il certificato CA root e salvalo in un file con estensione .pem.

Per creare un cluster che utilizza il certificato CA, segui la procedura descritta:

Amazon MSK
  1. Crea un cluster Amazon MSK che supporti l’autenticazione client mTLS. Per ulteriori informazioni sulla configurazione di un cluster Amazon MSK, consulta Autenticazione client TLS reciproca per Amazon MSK nella Guida per gli sviluppatori di Streaming gestito da Amazon per Apache Kafka.

  2. Modifica le impostazioni di sicurezza per il cluster Amazon MSK, attivando l’autenticazione client TLS tramite AWS Certificate Manager (ACM) e selezionando la AWS Private CA (PCA) creata in precedenza. Per ulteriori informazioni, consulta Aggiornamento delle impostazioni di sicurezza di un cluster nella Guida per gli sviluppatori di Streaming gestito da Amazon per Apache Kafka.

Confluent Cloud
  1. Crea un cluster Confluent Cloud dedicato, preferibilmente nella stessa Regione AWS del cluster Amazon Redshift. Per informazioni sulla creazione di un cluster Confluent Cloud, consulta Creare un cluster Kafka in Confluent Cloud.

  2. Carica il file pem del certificato CA root AWS Private CA esportato che hai creato in precedenza. Per ulteriori informazioni, consulta Gestire l’autorità di certificazione per l’autenticazione mTLS per Confluent Cloud. Confluent Cloud utilizza questo certificato per verificare il certificato client Amazon Redshift.

Utilizzo di mTLS per l’importazione in streaming con AWS Certificate Manager

Nella procedura seguente viene illustrato come configurare mTLS per l’importazione in streaming Redshift utilizzando AWS Certificate Manager (ACM) per l’archiviazione e la gestione dei certificati:

  1. Richiedi un certificato privato tramite ACM. Quando esegui questa operazione, seleziona la PCA che hai creato nella sezione Prerequisiti come autorità di certificazione. ACM archivia il certificato firmato e la chiave privata collegata per comunicazioni sicure. Per informazioni sulla gestione dei certificati con ACM, consulta Emissione e gestione di certificati nella Guida per l’utente di AWS Certificate Manager.

  2. Per il ruolo IAM che utilizzi per gestire il cluster Redshift o il gruppo di lavoro Amazon Redshift serverless, collega l’autorizzazione per esportare il certificato, che è acm:ExportCertificate. Per ulteriori informazioni sulla configurazione delle risorse IAM necessarie per l’importazione in streaming, consulta Configurazione dell’importazione in streaming da Kafka. Specifica lo stesso ruolo IAM nella fase successiva per creare lo schema esterno.

    Nota

    Le richieste ad AWS Certificate Manager prevedono l’utilizzo di un gateway Internet (IGW) o un gateway NAT (NGW) nel VPC. Se il VPC non dispone di un IGW o di un NGW, segui la procedura descritta:

    • Usa Secrets Manager anziché ACM per archiviare i certificati.

    • Collega un endpoint VPC di Secrets Manager al VPC.

    Per informazioni sull’utilizzo di Secrets Manager con mTLS per l’importazione in streaming, consulta Utilizzo di mTLS per l’importazione in streaming con Gestione dei segreti AWS di seguito.

  3. Ottieni l’URI del broker bootstrap per il cluster Amazon MSK, Apache Kafka o Confluent Cloud. Per ulteriori informazioni su come ottenere l’URI del broker bootstrap per Amazon MSK, consulta Ottenimento dei broker bootstrap per un cluster Amazon MSK in Guida per gli sviluppatori di Streaming gestito da Amazon per Apache Kafka.

  4. Esegui un comando SQL come nell’esempio seguente per creare uno schema esterno che mappa il cluster a uno schema esterno Redshift, utilizzando mtls.

    Amazon MSK
    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' AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';
    Apache Kafka or Confluent Cloud
    CREATE EXTERNAL SCHEMA my_schema FROM KAFKA IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION mtls URI 'lkc-2v531.domz6wj0p.us-west-1.aws.confluent.cloud:9092' AUTHENTICATION_ARN 'arn:aws:acm:region:444455556666:certificate/certificate_ID';

    Parametri importanti:

    • IAM_ROLE: il ruolo IAM associato al cluster, per l’importazione in streaming.

    • URI: l’URI del broker bootstrap per il cluster. Tieni presente che, per Amazon MSK, la porta 9094 è specificata per la comunicazione con i broker per la crittografia TLS.

    • AUTHENTICATION_ARN: l’ARN del certificato ACM. L’ARN è disponibile nella console ACM quando scegli il certificato emesso.

Dopo avere completato questa procedura di configurazione, puoi creare una vista materializzata di Redshift che faccia riferimento allo schema definito nell’esempio e quindi utilizzare REFRESH MATERIALIZED VIEW per lo streaming dei dati. Per ulteriori informazioni, consulta Nozioni di base sull’importazione in streaming da origini Apache Kafka.

Utilizzo di mTLS per l’importazione in streaming con Gestione dei segreti AWS

Puoi configurare mTLS per l’importazione in streaming di Redshift utilizzando Gestione dei segreti AWS per la gestione dei certificati se non desideri fare riferimento al certificato in AWS Certificate Manager. La procedura seguente descrive come configurare mTLS utilizzando Secrets Manager.

  1. Crea una richiesta di firma del certificato e una chiave privata con lo strumento che preferisci. Quindi puoi utilizzare la richiesta di firma per generare un certificato firmato, utilizzando la stessa CA privata (PCA) AWS usata per generare il certificato per il cluster. Per ulteriori informazioni sull’emissione di un certificato, consulta IssueCertificate nella documentazione di riferimento dell’API AWS Autorità di certificazione privata.

  2. Estrai il certificato utilizzando AWS Autorità di certificazione privata. Per ulteriori informazioni, consulta Recuperare un certificato privato nella Guida per l’utente di AWS Autorità di certificazione privata.

  3. Archivia il certificato e la chiave privata generati nella fase precedente in Gestione dei segreti AWS. Scegli Other type of secret e utilizza il formato di testo semplice. Le coppie chiave-valore devono essere nel formato {"certificate":"<cert value>","privateKey":"<pkey value>"}, come nell’esempio seguente. Per ulteriori informazioni sulla creazione e sulla gestione dei segreti in Gestione dei segreti AWS, consulta Creare e gestire i segreti con Gestione dei segreti AWS nella Guida per l’utente di Gestione dei segreti AWS.

    {"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-----"}
  4. Collega la policy di autorizzazione per recuperare il segreto al ruolo IAM che utilizzi per gestire il cluster Amazon Redshift o il gruppo di lavoro Amazon Redshift serverless. Questa autorizzazione è secretsmanager:GetSecretValue. Per ulteriori informazioni, consulta Configurare l’autenticazione. Per ulteriori informazioni sulla gestione delle policy IAM, consulta Modificare le policy IAM. Specifica lo stesso ruolo IAM nella fase successiva per creare lo schema esterno.

  5. In Redshift esegui il comando SQL per creare lo schema esterno. Utilizzi il tipo di AUTENTICAZIONE mtls. Inoltre puoi specificare l’URI del cluster e l’ARN del segreto in Gestione dei segreti AWS.

    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';

Parametri importanti:

  • IAM_ROLE: il ruolo IAM associato al cluster, per l’importazione in streaming.

  • URI: l’URI del broker bootstrap per il cluster. Tieni presente che, per Amazon MSK, la porta 9094 è specificata per la comunicazione con i broker per la crittografia TLS.

  • SECRET_ARN: l’ARN del segreto di Secrets Manager, contenente il certificato da utilizzare per mTLS.

Abilitazione dell’autenticazione mTLS per uno schema esterno esistente

Se disponi di uno schema esterno esistente che utilizzi per l’importazione in streaming e desideri implementare mTLS per l’autenticazione, puoi eseguire un comando come il seguente, che specifica l’autenticazione mTLS e l’ARN del certificato ACM in ACM.

ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';

In alternativa puoi specificare l’autenticazione mTLS, con riferimento all’ARN del segreto in Gestione dei segreti AWS.

ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';

Per informazioni sul comando ALTER EXTERNAL SCHEMA, consulta ALTER EXTERNAL SCHEMA.