Otentikasi TLS timbal balik - 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 TLS timbal balik

Anda dapat mengaktifkan otentikasi klien dengan TLS untuk koneksi dari aplikasi Anda ke broker MSK Amazon Anda. Untuk menggunakan otentikasi klien, Anda memerlukan file AWS Private CA. AWS Private CA Bisa sama dengan cluster Anda Akun AWS , atau di akun yang berbeda. Untuk informasi tentang AWS Private CA s, lihat Membuat dan Mengelola a AWS Private CA.

catatan

Otentikasi TLS saat ini tidak tersedia di Wilayah Beijing dan Ningxia.

Amazon MSK tidak mendukung daftar pencabutan sertifikat (CRL). Untuk mengontrol akses ke topik klaster Anda atau memblokir sertifikat yang disusupi, gunakan Apache Kafka ACL dan grup keamanan. AWS Untuk informasi tentang menggunakan Apache Kafka ACL, lihat. Apache Kafka ACL

Untuk membuat cluster yang mendukung otentikasi klien

Prosedur ini menunjukkan kepada Anda cara mengaktifkan otentikasi klien menggunakan file. AWS Private CA

catatan

Kami sangat merekomendasikan penggunaan independen AWS Private CA untuk setiap cluster MSK ketika Anda menggunakan TLS timbal balik untuk mengontrol akses. Melakukannya akan memastikan bahwa sertifikat TLS yang ditandatangani oleh PCA hanya mengautentikasi dengan satu cluster MSK.

  1. Buat file bernama clientauthinfo.json dengan isi berikut ini. Ganti Private-CA-ARN dengan ARN PCA Anda.

    { "Tls": { "CertificateAuthorityArnList": ["Private-CA-ARN"] } }
  2. Buat file bernama brokernodegroupinfo.json seperti yang dijelaskan dalamMembuat cluster menggunakan AWS CLI.

  3. Otentikasi klien mengharuskan Anda juga mengaktifkan enkripsi dalam perjalanan antara klien dan broker. Buat file bernama encryptioninfo.json dengan isi berikut ini. Ganti KMS-Key-ARN dengan ARN kunci KMS Anda. Anda dapat mengatur ClientBroker ke TLS atauTLS_PLAINTEXT.

    { "EncryptionAtRest": { "DataVolumeKMSKeyId": "KMS-Key-ARN" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }

    Untuk informasi selengkapnya tentang enkripsi, lihatEnkripsi MSK Amazon.

  4. Pada mesin tempat Anda AWS CLI menginstal, jalankan perintah berikut untuk membuat cluster dengan otentikasi dan enkripsi dalam transit diaktifkan. Simpan ARN cluster yang disediakan dalam tanggapan.

    aws kafka create-cluster --cluster-name "AuthenticationTest" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --client-authentication file://clientauthinfo.json --kafka-version "{YOUR KAFKA VERSION}" --number-of-broker-nodes 3

Untuk mengatur klien untuk menggunakan otentikasi

  1. Buat instans Amazon EC2 untuk digunakan sebagai mesin klien. Untuk mempermudah, buat instance ini di VPC yang sama yang Anda gunakan untuk cluster. Lihat Langkah 3: Buat mesin klien contoh cara membuat mesin klien seperti itu.

  2. Buat topik. Sebagai contoh, lihat instruksi di bawahLangkah 4: Buat topik.

  3. Pada mesin tempat Anda AWS CLI menginstal, jalankan perintah berikut untuk mendapatkan broker bootstrap dari cluster. Ganti Cluster-ARN dengan ARN cluster Anda.

    aws kafka get-bootstrap-brokers --cluster-arn Cluster-ARN

    Simpan string yang terkait BootstrapBrokerStringTls dengan respons.

  4. Pada mesin klien Anda, jalankan perintah berikut untuk menggunakan toko kepercayaan JVM untuk membuat toko kepercayaan klien Anda. Jika jalur JVM Anda berbeda, sesuaikan perintahnya.

    cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks
  5. Pada mesin klien Anda, jalankan perintah berikut untuk membuat kunci pribadi untuk klien Anda. Ganti Dibedakan Nama, Contoh-Alias, Your-Store-Pass, dan Your-Key-Pass dengan string pilihan Anda.

    keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass Your-Store-Pass -keypass Your-Key-Pass -dname "CN=Distinguished-Name" -alias Example-Alias -storetype pkcs12
  6. Pada mesin klien Anda, jalankan perintah berikut untuk membuat permintaan sertifikat dengan kunci pribadi yang Anda buat pada langkah sebelumnya.

    keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
  7. Buka client-cert-sign-request file dan pastikan bahwa itu dimulai dengan -----BEGIN CERTIFICATE REQUEST----- dan diakhiri dengan-----END CERTIFICATE REQUEST-----. Jika dimulai dengan-----BEGIN NEW CERTIFICATE REQUEST-----, hapus kata NEW (dan spasi tunggal yang mengikutinya) dari awal dan akhir file.

  8. Pada mesin tempat Anda AWS CLI menginstal, jalankan perintah berikut untuk menandatangani permintaan sertifikat Anda. Ganti Private-CA-ARN dengan ARN PCA Anda. Anda dapat mengubah nilai validitas jika Anda mau. Di sini kita menggunakan 300 sebagai contoh.

    aws acm-pca issue-certificate --certificate-authority-arn Private-CA-ARN --csr fileb://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"

    Simpan sertifikat ARN yang disediakan dalam tanggapan.

    catatan

    Untuk mengambil sertifikat klien Anda, gunakan acm-pca get-certificate perintah dan tentukan ARN sertifikat Anda. Untuk informasi selengkapnya, lihat mendapatkan sertifikat di Referensi AWS CLI Perintah.

  9. Jalankan perintah berikut untuk mendapatkan sertifikat yang AWS Private CA ditandatangani untuk Anda. Ganti Certificate-ARN dengan ARN yang Anda peroleh dari respons ke perintah sebelumnya.

    aws acm-pca get-certificate --certificate-authority-arn Private-CA-ARN --certificate-arn Certificate-ARN
  10. Dari hasil JSON menjalankan perintah sebelumnya, salin string yang terkait dengan Certificate dan. CertificateChain Tempel kedua string ini dalam file baru bernama signed-certificate-from-acm. Tempel string yang terkait dengan Certificate pertama, diikuti oleh string yang terkait denganCertificateChain. Ganti \n karakter dengan baris baru. Berikut ini adalah struktur file setelah Anda menempelkan sertifikat dan rantai sertifikat di dalamnya.

    -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
  11. Jalankan perintah berikut pada mesin klien untuk menambahkan sertifikat ini ke keystore Anda sehingga Anda dapat mempresentasikannya ketika Anda berbicara dengan broker MSK.

    keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
  12. Buat file bernama client.properties dengan isi berikut ini. Sesuaikan lokasi truststore dan keystore ke jalur tempat Anda menyimpan. kafka.client.truststore.jks Ganti versi klien Kafka Anda dengan placeholder {YOUR KAFKA VERSION}.

    security.protocol=SSL ssl.truststore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.truststore.jks ssl.keystore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.keystore.jks ssl.keystore.password=Your-Store-Pass ssl.key.password=Your-Key-Pass

Untuk menghasilkan dan menggunakan pesan menggunakan otentikasi

  1. Jalankan perintah berikut untuk membuat topik. File bernama client.properties adalah yang Anda buat di prosedur sebelumnya.

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBroker-String --replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties
  2. Jalankan perintah berikut untuk memulai produsen konsol. File bernama client.properties adalah yang Anda buat di prosedur sebelumnya.

    <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --producer.config client.properties
  3. Di jendela perintah baru di mesin klien Anda, jalankan perintah berikut untuk memulai konsumen konsol.

    <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --consumer.config client.properties
  4. Ketik pesan di jendela produser dan saksikan mereka muncul di jendela konsumen.