Authentification avec MTL pour l'ingestion de flux Redshift à partir de sources Apache Kafka - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Authentification avec MTL pour l'ingestion de flux Redshift à partir de sources Apache Kafka

La sécurité mutuelle de la couche de transport (mTLS) permet à un serveur d'authentifier un client auquel il envoie des informations et au client d'authentifier le serveur. L'avantage de l'utilisation des MTL est de fournir une authentification fiable pour une variété de cas d'utilisation dans plusieurs applications sectorielles. Il s'agit notamment de cas d'utilisation dans les secteurs de la finance, du commerce de détail, du gouvernement et de la santé. En cas d'ingestion du streaming vers Redshift, l'authentification a lieu entre un serveur, qui peut être Amazon MSK, Apache Kafka ou Confluent Cloud, et un cluster provisionné par Amazon Redshift ou un groupe de travail Amazon Redshift Serverless.

Cette rubrique fournit des procédures et des exemples de commandes SQL qui montrent comment créer un schéma externe utilisant mTLS pour s'authentifier entre le client Redshift et n'importe quel serveur Apache Kafka. Les étapes décrites dans cette rubrique complètent l'ensemble des étapes de configuration de l'ingestion du streaming à partir de sources Apache Kafka. Pour de plus amples informations, veuillez consulter Commencer à ingérer du streaming à partir de sources Apache Kafka.

Conditions préalables à l'utilisation des MTL pour l'ingestion du streaming

Cette section fournit les étapes préalables à l'utilisation des MTL pour l'ingestion du streaming avec l'un AWS Certificate Manager ou AWS Secrets Manager l'autre.

À titre d'étape préliminaire, vous devez disposer ou créer une autorité de certification privée (PCA), que vous pouvez utiliser pour émettre des certificats qui, entre autres fonctions, permettent une communication sécurisée via des canaux de communication sécurisés. AWS Private Certificate Authority (Private CA) est un service disponible qui exécute cette fonction. Pour plus d'informations, consultez la section Création d'une autorité de certification privée dans le guide de AWS Private Certificate Authority l'utilisateur. Après avoir créé l'autorité de certification privée, exportez le certificat de l'autorité de certification racine et enregistrez-le dans un fichier portant l'extension .pem.

Pour créer un cluster qui utilise le certificat CA, procédez comme suit :

Amazon MSK
  1. Créez un cluster Amazon MSK qui prend en charge l'authentification client MTLS. Pour plus d'informations sur la configuration d'un cluster Amazon MSK, consultez la section Authentification mutuelle des clients TLS pour Amazon MSK dans le manuel Amazon Managed Streaming for Apache Kafka Developer Guide.

  2. Modifiez les paramètres de sécurité du cluster Amazon MSK, en activant l'authentification client TLS à l'aide de AWS Certificate Manager (ACM) et en sélectionnant le AWS Private CA (PCA) que vous avez créé précédemment. Pour plus d'informations, consultez la section Mise à jour des paramètres de sécurité d'un cluster dans le manuel Amazon Managed Streaming for Apache Kafka Developer Guide.

Confluent Cloud
  1. Créez un cluster Confluent Cloud dédié, de préférence Région AWS identique à votre cluster Amazon Redshift. Pour plus d'informations sur la création d'un cluster Confluent Cloud, voir Création d'un cluster Kafka dans Confluent Cloud.

  2. Téléchargez le fichier pem du certificat AWS Private CA racine CA exporté que vous avez créé précédemment. Pour plus d'informations, consultez Gérer l'autorité de certification pour l'authentification mTLS pour Confluent Cloud. Confluent Cloud utilise ce certificat pour vérifier le certificat client Amazon Redshift.

Utilisation de MTL pour l'ingestion du streaming avec AWS Certificate Manager

