TLS-titkosítás és hitelesítés beállítása nem ESP Apache Kafka-fürthöz az Azure HDInsightban

Ez a cikk bemutatja, hogyan állíthatja be a Transport Layer Security (TLS) titkosítást, korábbi nevén Secure Sockets Layer (SSL) titkosítást az Apache Kafka-ügyfelek és az Apache Kafka-közvetítők között. Azt is bemutatja, hogyan állíthatja be az ügyfelek hitelesítését (más néven kétirányú TLS-t).

Fontos

A Kafka-alkalmazásokhoz két ügyfél használható: egy Java-ügyfél és egy konzolügyfél. A TLS-t csak a Java-ügyfél ProducerConsumer.java használhatja a termeléshez és a felhasználáshoz. A konzolgyártó ügyfél console-producer.sh nem működik a TLS-lel.

Apache Kafka-közvetítő beállítása

A Kafka TLS-közvetítő beállítása négy HDInsight-fürt virtuális gépet használ a következő módon:

  • headnode 0 – Hitelesítésszolgáltató (CA)
  • feldolgozó csomópont 0, 1 és 2 – közvetítők

Feljegyzés

Ez az útmutató önaláírt tanúsítványokat használ, de a legbiztonságosabb megoldás a megbízható hitelesítésszolgáltatók által kibocsátott tanúsítványok használata.

A közvetítő beállítási folyamatának összegzése a következő:

  1. A következő lépések ismétlődnek a három munkavégző csomópont mindegyikén:

    1. Hozzon létre egy tanúsítványt.
    2. Hozzon létre egy tanúsítvány-aláírási kérést.
    3. Küldje el a tanúsítvány-aláírási kérelmet a hitelesítésszolgáltatónak (CA).
    4. Jelentkezzen be a hitelesítésszolgáltatóhoz, és írja alá a kérést.
    5. SCP az aláírt tanúsítvány vissza a feldolgozó csomópontra.
    6. A hitelesítésszolgáltató nyilvános tanúsítványának SCP-je a feldolgozó csomóponthoz.
  2. Miután megkapta az összes tanúsítványt, helyezze a tanúsítványokat a tanúsítványtárolóba.

  3. Nyissa meg az Ambarit, és módosítsa a konfigurációkat.

    A közvetítő beállításának befejezéséhez kövesse az alábbi részletes utasításokat:

    Fontos

    A következő kódrészletekben a wnX a három munkavégző csomópont egyikének rövidítése, amelyet a megfelelő módon wn1 vagy wn2 ponttal wn0kell helyettesíteni. WorkerNode0_Name és HeadNode0_Name a megfelelő gépek nevével kell helyettesíteni.

  4. Végezze el a kezdeti beállítást a 0. főcsomóponton, amely a HDInsight esetében kitölti a hitelesítésszolgáltató (CA) szerepkörét.

    # Create a new directory 'ssl' and change into it
    mkdir ssl
    cd ssl
    
  5. Hajtsa végre ugyanazt a kezdeti beállítást az összes közvetítőn (0., 1. és 2. feldolgozó csomópont).

    # Create a new directory 'ssl' and change into it
    mkdir ssl
    cd ssl
    
  6. Minden munkavégző csomóponton hajtsa végre a következő lépéseket a kódrészlet használatával.

    1. Hozzon létre egy kulcstárat, és töltse fel egy új magántanúsítvánnyal.
    2. Hozzon létre egy tanúsítvány-aláírási kérelmet.
    3. SCP a tanúsítvány-aláírási kérelem a hitelesítésszolgáltatóhoz (headnode0)
    keytool -genkey -keystore kafka.server.keystore.jks -keyalg RSA -validity 365 -storepass "MyServerPassword123" -keypass "MyServerPassword123" -dname "CN=FQDN_WORKER_NODE" -ext SAN=DNS:FQDN_WORKER_NODE -storetype pkcs12
    keytool -keystore kafka.server.keystore.jks -certreq -file cert-file -storepass "MyServerPassword123" -keypass "MyServerPassword123"
    scp cert-file sshuser@HeadNode0_Name:~/ssl/wnX-cert-sign-request
    

    Feljegyzés

    FQDN_WORKER_NODE a feldolgozó csomópont gépének teljes tartományneve. A részleteket a /etc/hosts fájlból szerezheti be a fő csomópontban

    Például:

    wn0-espkaf.securehadooprc.onmicrosoft.com
    wn0-kafka2.zbxwnwsmpcsuvbjqbmespcm1zg.bx.internal.cloudapp.net
    

    A gazdagépek fájlkimenetét bemutató képernyőkép.

  7. A ca-cert és a ca-key fájlok létrehozásához futtassa a következő parancsot a ca-cert gépen:

    openssl req -new -newkey rsa:4096 -days 365 -x509 -subj "/CN=Kafka-Security-CA" -keyout ca-key -out ca-cert -nodes
    
  8. Váltson a hitelesítésszolgáltató gépére, és írja alá az összes fogadott tanúsítvány-aláírási kérést:

    openssl x509 -req -CA ca-cert -CAkey ca-key -in wn0-cert-sign-request -out wn0-cert-signed -days 365 -CAcreateserial -passin pass:"MyServerPassword123"
    openssl x509 -req -CA ca-cert -CAkey ca-key -in wn1-cert-sign-request -out wn1-cert-signed -days 365 -CAcreateserial -passin pass:"MyServerPassword123"
    openssl x509 -req -CA ca-cert -CAkey ca-key -in wn2-cert-sign-request -out wn2-cert-signed -days 365 -CAcreateserial -passin pass:"MyServerPassword123"
    
  9. Küldje vissza az aláírt tanúsítványokat a feldolgozó csomópontokra a hitelesítésszolgáltatótól (headnode0).

    scp wn0-cert-signed sshuser@WorkerNode0_Name:~/ssl/cert-signed
    scp wn1-cert-signed sshuser@WorkerNode1_Name:~/ssl/cert-signed
    scp wn2-cert-signed sshuser@WorkerNode2_Name:~/ssl/cert-signed
    
  10. Küldje el a hitelesítésszolgáltató nyilvános tanúsítványát az egyes feldolgozó csomópontok számára.

    scp ca-cert sshuser@WorkerNode0_Name:~/ssl/ca-cert
    scp ca-cert sshuser@WorkerNode1_Name:~/ssl/ca-cert
    scp ca-cert sshuser@WorkerNode2_Name:~/ssl/ca-cert
    
  11. Minden munkavégző csomóponton adja hozzá a hitelesítésszolgáltatók nyilvános tanúsítványát a megbízhatósági tárolóhoz és a kulcstárhoz. Ezután adja hozzá a feldolgozó csomópont saját aláírt tanúsítványát a kulcstárhoz

    keytool -keystore kafka.server.truststore.jks -alias CARoot -import -file ca-cert -storepass "MyServerPassword123" -keypass "MyServerPassword123" -noprompt
    keytool -keystore kafka.server.keystore.jks -alias CARoot -import -file ca-cert -storepass "MyServerPassword123" -keypass "MyServerPassword123" -noprompt
    keytool -keystore kafka.server.keystore.jks -import -file cert-signed -storepass "MyServerPassword123" -keypass "MyServerPassword123" -noprompt
    
    

