

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

# Otentikasi kredensyal masuk dengan Secrets Manager AWS
<a name="msk-password"></a>

Anda dapat mengontrol akses ke kluster MSK Amazon menggunakan kredensyal masuk yang disimpan dan diamankan menggunakan Secrets Manager. AWS Menyimpan kredensyal pengguna di Secrets Manager mengurangi overhead otentikasi klaster seperti mengaudit, memperbarui, dan memutar kredensyal. Secrets Manager juga memungkinkan Anda berbagi kredensyal pengguna di seluruh cluster.

Setelah Anda mengaitkan rahasia dengan kluster MSK, MSK menyinkronkan data kredensi secara berkala.

**Topics**
+ [Cara kerja autentikasi kredensyal masuk](msk-password-howitworks.md)
+ [Menyiapkan SASL/SCRAM otentikasi untuk kluster MSK Amazon](msk-password-tutorial.md)
+ [Bekerja dengan pengguna](msk-password-users.md)
+ [Keterbatasan saat menggunakan rahasia SCRAM](msk-password-limitations.md)

# Cara kerja autentikasi kredensyal masuk
<a name="msk-password-howitworks"></a>

Autentikasi kredensyal masuk untuk Amazon MSK SASL/SCRAM menggunakan otentikasi (Otentikasi Sederhana dan Lapisan Keamanan/Mekanisme Respons Tantangan Asin). Untuk menyiapkan autentikasi kredensyal masuk untuk klaster, Anda membuat sumber daya Rahasia di Secrets [Manager, dan mengaitkan kredensyal masuk dengan AWS rahasia](https://docs.aws.amazon.com//secretsmanager/?id=docs_gateway) tersebut. 

[SASL/SCRAM didefinisikan dalam RFC 5802.](https://tools.ietf.org/html/rfc5802) SCRAM menggunakan algoritma hashing aman, dan tidak mengirimkan kredensyal login plaintext antara klien dan server. 

**catatan**  
Saat Anda mengatur SASL/SCRAM otentikasi untuk klaster Anda, Amazon MSK mengaktifkan enkripsi TLS untuk semua lalu lintas antara klien dan broker.

# 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
```

# Bekerja dengan pengguna
<a name="msk-password-users"></a>

**Membuat pengguna:** Anda membuat pengguna dalam rahasia Anda sebagai pasangan nilai kunci. Saat Anda menggunakan opsi **Plaintext** di konsol Secrets Manager, Anda harus menentukan data kredensi masuk dalam format berikut.

```
{
  "username": "alice",
  "password": "alice-secret"
}
```

**Mencabut akses pengguna:** Untuk mencabut kredensyal pengguna untuk mengakses kluster, sebaiknya Anda menghapus atau menerapkan ACL di klaster terlebih dahulu, lalu memisahkan rahasianya. Ini karena hal-hal berikut:
+ Menghapus pengguna tidak menutup koneksi yang ada.
+ Perubahan pada rahasia Anda membutuhkan waktu hingga 10 menit untuk disebarkan.

Untuk informasi tentang menggunakan ACL dengan Amazon MSK, lihat. [Apache Kafka ACLs](msk-acls.md)

Untuk cluster yang menggunakan ZooKeeper mode, kami menyarankan Anda membatasi akses ke ZooKeeper node Anda untuk mencegah pengguna memodifikasi. ACLs Untuk informasi selengkapnya, lihat [Kontrol akses ke ZooKeeper node Apache di kluster MSK Amazon Anda](zookeeper-security.md).

# Keterbatasan saat menggunakan rahasia SCRAM
<a name="msk-password-limitations"></a>

Perhatikan batasan berikut saat menggunakan rahasia SCRAM:
+ Amazon MSK hanya mendukung otentikasi SCRAM-SHA-512.
+ Cluster MSK Amazon dapat memiliki hingga 1000 pengguna.
+ Anda harus menggunakan sebuah AWS KMS key dengan Rahasia Anda. Anda tidak dapat menggunakan Rahasia yang menggunakan kunci enkripsi Secrets Manager default dengan Amazon MSK. Untuk informasi tentang membuat kunci KMS, lihat [Membuat kunci KMS enkripsi simetris](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk).
+ Anda tidak dapat menggunakan kunci KMS asimetris dengan Secrets Manager.
+ Anda dapat mengaitkan hingga 10 rahasia dengan cluster sekaligus menggunakan [ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operasi.
+ **Nama rahasia yang terkait dengan cluster MSK Amazon harus memiliki awalan AmazonMSK\$1.**
+ Rahasia yang terkait dengan kluster MSK Amazon harus berada di akun dan AWS wilayah Amazon Web Services yang sama dengan cluster.