16.4. 예: 보안 클라이언트 액세스 설정


다음 절차에서는 외부 OpenShift 또는 다른 OpenShift 클러스터에서 Kafka 클러스터에 대한 클라이언트 액세스를 구성하는 방법을 보여줍니다. 이는 두 부분으로 나뉩니다.

  • Kafka 브로커 보안
  • Kafka에 대한 사용자 액세스 보안

리소스 구성

Kafka 클러스터에 대한 클라이언트 액세스는 다음 구성으로 보호됩니다.

  1. 외부 리스너는 Kafka 리소스에서 TLS 암호화 및 mTLS(mTLS) 인증과 간단한 인증으로 구성됩니다.
  2. mTLS 인증을 사용하여 클라이언트에 대해 KafkaUser 가 생성되며 간단한 권한 부여를 위해 ACL(액세스 제어 목록)이 정의됩니다.

필요한 인증을 지원하는 하나 이상의 리스너가 KafkaUser 에 대해 구성해야 합니다.

리스너는 상호 TLS,SCRAM-SHA-512 또는 OAuth 인증에 대해 구성할 수 있습니다. mTLS는 항상 암호화를 사용하지만 SCRAM-SHA-512 및 OAuth 2.0 인증을 사용할 때 사용하는 것이 좋습니다.

Kafka의 권한 부여 옵션에는 간단한,OAuth,OPA 또는 사용자 지정 이 있습니다. 활성화하면 활성화된 모든 리스너에 권한 부여가 적용됩니다.

Kafka와 클라이언트 간의 호환성을 보장하기 위해 다음 인증 및 권한 부여 메커니즘의 구성이 조정되어야 합니다.

  • 유형: tlstype: scram-sha-512 인증 유형인 Kafka.spec.kafka.listeners[*].authenticationKafkaUser.spec.authentication과 일치해야 합니다.
  • 유형: 간단한 인증의 경우Kafka.spec.kafka.authorizationKafkaUser.spec.authorization과 일치해야 합니다.

예를 들어 사용자의 mTLS 인증은 Kafka 구성에서도 활성화된 경우에만 가능합니다.

자동화 및 인증서 관리

Apache Kafka Operator의 스트림은 구성 프로세스를 자동화하고 인증에 필요한 인증서를 생성합니다.

  • Cluster Operator는 리스너를 생성하고 Kafka 클러스터 내에서 인증을 활성화하기 위해 클러스터 및 클라이언트 CA(인증 기관) 인증서를 설정합니다.
  • User Operator는 선택한 인증 유형에 따라 클라이언트 및 클라이언트 인증에 사용되는 보안 인증 정보를 나타내는 사용자를 생성합니다.

클라이언트 구성에 인증서를 추가합니다.

이 절차에서는 Cluster Operator가 생성한 CA 인증서가 사용됩니다. 또는 고유한 사용자 정의 CA 인증서를 설치하여 대체할 수 있습니다. 외부 CA에서 관리하는 Kafka 리스너 인증서를 사용하도록 리스너를 구성할 수도 있습니다.

인증서는 PEM(.crt) 및 PKCS #12(.p12) 형식으로 사용할 수 있습니다. 이 절차에서는 PEM 인증서를 사용합니다. X.509 인증서 형식을 지원하는 클라이언트에 PEM 인증서를 사용합니다.

참고

동일한 OpenShift 클러스터 및 네임스페이스의 내부 클라이언트의 경우 Pod 사양에 클러스터 CA 인증서를 마운트할 수 있습니다. 자세한 내용은 클러스터 CA를 신뢰하도록 내부 클라이언트 구성을 참조하십시오.

사전 요구 사항

  • Kafka 클러스터는 OpenShift 클러스터 외부에서 실행 중인 클라이언트에서 연결할 수 있습니다.
  • Cluster Operator 및 User Operator가 클러스터에서 실행 중입니다.

