

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurar a SASL/SCRAM autenticação para um cluster Amazon MSK
<a name="msk-password-tutorial"></a>

Para configurar um segredo no AWS Secrets Manager, siga o tutorial [Criando e recuperando um segredo](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html) no [Guia do usuário do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).

Observe os seguintes requisitos ao criar um segredo para um cluster do Amazon MSK:
+ Escolha **Outros tipos de segredos (p. ex., chave de API)** para o tipo de segredo.
+ O nome do segredo deve começar com o prefixo **AmazonMSK\$1**.
+ Você deve usar uma AWS KMS chave personalizada existente ou criar uma nova AWS KMS chave personalizada para seu segredo. O Secrets Manager usa a AWS KMS chave padrão para um segredo por padrão. 
**Importante**  
Um segredo criado com a AWS KMS chave padrão não pode ser usado com um cluster Amazon MSK.
+ Seus dados de credencial de acesso devem estar no formato a seguir para que seja possível inserir pares de valor/chave usando a opção **Texto simples**.

  ```
  {
    "username": "alice",
    "password": "alice-secret"
  }
  ```
+ Registre o valor do ARN (nome do recurso da Amazon) do seu segredo. 
+ 
**Importante**  
Você não pode associar um segredo do Secrets Manager a um cluster que exceda os limites descritos em [Dimensione seu cluster adequadamente: número de partições por agente Standard](bestpractices.md#partitions-per-broker).
+ Se você usar o AWS CLI para criar o segredo, especifique um ID de chave ou ARN para o `kms-key-id` parâmetro. Não especifique um alias.
+ Para associar o segredo ao seu cluster, use o console Amazon MSK ou a [ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operação. 
**Importante**  
Quando você associa um segredo a um cluster, o Amazon MSK anexa uma política de recursos ao segredo, permitindo que seu cluster acesse e leia os valores secretos que você definiu. Você não deve modificar essa política de recursos. Isso pode impedir que seu cluster acesse seu segredo. Se você fizer alguma alteração na política de recursos de segredos e/ou na chave KMS usada para criptografia secreta, certifique-se de associar novamente os segredos ao seu cluster do MSK. Isso garantirá que seu cluster conseguirá continuar a acessar seu segredo.

  O exemplo de entrada JSON a seguir para a operação `BatchAssociateScramSecret` associa um segredo a um 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"
    ]
  }
  ```

# Como estabelecer conexão com o seu cluster usando credenciais de acesso
<a name="msk-password-tutorial-connect"></a>

Após criar um segredo e associá-lo ao cluster, você poderá conectar o cliente ao cluster. O procedimento a seguir demonstra como conectar um cliente a um cluster que usa SASL/SCRAM autenticação. Também mostra como produzir e consumir a partir de um tópico de exemplo.

**Topics**
+ [Conectando um cliente ao cluster usando SASL/SCRAM autenticação](#w2aab9c13c29c17c13c11b9b7)
+ [Solução de problemas de conexão](#msk-password-tutorial-connect-troubleshooting)

## Conectando um cliente ao cluster usando SASL/SCRAM autenticação
<a name="w2aab9c13c29c17c13c11b9b7"></a>

1. Execute o comando a seguir em uma máquina que tenha sido AWS CLI instalada. *clusterARN*Substitua pelo ARN do seu cluster.

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

   No JSON resultante deste comando, salve o valor associado à string `BootstrapBrokerStringSaslScram`. Você usará esse valor em etapas subsequentes.

1. Em sua máquina cliente, crie um arquivo de configuração JAAS contendo as credenciais de usuário armazenadas em seu segredo. Por exemplo, para o usuário **alice**, crie um arquivo chamado `users_jaas.conf` com o conteúdo a seguir.

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

1. Use o comando a seguir para exportar seu arquivo de configuração JAAS como um parâmetro de ambiente `KAFKA_OPTS`.

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

1. Crie um arquivo chamado `kafka.client.truststore.jks` em um diretório `/tmp`.

1. (Opcional) Use o comando a seguir para copiar o arquivo de armazenamento de chaves do JDK da sua pasta de `cacerts` do JVM para o arquivo `kafka.client.truststore.jks` que você criou na etapa anterior. *JDKFolder*Substitua pelo nome da pasta JDK na sua instância. Por exemplo, sua pasta do JDK pode ter o nome `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. No diretório `bin` da instalação do Apache Kafka, crie um arquivo de propriedades do cliente chamado `client_sasl.properties` com o conteúdo a seguir. Esse arquivo define o mecanismo e o protocolo SASL.

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

1. Para criar um tópico de exemplo, execute o comando a seguir. *BootstrapBrokerStringSaslScram*Substitua pela string do bootstrap broker que você obteve na etapa 1 deste tópico.

   ```
   <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. Para produzir o tópico de exemplo que você criou, execute o seguinte comando em sua máquina cliente. *BootstrapBrokerStringSaslScram*Substitua pela string do bootstrap broker que você recuperou na etapa 1 deste tópico.

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

1. Para consumir do tópico que você criou, execute o comando a seguir em sua máquina cliente. *BootstrapBrokerStringSaslScram*Substitua pela string do bootstrap broker que você obteve na etapa 1 deste tópico.

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

## Solução de problemas de conexão
<a name="msk-password-tutorial-connect-troubleshooting"></a>

Ao executar comandos do cliente do Kafka, você pode encontrar erros de memória da pilha de Java, especialmente ao trabalhar com tópicos ou conjuntos de dados grandes. Esses erros ocorrem porque as ferramentas do Kafka são executadas como aplicações Java com configurações de memória padrão que podem ser insuficientes para sua workload.

Para resolver erros de `Out of Memory Java Heap`, você pode aumentar o tamanho da pilha de Java modificando a variável de ambiente `KAFKA_OPTS` para incluir configurações de memória.

O exemplo a seguir define o tamanho máximo da pilha como 1 GB (`-Xmx1G`). Você pode ajustar esse valor com base na memória e nos requisitos disponíveis do sistema.

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

Para consumir tópicos extensos, considere usar parâmetros baseados em tempo ou em deslocamento em vez de `--from-beginning` para limitar o uso de memória:

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