

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.

# Configurer SASL/SCRAM l'authentification pour un cluster Amazon MSK
<a name="msk-password-tutorial"></a>

Pour configurer un secret dans AWS Secrets Manager, suivez le didacticiel de [création et de récupération d'un secret figurant](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html) dans le [guide de l'utilisateur de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).

Tenez compte des exigences suivantes lors de la création d'un secret pour un cluster Amazon MSK :
+ Choisissez **Autre type de secrets (p. ex. clé d'API)** pour le type de secret.
+ Votre nom secret doit commencer par le préfixe **AmazonMSK\$1**.
+ Vous devez soit utiliser une AWS KMS clé personnalisée existante, soit créer une nouvelle AWS KMS clé personnalisée pour votre secret. Secrets Manager utilise la AWS KMS clé par défaut pour un secret. 
**Important**  
Un secret créé avec la AWS KMS clé par défaut ne peut pas être utilisé avec un cluster Amazon MSK.
+ Vos informations d'identification de connexion doivent être au format suivant pour saisir des paires clé-valeur à l'aide de l'option **Texte brut**.

  ```
  {
    "username": "alice",
    "password": "alice-secret"
  }
  ```
+ Enregistrez la valeur ARN (Amazon Resource Name) de votre secret. 
+ 
**Important**  
Vous ne pouvez pas associer un secret de Secrets Manager à un cluster qui dépasse les limites décrites dans [Dimensionnez correctement votre cluster : nombre de partitions par courtier standard](bestpractices.md#partitions-per-broker).
+ Si vous utilisez le AWS CLI pour créer le secret, spécifiez un ID de clé ou un ARN pour le `kms-key-id` paramètre. Ne spécifiez pas d'alias.
+ Pour associer le secret à votre cluster, utilisez soit la console Amazon MSK, soit l'[ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)opération. 
**Important**  
Lorsque vous associez un secret à un cluster, Amazon MSK associe une politique de ressource au secret qui permet à votre cluster d'accéder aux valeurs secrètes que vous avez définies et de les lire. Vous ne devez pas modifier cette politique de ressource. Cela peut empêcher votre cluster d'accéder à votre secret. Si vous apportez des modifications à la politique de ressources Secrets et/ou à la clé KMS utilisée pour le chiffrement secret, assurez-vous de réassocier les secrets à votre cluster MSK. Cela permettra à votre cluster de continuer à accéder à votre secret.

  L'exemple d'entrée JSON suivant pour l'opération `BatchAssociateScramSecret` associe un secret à un cluster :

  ```
  {
    "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
    "secretArnList": [
      "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
    ]
  }
  ```

# Connexion à votre cluster à l'aide des informations d'identification de connexion
<a name="msk-password-tutorial-connect"></a>

Après avoir créé un secret et l'avoir associé à votre cluster, vous pouvez connecter votre client au cluster. La procédure suivante montre comment connecter un client à un cluster utilisant l' SASL/SCRAM authentification. Il montre également comment produire et consommer à partir d'un exemple de sujet.

**Topics**
+ [Connexion d'un client au cluster à l'aide de l' SASL/SCRAM authentification](#w2aab9c13c29c17c13c11b9b7)
+ [Dépannage des problèmes de connexion](#msk-password-tutorial-connect-troubleshooting)

## Connexion d'un client au cluster à l'aide de l' SASL/SCRAM authentification
<a name="w2aab9c13c29c17c13c11b9b7"></a>

1. Exécutez la commande suivante sur une machine déjà AWS CLI installée. *clusterARN*Remplacez-le par l'ARN de votre cluster.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn clusterARN
   ```

   À partir du résultat JSON de cette commande, enregistrez la valeur associée à la chaîne nommée`BootstrapBrokerStringSaslScram`. Vous utiliserez cette valeur dans les étapes suivantes.

1. Sur votre ordinateur client, créez un fichier de configuration JAAS contenant les informations d'identification d'utilisateur stockées dans votre secret. Par exemple, pour l'utilisateur **alice**, créez un fichier appelé `users_jaas.conf` avec le contenu suivant.

   ```
   KafkaClient {
      org.apache.kafka.common.security.scram.ScramLoginModule required
      username="alice"
      password="alice-secret";
   };
   ```

1. Utilisez la commande suivante pour exporter votre fichier de configuration JAAS en tant que paramètre d'environnement `KAFKA_OPTS`.

   ```
   export KAFKA_OPTS=-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf
   ```

1. Créez un fichier nommé `kafka.client.truststore.jks` dans un répertoire `/tmp`.

1. (Facultatif) Utilisez la commande suivante pour copier le fichier de stockage de clés JDK de votre `cacerts` dossier JVM dans le `kafka.client.truststore.jks` fichier que vous avez créé à l'étape précédente. *JDKFolder*Remplacez-le par le nom du dossier JDK de votre instance. Par exemple, votre dossier JDK peut être nommé `java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64`.

   ```
   cp /usr/lib/jvm/JDKFolder/lib/security/cacerts /tmp/kafka.client.truststore.jks
   ```

1. Dans le répertoire `bin` de votre installation d'Apache Kafka, créez un fichier de propriétés client appelé `client_sasl.properties` avec le contenu suivant. Ce fichier définit le mécanisme et le protocole SASL.

   ```
   security.protocol=SASL_SSL
   sasl.mechanism=SCRAM-SHA-512
   ```

1. Pour créer un exemple de rubrique, exécutez la commande suivante. *BootstrapBrokerStringSaslScram*Remplacez-la par la chaîne bootstrap broker que vous avez obtenue à l'étape 1 de cette rubrique.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBrokerStringSaslScram --command-config <path-to-client-properties>/client_sasl.properties --replication-factor 3 --partitions 1 --topic ExampleTopicName
   ```

1. Pour produire un exemple de rubrique que vous avez créé, exécutez la commande suivante sur votre ordinateur client. *BootstrapBrokerStringSaslScram*Remplacez-la par la chaîne du broker bootstrap que vous avez récupérée à l'étape 1 de cette rubrique.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringSaslScram --topic ExampleTopicName --producer.config client_sasl.properties
   ```

1. Pour consommer à partir de la rubrique que vous avez créée, exécutez la commande suivante sur votre ordinateur client. *BootstrapBrokerStringSaslScram*Remplacez-la par la chaîne bootstrap broker que vous avez obtenue à l'étape 1 de cette rubrique.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --from-beginning --consumer.config client_sasl.properties
   ```

## Dépannage des problèmes de connexion
<a name="msk-password-tutorial-connect-troubleshooting"></a>

Lorsque vous exécutez les commandes du client Kafka, vous pouvez rencontrer des erreurs de mémoire Java Heap, en particulier lorsque vous travaillez avec des sujets ou des ensembles de données volumineux. Ces erreurs se produisent parce que les outils Kafka s'exécutent en tant qu'applications Java avec des paramètres de mémoire par défaut qui peuvent être insuffisants pour votre charge de travail.

Pour résoudre `Out of Memory Java Heap` les erreurs, vous pouvez augmenter la taille du segment de mémoire Java en modifiant la variable d'`KAFKA_OPTS`environnement pour inclure les paramètres de mémoire.

L'exemple suivant définit la taille maximale du tas à 1 Go ()`-Xmx1G`. Vous pouvez ajuster cette valeur en fonction de la mémoire système disponible et de vos exigences.

```
export KAFKA_OPTS="-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf -Xmx1G"
```

Si vous abordez des sujets volumineux, pensez à utiliser des paramètres basés sur le temps ou le décalage plutôt que de limiter l'utilisation `--from-beginning` de la mémoire :

```
<path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --max-messages 1000 --consumer.config client_sasl.properties
```