View a markdown version of this page

Configuration des prérequis pour MSK Replicator avec des clusters Apache Kafka autogérés - Amazon Managed Streaming for Apache Kafka

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.

Configuration des prérequis pour MSK Replicator avec des clusters Apache Kafka autogérés

Création d'un rôle d'exécution IAM

Créez un rôle IAM avec une politique de confiance pourkafka.amazonaws.com. Joignez la politique AWSMSKReplicatorExecutionRole gérée. La politique gérée accorde aux clusters, aux sujets et aux groupes de consommateurs les autorisations Kafka dont le réplicateur a besoin, mais elle n'inclut AWS Secrets Manager pas les AWS KMS autorisations requises pour l'authentification et les informations d'identification. SASL/SCRAM CMK-encrypted Pour les extraits de politique en ligne à ajouter, consultez. Autorisations SER supplémentaires pour SASL/SCRAM les clés mTL et gérées par le client SASL/OAUTHBEARER

Exemple de politique de confiance :

{ "Statement": [{ "Effect": "Allow", "Principal": {"Service": "kafka.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

Configurer les autorisations des SASL/SCRAM utilisateurs et des ACL

Créez un utilisateur SCRAM dédié sur votre cluster Kafka autogéré. Les autorisations ACL suivantes sont requises :

  1. Lisez et décrivez sur tous les sujets

  2. Lisez et décrivez sur tous les groupes de consommateurs

  3. Décrire une ressource de cluster

Exemples de commandes kafka-acls.sh :

# Grant Read and Describe on all topics kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Read --operation Describe \ --topic '*' # Grant Read and Describe on all consumer groups kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Read --operation Describe \ --group '*' # Grant Describe on cluster kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Describe --cluster

Configurer mTLS sur un cluster autogéré

Configurez un écouteur SSL sur vos courtiers Kafka autogérés avec. ssl.client.auth=required Le truststore du broker doit contenir le certificat CA qui a signé le certificat client que vous utiliserez pour MSK Replicator.

Accordez des autorisations ACL au principal Kafka à partir du nom distinctif (DN) du certificat client. Les autorisations requises sont les suivantes : Lire et décrire sur tous les sujets, Lire et décrire sur tous les groupes de consommateurs et Décrire sur la ressource du cluster.

Configuration SASL/OAUTHBEARER (OAuth) sur un cluster autogéré

Avec SASL/OAUTHBEARER, MSK Replicator obtient un jeton d'accès auprès de votre fournisseur d'identité (IDP) et le présente à votre cluster Kafka autogéré lors de la poignée de main (RFC 7628). SASL/OAUTHBEARER Configurez vos courtiers avec un SASL_SSL écouteur OAUTHBEARER activé et configurez la validation côté courtier des jetons émis par votre IDP. sasl.enabled.mechanisms

Accordez au principal Kafka que votre IDP mappe le jeton d'accès aux autorisations ACL requises par MSK Replicator sur le cluster source.

MSK Replicator prend en charge les mécanismes suivants pour l'acquisition d'un jeton d'accès. Vous en choisissez un lorsque vous créez le réplicateur (voirCreateReplicator Exemples d'API pour les clusters Kafka autogérés).

  • Informations d'identification du client — L'client_credentialsautorisation standard (RFC 6749 §4.4). Vous fournissez une entrée client_id et une client_secret entrée AWS Secrets Manager. Utilisez ce mécanisme avec des IdP tels qu'Okta, Microsoft Entra ID, Keycloak et Google. PingFederate

  • Porteur JWT IAM — La subvention d'assertion du porteur JWT (RFC 7523). MSK Replicator utilise l' AWS identité du rôle d'exécution du service pour obtenir un JWT signé qui est envoyé au point de terminaison du jeton en tant qu'assertion. Aucun secret partagé n'est requis, mais vous pouvez éventuellement fournir les informations d'identification du client si votre IDP exige que le client s'authentifie également.

  • Assertion des informations d'identification du client — L'client_credentialsautorisation avec une assertion client JWT (RFC 7521/7523 §2.2). Le JWT signé du rôle d'exécution du service est utilisé client_assertion pour authentifier le client, sans secret partagé.

Les exigences suivantes s'appliquent au point de terminaison du jeton :

  • Ils tokenEndpointUrl doivent utiliser le schéma HTTPS et spécifier un nom d'hôte (les littéraux d'adresse IP ne sont pas autorisés, afin que la vérification du nom d'hôte TLS puisse être effectuée).

  • Le point de terminaison du jeton doit être accessible depuis les sous-réseaux VPC que vous fournissez au réplicateur. Consultez Configuration de la connectivité réseau.

  • Si votre IDP présente un certificat émis par une autorité de certification privée, stockez-le AWS Secrets Manager et référencez-le tokenEndpointTlsCertificateArn lorsque vous créez le réplicateur.

Configuration du protocole SSL sur un cluster autogéré

Configurez des écouteurs SSL sur vos courtiers. Pour les certificats approuvés publiquement, aucune configuration supplémentaire n'est requise. Pour les certificats privés ou auto-signés, incluez la chaîne de certificats CA complète dans le secret stocké dans AWS Secrets Manager.

Stockez les informations d'identification dans AWS Secrets Manager

Créez un secret de type Autre (non RDS/Redshift) dans AWS Secrets Manager avec les paires clé-valeur appropriées à votre type d'authentification.

Pour SASL/SCRAM :

  1. username— Nom d'utilisateur SCRAM pour le cluster autogéré

  2. password— Mot de passe SCRAM pour le cluster autogéré

  3. certificate— Chaîne de certificats CA (format PEM ; obligatoire pour les certificats private/self signés)

Pour les mTL :

  1. certificate— chaîne de certificats PEM-encoded clients

  2. privateKey— clé PEM-encoded privée

  3. privateKeyPassword— Phrase secrète (Facultatif) pour la clé privée, requise uniquement pour les clés PKCS8 cryptées

Pour SASL/OAUTHBEARER :

Un secret est requis pour le mécanisme d'identification du client et est facultatif pour le support JWT IAM et les mécanismes d'assertion des informations d'identification du client (ne le fournissez que si votre IDP exige que le client s'authentifie également). Le secret est un objet JSON plat composé de paires clé-valeur. MSK Replicator reconnaît les clés suivantes :

  • client_id— L'identifiant du client OAuth. Obligatoire pour le mécanisme d'identification du client.

  • client_secret— Le secret du client OAuth. Obligatoire pour le mécanisme d'identification du client.

  • custom_param.<name>— (Facultatif) Un paramètre de formulaire supplémentaire ajouté à la demande de jeton, pour les IdP qui nécessitent des paramètres supérieurs à la norme OAuth définie. Ajoutez une clé par paramètre (par exemple,custom_param.resource).

  • custom_header.<name>— (Facultatif) Un en-tête HTTP supplémentaire envoyé avec la demande de jeton. Ajoutez une clé par en-tête (par exemple,custom_header.X-Custom).

  • extension.<name>— (Facultatif) Une extension SASL envoyée au courtier Kafka lors de la SASL/OAUTHBEARER poignée de main, pour les fournisseurs Kafka qui ont besoin de paires clé-valeur supplémentaires lors de l'authentification. Ajoutez une clé par extension.

Les clés autres que l'un de ces préfixes client_id et client_secret qui n'utilisent pas l'un de ces préfixes sont ignorées. Voici un exemple de valeur secrète pour le mécanisme des informations d'identification du client :

{ "client_id": "my-oauth-client", "client_secret": "example-client-secret", "custom_param.resource": "urn:example:kafka" }
Note

MSK Replicator rejette custom_param. les entrées dont le nom de paramètre entre en conflit avec un paramètre OAuth standard (par exemple,grant_type,client_id, client_secret client_assertionclient_assertion_type, assertion et). scope Il rejette également custom_header. les entrées restreintes telles que HostAuthorization, etContent-Type.

Configuration de la connectivité réseau

MSK Replicator nécessite une connectivité réseau à votre cluster Kafka autogéré. Options prises en charge :

  • AWS Site-to-Site VPN  : connectez les réseaux locaux à votre VPC via Internet.

  • AWS Connexion directe  : établissez une connexion réseau privée dédiée entre vos locaux et AWS.

Si vous l'utilisez SASL/OAUTHBEARER, le point de terminaison du jeton doit également être accessible depuis les sous-réseaux VPC que vous fournissez au réplicateur. Pour un IDP hébergé sur Internet, cela nécessite généralement une passerelle Internet, une passerelle NAT et des entrées de table de routage ; pour un IDP local ou privé, utilisez AWS Site-to-Site VPN ou Direct Connect. AWS Le point de terminaison du jeton ne doit pas être résolu en une adresse de bouclage, une adresse locale de lien ou AWS une adresse de métadonnées.

Configurer des groupes de sécurité

Assurez-vous que les groupes de sécurité autorisent le trafic entre MSK Replicator et le cluster autogéré sur le port utilisé par votre écouteur d'authentification. Mettez à jour les règles entrantes sur les groupes de sécurité VPC et les règles sortantes sur le pare-feu de cluster autogéré.