16.4.2. Kafka에 대한 사용자 액세스 보안


  1. Kafka 클러스터에 액세스해야 하는 클라이언트를 나타내는 사용자를 생성하거나 수정합니다.

    • Kafka 리스너와 동일한 인증 유형을 지정합니다.
    • 간단한 승인을 위해 권한 부여 ACL을 지정합니다.

      사용자 구성 예

      apiVersion: kafka.strimzi.io/v1beta2
      kind: KafkaUser
      metadata:
        name: my-user
        labels:
          strimzi.io/cluster: my-cluster 
      1
      
      spec:
        authentication:
          type: tls 
      2
      
        authorization:
          type: simple
          acls: 
      3
      
            - resource:
                type: topic
                name: my-topic
                patternType: literal
              operations:
                - Describe
                - Read
            - resource:
                type: group
                name: my-group
                patternType: literal
              operations:
                - Read

      1
      레이블은 Kafka 클러스터의 레이블과 일치해야 합니다.
      2
      상호 tls 로 지정된 인증입니다.
      3
      간단한 권한 부여를 사용하려면 관련 ACL 규칙 목록이 사용자에게 적용되어야 합니다. 규칙은 사용자 이름 (my-user)에 따라 Kafka 리소스에 허용되는 작업을 정의합니다.
  2. KafkaUser 리소스 구성에 변경 사항을 적용합니다.

    사용자는 KafkaUser 리소스와 동일한 이름을 가진 시크릿과 함께 생성됩니다. 보안에는 mTLS 인증을 위한 공개 및 개인 키가 포함되어 있습니다.

    사용자 인증 정보가 있는 시크릿 예

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-user
      labels:
        strimzi.io/kind: KafkaUser
        strimzi.io/cluster: my-cluster
    type: Opaque
    data:
      ca.crt: <public_key> # Public key of the clients CA used to sign this user certificate
      user.crt: <user_certificate> # Public key of the user
      user.key: <user_private_key> # Private key of the user
      user.p12: <store> # PKCS #12 store for user certificates and keys
      user.password: <password_for_store> # Protects the PKCS #12 store

  3. Kafka 클러스터의 < cluster_name>-cluster-ca-cert 시크릿에서 클러스터 CA 인증서를 추출합니다.

    oc get secret <cluster_name>-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
  4. <user _name> 보안에서 사용자 CA 인증서를 추출합니다.

    oc get secret <user_name> -o jsonpath='{.data.user\.crt}' | base64 -d > user.crt
  5. <user _name> 시크릿에서 사용자의 개인 키를 추출합니다.

    oc get secret <user_name> -o jsonpath='{.data.user\.key}' | base64 -d > user.key
  6. Kafka 클러스터에 연결하기 위한 부트스트랩 주소 호스트 이름 및 포트로 클라이언트를 구성합니다.

    props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "<hostname>:<port>");
  7. Kafka 클러스터의 ID를 확인하도록 truststore 자격 증명으로 클라이언트를 구성합니다.

    공용 클러스터 CA 인증서를 지정합니다.

    truststore 구성의 예

    props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SSL");
    props.put(SslConfigs.SSL_TRUSTSTORE_TYPE_CONFIG, "PEM");
    props.put(SslConfigs.SSL_TRUSTSTORE_CERTIFICATES_CONFIG, "<ca.crt_file_content>");

    SSL은 mTLS 인증을 위해 지정된 보안 프로토콜입니다. TLS를 통한 SCRAM-SHA-512 인증에 대해 SASL_SSL 을 지정합니다. PEM은 truststore의 파일 형식입니다.

  8. Kafka 클러스터에 연결할 때 사용자를 확인하도록 키 저장소 인증 정보로 클라이언트를 구성합니다.

    공개 인증서 및 개인 키를 지정합니다.

    키 저장소 구성 예

    props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SSL");
    props.put(SslConfigs.SSL_KEYSTORE_TYPE_CONFIG, "PEM");
    props.put(SslConfigs.SSL_KEYSTORE_CERTIFICATE_CHAIN_CONFIG, "<user.crt_file_content>");
    props.put(SslConfigs.SSL_KEYSTORE_KEY_CONFIG, "<user.key_file_content>");

    키 저장소 인증서와 개인 키를 구성에 직접 추가합니다. 를 한 줄 형식으로 추가합니다. BEGIN CERTIFICATEEND CERTIFICATE 구분 기호 간에 줄 바꿈 문자(\n)로 시작합니다. 원래 인증서의 각 행을 \n 으로 종료합니다.

    키 저장소 구성 예

    props.put(SslConfigs.SSL_KEYSTORE_CERTIFICATE_CHAIN_CONFIG, "-----BEGIN CERTIFICATE----- \n<user_certificate_content_line_1>\n<user_certificate_content_line_n>\n-----END CERTIFICATE---");
    props.put(SslConfigs.SSL_KEYSTORE_KEY_CONFIG, "----BEGIN PRIVATE KEY-----\n<user_key_content_line_1>\n<user_key_content_line_n>\n-----END PRIVATE KEY-----");

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동