A Kafka konfigurációjának frissítése a TLS használatára és a közvetítők újraindítására

Most beállította az egyes Kafka-közvetítőket egy kulcstárral és egy megbízhatósági tárral, és importálta a megfelelő tanúsítványokat. Ezután módosítsa a kapcsolódó Kafka-konfigurációs tulajdonságokat az Ambari használatával, majd indítsa újra a Kafka-közvetítőket.

A konfiguráció módosításának befejezéséhez hajtsa végre a következő lépéseket:

  1. Jelentkezzen be az Azure Portalra, és válassza ki az Azure HDInsight Apache Kafka-fürtöt.

  2. Lépjen az Ambari felhasználói felületére a Fürt irányítópultok alatt található Ambari kezdőlapra kattintva.

  3. A Kafka Broker alatt állítsa a figyelő tulajdonságot a következőre:PLAINTEXT://localhost:9092,SSL://localhost:9093

  4. A Speciális kafka-broker területen állítsa a security.inter.broker.protocol tulajdonságot a következőre:SSL

    A Kafka ssl konfigurációs tulajdonságainak szerkesztése az Ambariban.

  5. Az Egyéni kafka-broker területen állítsa az ssl.client.auth tulajdonságot a következőrerequired: .

    Feljegyzés

    Megjegyzés: Ez a lépés csak akkor szükséges, ha hitelesítést és titkosítást állít be.

    Kafka SSL-konfigurációs tulajdonságok szerkesztése az Ambariban.

  6. Az alábbi képernyőképen az Ambari konfigurációs felhasználói felülete látható ezekkel a módosításokkal.

    Feljegyzés

    1. az ssl.keystore.location és az ssl.truststore.location a kulcstár teljes elérési útja, a megbízható tároló helye a hitelesítésszolgáltatóban (hn0)
    2. Az ssl.keystore.password és az ssl.truststore.password a keystore és a truststore jelszókészlete. Ebben az esetben példaként: MyServerPassword123
    3. A ssl.key.password a kulcstár és a megbízhatósági tár kulcskészlete. Ebben az esetben példaként: MyServerPassword123
  7. A TLS 1.3 használata a Kafkában

    Adja hozzá a következő konfigurációkat az Ambari kafka konfigurációihoz

    1. ssl.enabled.protocols=TLSv1.3
    2. ssl.protocol=TLSv1.3

    Fontos

    1. A TLS 1.3 csak a HDI 5.1 kafka verzióval működik.
    2. Ha a TLS 1.3-at kiszolgálóoldalon használja, az ügyfélnél is TLS 1.3-konfigurációkat kell használnia.
  8. HDI 4.0-s vagy 5.0-s verzió esetén

    1. Ha hitelesítést és titkosítást állít be, akkor a képernyőkép a következőképpen néz ki:

    A kafka-env sablontulajdonság szerkesztése az Ambari négyesében.

    1. Ha csak titkosítást állít be, akkor a képernyőkép a következőképpen néz ki:

    Képernyőkép arról, hogyan szerkesztheti a kafka-env sablon tulajdonságmezőt az Ambariban csak titkosítás céljából.

  9. Indítsa újra az összes Kafka-közvetítőt.

