Otentikasi kredensi masuk dengan Secrets Manager AWS - Amazon Managed Streaming untuk Apache Kafka

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

Otentikasi kredensi masuk dengan Secrets Manager AWS

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.

Cara kerjanya

Otentikasi kredensyal masuk untuk Amazon MSK menggunakan otentikasi SASL/SCRAM (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 tersebut.

SASL/SCRAM didefinisikan dalam RFC 5802. SCRAM menggunakan algoritma hashing aman, dan tidak mengirimkan kredensyal masuk plaintext antara klien dan server.

catatan

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

Menyiapkan otentikasi SASL/SCRAM untuk klaster MSK Amazon

Untuk mengatur AWS rahasia di Secrets Manager, ikuti tutorial Creating and Retrieving a Secret di Panduan Pengguna AWS Secrets Manager.

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_.

  • 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 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 BatchAssociateScramSecretoperasinya.

    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.

    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

Setelah Anda membuat rahasia dan mengaitkannya dengan cluster Anda, Anda dapat menghubungkan klien Anda ke cluster. Contoh langkah berikut menunjukkan cara menghubungkan klien ke cluster yang menggunakan otentikasi SASL/SCRAM, dan cara menghasilkan dan mengkonsumsi dari topik contoh.

  1. Jalankan perintah berikut pada mesin yang memiliki AWS CLI diinstal, menggantikan ClusterARN dengan ARN cluster Anda.

    aws kafka get-bootstrap-brokers --cluster-arn clusterARN
  2. Untuk membuat contoh topik, jalankan perintah berikut, ganti BootstrapServerString dengan salah satu titik akhir broker yang Anda peroleh pada langkah sebelumnya.

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapServerString --replication-factor 3 --partitions 1 --topic ExampleTopicName
  3. 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"; };
  4. 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
  5. Buat file bernama kafka.client.truststore.jks dalam ./tmp direktori.

  6. 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/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks
  7. 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 ssl.truststore.location=<path-to-keystore-file>/kafka.client.truststore.jks
  8. Ambil string broker bootstrap Anda dengan perintah berikut. Ganti ClusterArndengan Nama Sumber Daya Amazon (ARN) klaster Anda:

    aws kafka get-bootstrap-brokers --cluster-arn ClusterArn

    Dari hasil JSON perintah, simpan nilai yang terkait dengan string bernamaBootstrapBrokerStringSaslScram.

  9. Untuk menghasilkan contoh topik yang Anda buat, jalankan perintah berikut di mesin klien Anda. Ganti BootstrapBrokerStringSaslScram dengan nilai yang Anda ambil pada langkah sebelumnya.

    <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringSaslScram --topic ExampleTopicName --producer.config client_sasl.properties
  10. Untuk mengkonsumsi dari topik yang Anda buat, jalankan perintah berikut di mesin klien Anda. Ganti BootstrapBrokerStringSaslScram dengan nilai yang Anda peroleh sebelumnya.

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

Bekerja dengan pengguna

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 ACL

Untuk cluster yang menggunakan ZooKeeper mode, kami menyarankan Anda membatasi akses ke ZooKeeper node Anda untuk mencegah pengguna memodifikasi ACL. Untuk informasi selengkapnya, lihat Mengontrol akses ke Apache ZooKeeper.

Batasan

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.

  • Anda tidak dapat menggunakan kunci KMS asimetris dengan Secrets Manager.

  • Anda dapat mengaitkan hingga 10 rahasia dengan cluster sekaligus menggunakan BatchAssociateScramSecretoperasi.

  • Nama rahasia yang terkait dengan cluster MSK Amazon harus memiliki awalan AmazonMSK_.

  • Rahasia yang terkait dengan kluster MSK Amazon harus berada di akun dan AWS wilayah Amazon Web Services yang sama dengan cluster.