16.4.1. Kafka 브로커 보안

  1. Kafka 리스너를 사용하여 Kafka 클러스터를 구성합니다.

    • 리스너를 통해 Kafka 브로커에 액세스하는 데 필요한 인증을 정의합니다.
    • Kafka 브로커에서 인증을 활성화합니다.

      리스너 구성의 예

      apiVersion: kafka.strimzi.io/v1beta2
      kind: Kafka
      metadata:
        name: my-cluster
        annotations:
          strimzi.io/node-pools: enabled
          strimzi.io/kraft: enabled
        namespace: myproject
      spec:
        kafka:
          # ...
          listeners: 
      1
      
          - name: external1 
      2
      
            port: 9094 
      3
      
            type: <listener_type> 
      4
      
            tls: true 
      5
      
            authentication:
              type: tls 
      6
      
            configuration: 
      7
      
              #...
          authorization: 
      8
      
            type: simple
            superUsers:
              - super-user-name 
      9
      
        # ...

      1
      외부 리스너를 활성화하는 구성 옵션은 일반 Kafka 리스너 스키마 참조에 설명되어 있습니다.
      2
      리스너를 식별하는 이름입니다. Kafka 클러스터 내에서 고유해야 합니다.
      3
      Kafka 내의 리스너에서 사용하는 포트 번호입니다. 포트 번호는 지정된 Kafka 클러스터 내에서 고유해야 합니다. 허용되는 포트 번호는 9092 이상이며, 이는 Prometheus 및 Cryostat에 이미 사용되는 포트 9404 및 9999를 제외하고 사용합니다. 리스너 유형에 따라 Kafka 클라이언트를 연결하는 포트 번호와 포트 번호가 동일하지 않을 수 있습니다.
      4
      경로 (OpenShift만), 로드 밸런서,nodeport 또는 ingress (Kubernetes만 해당)로 지정된 외부 리스너 유형입니다. 내부 리스너는 internal 또는 cluster-ip 로 지정됩니다.
      5
      필수 항목입니다. 리스너의 TLS 암호화입니다. 경로수신 유형 리스너의 경우 true 로 설정해야 합니다. mTLS 인증의 경우 인증 속성도 사용합니다.
      6
      리스너의 클라이언트 인증 메커니즘. mTLS를 사용한 서버 및 클라이언트 인증의 경우 tls: trueauthentication.type: tls 를 지정합니다.
      7
      (선택 사항) 리스너 유형의 요구 사항에 따라 추가 리스너 구성 을 지정할 수 있습니다.
      8
      StandardAuthorizer Kafka 플러그인을 사용하는 간단한 인증으로 지정됩니다.
      9
      (선택 사항) 슈퍼 사용자는 ACL에 정의된 액세스 제한에 관계없이 모든 브로커에 액세스할 수 있습니다.
      주의

      OpenShift 경로 주소는 Kafka 클러스터 이름, 리스너 이름, 프로젝트 이름, 라우터 도메인으로 구성됩니다. 예를 들어 my-cluster-kafka-external1-bootstrap-my-project.domain.com (<cluster_name>-kafka-<listener_name>-bootstrap-<namespace>.<domain>). 각 DNS 레이블(일본 기간 간)은 63자를 초과해서는 안 되며 주소의 총 길이는 255자를 초과해서는 안 됩니다 .

  2. Kafka 리소스 구성에 변경 사항을 적용합니다.

    Kafka 클러스터는 mTLS 인증을 사용하여 Kafka 브로커 리스너로 구성됩니다.

    각 Kafka 브로커 Pod에 대한 서비스가 생성됩니다.

    Kafka 클러스터 연결에 대한 부트스트랩 주소 역할을 하는 서비스가 생성됩니다.

    서비스는 nodeport 리스너를 사용하여 Kafka 클러스터에 대한 외부 연결의 외부 부트스트랩 주소로 도 생성됩니다.

    kafka 브로커의 ID를 확인하는 클러스터 CA 인증서도 시크릿 < cluster_name>-cluster-ca-cert 에 생성됩니다.

    참고

    외부 리스너를 사용하는 동안 Kafka 클러스터를 확장하는 경우 모든 Kafka 브로커의 롤링 업데이트가 트리거될 수 있습니다. 이는 구성에 따라 다릅니다.

  3. Kafka 리소스의 상태에서 Kafka 클러스터에 액세스하는 데 사용할 수 있는 부트스트랩 주소를 검색합니다.

    oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'

    예를 들면 다음과 같습니다.

    oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external")].bootstrapServers}{"\n"}'

    Kafka 클라이언트의 부트스트랩 주소를 사용하여 Kafka 클러스터에 연결합니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동