kafkaメッセージ暗号化(SASL/PLAIN)

2967 ワード

kafkaメッセージ暗号化(SASL/PLAIN)
具体的な配置方式の公式サイトはすでにはっきり言って(できるだけ公式サイトに行って见ます)公式サイトの配置は以下のいくつかのステップに分けます
  • 1、confファイルディレクトリの下にファイルkafkaを追加するserver_jaas.conf(ファイルディレクトリファイル名随意)内容は以下の
  • である.
    KafkaServer {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="admin"
        password="admin-secret"
        user_admin="admin-secret"
        user_alice="alice-secret";
    };
    

    最初の行は、なぜ2行目のクライアントが接続するときにこのユーザー名adminを使用できるのか分からない.最後の2行は、adminパスワードを使用してadmin-secretを使用してaliceパスワードを使用してalice-secretを使用することを意味している.どのように拡張するかは知っているはずだ.
  • 2、プロファイルの変更
  • 一般起動コマンドの後に、プロファイルがserverであることが指定されます.propertiesは、次の構成を例に追加するためにカスタマイズすることもできます.
     listeners=SASL_SSL(SASL_PLAINTEXT)://host.name:port
     security.inter.broker.protocol=SASL_SSL(SASL_PLAINTEXT)
     sasl.mechanism.inter.broker.protocol=PLAIN
     sasl.enabled.mechanisms=PLAIN
    

    ここでは元のlistenersを上のように変更し、プロトコルを一致させなければならない.
  • 3、起動ファイル
  • の変更
    winの下とliunixは少し違いますが、修正したファイルのファイル名は同じkafka-run-classで一番下を見つけました(私のはwinです)
    set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*
    rem echo.
    rem echo %COMMAND%
    rem echo.
    %COMMAND%
    

    追加
    set KAFKA_SASL_OPTS=-Djava.security.auth.login.config=D:/myprogram/kafka/config/kafka_server_jaas.conf
    set        
      
    set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% %KAFKA_SASL_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*
        COMMAND    KAFKA_SASL_OPTS        -cp   
    

    上の3ステップでkafkaサービスを処理したら起動できます
    Javaクライアント構成
    ここでやるべきことは少ないですが、プロファイルに次のような構成を加えればいいです.
     spring:
      kafka:
        bootstrap-servers: 127.0.0.1:9092
        consumer:
          group-id: tst-1
          auto-offset-reset: earliest
          properties:
            security.protocol: SASL_PLAINTEXT
            sasl.mechanism: PLAIN
            #sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required  username="admin"  password="admin-secret";
            sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required  username="alice" password="alice-secret";
    

    上記の構成について簡単に説明しますgroup-idこれは機密を有効にした後に構成しなければなりませんさもなくば@KafkaListener annotationを間違えます;a group.id is required when group management is used. これはサーバーがこの消費者を識別するのではないかと思います.idでsecurityを識別します.protocol: SASL_PLAINTEXT sasl.mechanism:PLAINの上の2つはサーバ側で使用するものと一致しなければならない最後のこの構成sasl.jaas.configの後の値は必ずセミコロンで終わります.また、この値はファイルに保存することもできますkafka.client.conf
    KafkaClient {
     com.sun.security.auth.module.Krb5LoginModule required
     useKeyTab=true
     storeKey=true
     keyTab="/etc/security/keytabs/kafka_client.keytab"
     principal="[email protected]";
    };
    

    次にjvmパラメータ-Djavaを使用する.security.auth.login.config=…/kafka.client.confも可能です
    また、同じユーザー名とパスワードが複数のjavaクライアントで使用できます.