Ügyfél beállítása (hitelesítés nélkül)

Ha nincs szüksége hitelesítésre, a TLS-titkosítás beállításának lépéseinek összegzése a következő:

  1. Jelentkezzen be a hitelesítésszolgáltatóba (aktív főcsomópont).
  2. Másolja a hitelesítésszolgáltatói tanúsítványt az ügyfélgépre a hitelesítésszolgáltató gépéről (wn0).
  3. Jelentkezzen be az ügyfélszámítógépre (hn1), és keresse meg a ~/ssl mappát.
  4. Importálja a hitelesítésszolgáltatói tanúsítványt a megbízhatósági adattárba.
  5. Importálja a ca-tanúsítványt a kulcstárba.

Ezeket a lépéseket a következő kódrészletek ismertetik.

  1. Jelentkezzen be a hitelesítésszolgáltatói csomópontra.

    ssh sshuser@HeadNode0_Name
    cd ssl
    
  2. A ca-cert másolása az ügyfélszámítógépre

    scp ca-cert sshuser@HeadNode1_Name:~/ssl/ca-cert
    
  3. Jelentkezzen be az ügyfélszámítógépre (készenléti főcsomópont).

    ssh sshuser@HeadNode1_Name
    cd ssl
    
  4. Importálja a hitelesítésszolgáltatói tanúsítványt a megbízhatósági adattárba.

    keytool -keystore kafka.client.truststore.jks -alias CARoot -import -file ca-cert -storepass "MyClientPassword123" -keypass "MyClientPassword123" -noprompt
    
  5. Importálja a ca-tanúsítványt a keystore-ba.

    keytool -keystore kafka.client.keystore.jks -alias CARoot -import -file ca-cert -storepass "MyClientPassword123" -keypass "MyClientPassword123" -noprompt
    
  6. Hozza létre a fájlt client-ssl-auth.properties az ügyfélszámítógépen (hn1). A következő sorokkal kell rendelkeznie:

    security.protocol=SSL
    ssl.truststore.location=/home/sshuser/ssl/kafka.client.truststore.jks
    ssl.truststore.password=MyClientPassword123
    
    1. A TLS 1.3 használatához adja hozzá a következő konfigurációkat a fájlhoz client-ssl-auth.properties
    ssl.enabled.protocols=TLSv1.3
    ssl.protocol=TLSv1.3
    
  7. Indítsa el a rendszergazdai ügyfelet a gyártói és fogyasztói lehetőségekkel annak ellenőrzéséhez, hogy a termelők és a fogyasztók is a 9093-as porton dolgoznak-e. A beállítás konzolgyártó/-fogyasztó használatával történő ellenőrzéséhez szükséges lépésekért tekintse meg az Ellenőrzés szakaszt.

Ügyfél beállítása (hitelesítéssel)

Feljegyzés

A következő lépések csak akkor szükségesek, ha a TLS-titkosítást és a hitelesítést is beállítja. Ha csak a titkosítást állítja be, tekintse meg az ügyfél hitelesítés nélküli beállítását.

Az alábbi négy lépés összefoglalja az ügyfélbeállítás elvégzéséhez szükséges feladatokat:

  1. Jelentkezzen be az ügyfélszámítógépre (készenléti főcsomópont).
  2. Hozzon létre egy Java-kulcstárat, és szerezzen be egy aláírt tanúsítványt a közvetítő számára. Ezután másolja a tanúsítványt arra a virtuális gépre, amelyen a hitelesítésszolgáltató fut.
  3. Váltson a ca-gépre (aktív főcsomópont) az ügyféltanúsítvány aláírásához.
  4. Lépjen az ügyfélszámítógépre (készenléti főcsomópont), és keresse meg a ~/ssl mappát. Másolja az aláírt tanúsítványt az ügyfélszámítógépre.