La procédure suivante explique comment configurer les MTL pour l'ingestion du streaming Redshift en AWS Certificate Manager utilisant (ACM) pour le stockage et la gestion des certificats :

  1. Demandez un certificat privé via ACM. Dans ce cas, sélectionnez le PCA que vous avez créé dans la section Prérequis comme autorité de certification. ACM stocke le certificat signé et la clé privée jointe pour une communication sécurisée. Pour plus d'informations sur la gestion des certificats avec ACM, consultez la section Émission et gestion des certificats dans le guide de l'AWS Certificate Manager utilisateur.

  2. Pour le rôle IAM que vous utilisez pour gérer votre cluster Redshift ou votre groupe de travail Amazon Redshift Serverless, attachez l'autorisation d'exporter le certificat, qui est acm :. ExportCertificate Pour plus d'informations sur la configuration des ressources IAM nécessaires à l'ingestion du streaming, consultezConfiguration de l'ingestion du streaming depuis Kafka. Spécifiez le même rôle IAM à l'étape suivante pour créer le schéma externe.

    Note

    Demandes pour AWS Certificate Manager exiger une passerelle Internet (IGW) ou une passerelle NAT (NGW) dans votre VPC. Si votre VPC ne possède ni IGW ni NGW, procédez comme suit :

    • Utilisez Secrets Manager au lieu d'ACM pour stocker vos certificats.

    • Attachez un point de terminaison VPC Secrets Manager à votre VPC.

    Pour plus d'informations sur l'utilisation de Secrets Manager avec MTL pour l'ingestion du streaming, voir Utilisation de MTL pour l'ingestion du streaming avec AWS Secrets Manager ci-dessous.

  3. Obtenez l'URI du broker bootstrap pour le cluster Amazon MSK, Apache Kafka ou Confluent Cloud. Pour plus d'informations sur l'obtention de l'URI du courtier bootstrap pour Amazon MSK, consultez Getting the bootstrap brokers for an Amazon MSK cluster dans le manuel Amazon Managed Streaming for Apache Kafka Developer Guide.

  4. Exécutez une commande SQL telle que l'exemple suivant pour créer un schéma externe qui mappe le cluster à un schéma externe Redshift, en utilisant. 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';

    Paramètres importants :

    • IAM_ROLE — Rôle IAM associé au cluster, pour l'ingestion du streaming.

    • URI — L'URI du courtier bootstrap pour le cluster. Notez que pour Amazon MSK, le port 9094 est spécifié pour communiquer avec les courtiers pour le chiffrement TLS.

    • AUTHENTICATION_ARN — L'ARN du certificat ACM. L'ARN est disponible dans la console ACM lorsque vous choisissez le certificat émis.

Après avoir effectué ces étapes de configuration, vous pouvez créer une vue matérialisée Redshift qui fait référence au schéma défini dans l'exemple, puis utiliser REFRESH MATERIALIZED VIEW pour diffuser des données. Pour de plus amples informations, veuillez consulter Commencer à ingérer du streaming à partir de sources Apache Kafka.

Utilisation de MTL pour l'ingestion du streaming avec AWS Secrets Manager

Vous pouvez configurer les MTL pour l'ingestion du streaming Redshift en les AWS Secrets Manager utilisant pour la gestion des certificats si vous ne souhaitez pas référencer le certificat dans. AWS Certificate Manager Les étapes suivantes décrivent comment configurer les MTLs à l'aide de Secrets Manager.

  1. Créez une demande de signature de certificat et une clé privée avec l'outil de votre choix. Vous pouvez ensuite utiliser la demande de signature pour générer un certificat signé, en utilisant la même autorité de certification AWS privée (PCA) que celle que vous avez utilisée pour générer le certificat pour le cluster. Pour plus d'informations sur l'émission d'un certificat, consultez IssueCertificatela référence de l'AWS Private Certificate Authority API.

  2. Extrayez le certificat à l'aide de AWS Private Certificate Authority. Pour plus d'informations, consultez la section Récupérer un certificat privé dans le guide de AWS Private Certificate Authority l'utilisateur.

  3. Stockez le certificat et la clé privée générés à l'étape précédente dans AWS Secrets Manager. Choisissez Other type of secret et utilisez le format de texte brut. Les paires clé-valeur doivent être au format{"certificate":"<cert value>","privateKey":"<pkey value>"}, comme dans l'exemple suivant. Pour plus d'informations sur la création et la gestion de secrets dans AWS Secrets Manager, voir Création et gestion de secrets AWS Secrets Manager dans le Guide de AWS Secrets Manager l'utilisateur.

    {"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. Joignez la politique d'autorisation pour récupérer le secret au rôle IAM que vous utilisez pour gérer votre cluster Amazon Redshift ou votre groupe de travail Amazon Redshift Serverless. Cette autorisation estsecretsmanager:GetSecretValue. Pour de plus amples informations, veuillez consulter Configurer l'authentification. Pour plus d'informations sur la gestion des politiques IAM, voir Modifier les politiques IAM. Spécifiez le même rôle IAM à l'étape suivante pour créer le schéma externe.

  5. Dans Redshift, exécutez la commande SQL pour créer le schéma externe. Vous utilisez le type d'AUTHENTIFICATIONmtls. Vous spécifiez également l'URI du cluster et l'ARN secret dans AWS Secrets Manager.

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

Paramètres importants :

  • IAM_ROLE — Rôle IAM associé au cluster, pour l'ingestion du streaming.

  • URI — L'URI du courtier bootstrap pour le cluster. Notez que pour Amazon MSK, le port 9094 est spécifié pour communiquer avec les courtiers pour le chiffrement TLS.

  • SECRET_ARN — L'ARN du secret provenant de Secrets Manager, contenant le certificat à utiliser pour les MTL.

Activation de l'authentification mTLS pour un schéma externe existant

Si vous utilisez un schéma externe pour l'ingestion du streaming et que vous souhaitez implémenter le protocole TLS mutuel pour l'authentification, vous pouvez exécuter une commande telle que la suivante, qui spécifie l'authentification mTLS et l'ARN du certificat ACM dans ACM.

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

Vous pouvez également spécifier l'authentification mTLS, en référence à l'ARN secret dans AWS Secrets Manager.

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