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.
Topik ini berisi bagian-bagian berikut:
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.
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.
Jalankan perintah berikut pada mesin yang memiliki AWS CLI diinstal, menggantikan ClusterARN dengan ARN cluster Anda.
aws kafka get-bootstrap-brokers --cluster-arn clusterARN
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 ExampleTopicNameDi 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"; };
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.confBuat file bernama
kafka.client.truststore.jks
dalam./tmp
direktori.-
Gunakan perintah berikut untuk menyalin file penyimpanan kunci JDK dari
cacerts
folder JVM Anda kekafka.client.truststore.jks
file yang Anda buat pada langkah sebelumnya. GantiJDKFolder
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 Di
bin
direktori instalasi Apache Kafka Anda, buat file properti klien yang disebutclient_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.jksAmbil string broker bootstrap Anda dengan perintah berikut. Ganti
ClusterArn
dengan 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 bernama
BootstrapBrokerStringSaslScram
.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-listBootstrapBrokerStringSaslScram
--topicExampleTopicName
--producer.config client_sasl.propertiesUntuk 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-serverBootstrapBrokerStringSaslScram
--topicExampleTopicName
--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.