Az egyes lépések részletei meg vannak adva.

  1. Jelentkezzen be az ügyfélszámítógépre (készenléti főcsomópont).

    ssh sshuser@HeadNode1_Name
    
  2. Távolítsa el a meglévő SSL-címtárat.

    rm -R ~/ssl
    mkdir ssl
    cd ssl
    
  3. Hozzon létre egy Java-kulcstárat, és hozzon létre egy tanúsítvány-aláírási kérelmet.

    keytool -genkey -keystore kafka.client.keystore.jks -validity 365 -storepass "MyClientPassword123" -keypass "MyClientPassword123" -dname "CN=HEADNODE1_FQDN" -storetype pkcs12
    
    keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -storepass "MyClientPassword123" -keypass "MyClientPassword123"
    
  4. A tanúsítvány-aláírási kérelem másolása a hitelesítésszolgáltatóhoz

    scp client-cert-sign-request sshuser@HeadNode0_Name:~/ssl/client-cert-sign-request
    
  5. Váltson a hitelesítésszolgáltatói gépre (aktív főcsomópont), és írja alá az ügyféltanúsítványt.

    ssh sshuser@HeadNode0_Name
    cd ssl
    openssl x509 -req -CA ca-cert -CAkey ca-key -in ~/ssl/client-cert-sign-request -out ~/ssl/client-cert-signed -days 365 -CAcreateserial -passin pass:MyClientPassword123
    
  6. Másolja az aláírt ügyfél-tanúsítványt a hitelesítésszolgáltatóról (aktív főcsomópontról) az ügyfélszámítógépre.

    scp client-cert-signed sshuser@HeadNode1_Name:~/ssl/client-signed-cert
    
  7. A ca-cert másolása az ügyfélszámítógépre

    scp ca-cert sshuser@HeadNode1_Name:~/ssl/ca-cert
    
    1. Jelentkezzen be az ügyfélszámítógépre (készenléti főcsomópont), és keresse meg az SSL-címtárat.
    ssh sshuser@HeadNode1_Name
    cd ssl
    
  8. Ügyféltároló létrehozása aláírt tanúsítványokkal, hitelesítésszolgáltatói tanúsítvány importálása a keystore-ba és truststore az ügyfélszámítógépen (hn1):

    keytool -keystore kafka.client.truststore.jks -alias CARoot -import -file ca-cert -storepass "MyClientPassword123" -keypass "MyClientPassword123" -noprompt
    
    keytool -keystore kafka.client.keystore.jks -alias CARoot -import -file ca-cert -storepass "MyClientPassword123" -keypass "MyClientPassword123" -noprompt
    
    keytool -keystore kafka.client.keystore.jks -import -file client-signed-cert -storepass "MyClientPassword123" -keypass "MyClientPassword123" -noprompt
    
  9. Hozzon létre egy fájlt client-ssl-auth.properties az ügyfélszámítógépen (hn1). A következő sorokkal kell rendelkeznie:

    security.protocol=SSL
    ssl.truststore.location=/home/sshuser/ssl/kafka.client.truststore.jks
    ssl.truststore.password=MyClientPassword123
    ssl.keystore.location=/home/sshuser/ssl/kafka.client.keystore.jks
    ssl.keystore.password=MyClientPassword123
    ssl.key.password=MyClientPassword123
    
    1. A TLS 1.3 használatához adja hozzá a következő konfigurációkat a fájlhoz client-ssl-auth.properties
    ssl.enabled.protocols=TLSv1.3
    ssl.protocol=TLSv1.3
    

Ellenőrzés

Futtassa ezeket a lépéseket az ügyfélszámítógépen.

Feljegyzés

Ha a HDInsight 4.0 és a Kafka 2.1 telepítve van, a konzolgyártó/-fogyasztók segítségével ellenőrizheti a telepítést. Ha nem, futtassa a Kafka-gyártót a 9092-s porton, és küldjön üzeneteket a témakörnek, majd használja a Kafka-fogyasztót a TLS-t használó 9093-os porton.

Kafka 2.1 vagy újabb

  1. Hozzon létre egy témakört, ha még nem létezik.

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --zookeeper <ZOOKEEPER_NODE>:2181 --create --topic topic1 --partitions 2 --replication-factor 2
    
  2. Indítsa el a konzolgyártót, és adja meg az elérési utat client-ssl-auth.properties konfigurációs fájlként a gyártó számára.

    /usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list <FQDN_WORKER_NODE>:9093 --topic topic1 --producer.config ~/ssl/client-ssl-auth.properties
    
  3. Nyisson meg egy másik ssh-kapcsolatot az ügyfélszámítógéphez, és indítsa el a konzolfelhasználót, és adja meg az elérési utat client-ssl-auth.properties konfigurációs fájlként a fogyasztó számára.

    /usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server <FQDN_WORKER_NODE>:9093 --topic topic1 --consumer.config ~/ssl/client-ssl-auth.properties --from-beginning
    

Következő lépések