

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menyiapkan SASL/SCRAM otentikasi untuk kluster MSK Amazon
<a name="msk-password-tutorial"></a>

Untuk mengatur AWS rahasia di Secrets Manager, ikuti tutorial [Membuat dan Mengambil Rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html) di [Panduan Pengguna AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).

Perhatikan persyaratan berikut saat membuat rahasia untuk cluster MSK Amazon:
+ Pilih **Jenis rahasia lainnya (misalnya kunci API)** untuk tipe rahasia.
+ Nama rahasia Anda harus dimulai dengan awalan **AmazonMSK\$1**.
+ Anda harus menggunakan AWS KMS kunci kustom yang ada atau membuat AWS KMS kunci khusus baru untuk rahasia Anda. Secrets Manager menggunakan AWS KMS kunci default untuk rahasia secara default. 
**penting**  
Rahasia yang dibuat dengan AWS KMS kunci default tidak dapat digunakan dengan kluster MSK Amazon.
+ **Data kredensi login Anda harus dalam format berikut untuk memasukkan pasangan nilai kunci menggunakan opsi Plaintext.**

  ```
  {
    "username": "alice",
    "password": "alice-secret"
  }
  ```
+ Catat nilai ARN (Amazon Resource Name) untuk rahasia Anda. 
+ 
**penting**  
Anda tidak dapat mengaitkan rahasia Secrets Manager dengan klaster yang melebihi batas yang dijelaskan dalam[Ukuran kluster Anda dengan benar: Jumlah partisi per pialang Standar](bestpractices.md#partitions-per-broker).
+ Jika Anda menggunakan AWS CLI untuk membuat rahasia, tentukan ID kunci atau ARN untuk parameter. `kms-key-id` Jangan tentukan alias.
+ Untuk mengaitkan rahasia dengan cluster Anda, gunakan konsol MSK Amazon, atau [ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operasinya. 
**penting**  
Saat Anda mengaitkan rahasia dengan klaster, Amazon MSK melampirkan kebijakan sumber daya ke rahasia yang memungkinkan klaster Anda mengakses dan membaca nilai rahasia yang Anda tetapkan. Anda tidak boleh mengubah kebijakan sumber daya ini. Melakukannya dapat mencegah cluster Anda mengakses rahasia Anda. Jika Anda membuat perubahan pada kebijakan sumber daya Rahasia dan/atau kunci KMS yang digunakan untuk enkripsi rahasia, pastikan Anda mengaitkan kembali rahasia ke kluster MSK Anda. Ini akan memastikan bahwa cluster Anda dapat terus mengakses rahasia Anda.

  Contoh input JSON berikut untuk `BatchAssociateScramSecret` operasi mengaitkan rahasia dengan 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"
    ]
  }
  ```

# Menghubungkan ke klaster Anda dengan kredensyal masuk
<a name="msk-password-tutorial-connect"></a>

Setelah Anda membuat rahasia dan mengaitkannya dengan cluster Anda, Anda dapat menghubungkan klien Anda ke cluster. Prosedur berikut menunjukkan cara menghubungkan klien ke cluster yang menggunakan SASL/SCRAM otentikasi. Ini juga menunjukkan bagaimana memproduksi dan mengkonsumsi dari topik contoh.

**Topics**
+ [Menghubungkan klien ke cluster menggunakan SASL/SCRAM otentikasi](#w2aab9c13c29c17c13c11b9b7)
+ [Memecahkan masalah koneksi](#msk-password-tutorial-connect-troubleshooting)

## Menghubungkan klien ke cluster menggunakan SASL/SCRAM otentikasi
<a name="w2aab9c13c29c17c13c11b9b7"></a>

1. Jalankan perintah berikut pada mesin yang telah AWS CLI diinstal. Ganti *clusterARN* dengan ARN cluster Anda.

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

   Dari hasil JSON dari perintah ini, simpan nilai yang terkait dengan string bernama`BootstrapBrokerStringSaslScram`. Anda akan menggunakan nilai ini di langkah selanjutnya.

1. Di mesin klien Anda, buat file konfigurasi JAAS yang berisi kredensyal pengguna yang disimpan dalam rahasia Anda. Misalnya, untuk pengguna **alice**, buat file yang dipanggil `users_jaas.conf` dengan konten berikut.

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

1. Gunakan perintah berikut untuk mengekspor file konfigurasi JAAS Anda sebagai parameter `KAFKA_OPTS` lingkungan.

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

1. Buat file bernama `kafka.client.truststore.jks` dalam `/tmp` direktori.

1. (Opsional) Gunakan perintah berikut untuk menyalin file penyimpanan kunci JDK dari `cacerts` folder JVM Anda ke `kafka.client.truststore.jks` file yang Anda buat pada langkah sebelumnya. Ganti *JDKFolder* dengan nama folder JDK pada instance Anda. Misalnya, folder JDK Anda mungkin diberi nama. `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. Di `bin` direktori instalasi Apache Kafka Anda, buat file properti klien yang disebut `client_sasl.properties` dengan konten berikut. File ini mendefinisikan mekanisme dan protokol SASL.

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

1. Untuk membuat contoh topik, jalankan perintah berikut. Ganti *BootstrapBrokerStringSaslScram* dengan string broker bootstrap yang Anda peroleh di langkah 1 topik ini.

   ```
   <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. Untuk menghasilkan contoh topik yang Anda buat, jalankan perintah berikut di mesin klien Anda. Ganti *BootstrapBrokerStringSaslScram* dengan string broker bootstrap yang Anda ambil di langkah 1 topik ini.

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

1. Untuk mengkonsumsi dari topik yang Anda buat, jalankan perintah berikut di mesin klien Anda. Ganti *BootstrapBrokerStringSaslScram* dengan string broker bootstrap yang Anda peroleh di langkah 1 topik ini.

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

## Memecahkan masalah koneksi
<a name="msk-password-tutorial-connect-troubleshooting"></a>

Saat menjalankan perintah klien Kafka, Anda mungkin mengalami kesalahan memori heap Java, terutama saat bekerja dengan topik atau kumpulan data besar. Kesalahan ini terjadi karena alat Kafka berjalan sebagai aplikasi Java dengan pengaturan memori default yang mungkin tidak cukup untuk beban kerja Anda.

Untuk mengatasi `Out of Memory Java Heap` kesalahan, Anda dapat meningkatkan ukuran heap Java dengan memodifikasi variabel `KAFKA_OPTS` lingkungan untuk menyertakan pengaturan memori.

Contoh berikut menetapkan ukuran heap maksimum untuk 1GB ()`-Xmx1G`. Anda dapat menyesuaikan nilai ini berdasarkan memori dan persyaratan sistem yang tersedia.

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

Untuk mengkonsumsi topik besar, pertimbangkan untuk menggunakan parameter berbasis waktu atau berbasis offset alih-alih membatasi penggunaan `--from-beginning` memori:

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