16.2. Operator에서 생성한 보안


Cluster Operator는 클러스터 내에서 암호화 및 인증을 활성화하기 위해 TLS 인증서를 자동으로 설정하고 갱신합니다. Kafka 브로커와 클라이언트 간에 암호화 또는 mTLS 인증을 활성화하려면 다른 TLS 인증서도 설정합니다.

시크릿은 KafkaKafkaUser 와 같은 사용자 정의 리소스가 배포되면 생성됩니다. AMQ Streams는 이러한 시크릿을 사용하여 Kafka 클러스터, 클라이언트 및 사용자의 개인 및 공개 키 인증서를 저장합니다. 시크릿은 Kafka 브로커 간 TLS 암호화 연결을 설정하고 브로커와 클라이언트 간의 TLS 암호화 연결을 설정하는 데 사용됩니다. mTLS 인증에도 사용됩니다.

클러스터 및 클라이언트 보안은 항상 쌍입니다. 하나는 공개 키가 포함되어 있고 개인 키가 포함되어 있습니다.

클러스터 시크릿
클러스터 시크릿에는 Kafka 브로커 인증서에 서명하는 클러스터 CA 가 포함되어 있습니다. 클라이언트는 인증서를 사용하여 Kafka 클러스터와 TLS 암호화 연결을 설정합니다. 인증서는 브로커 ID를 확인합니다.
클라이언트 시크릿
클라이언트 시크릿에는 사용자가 자체 클라이언트 인증서에 서명할 수 있는 클라이언트 CA 가 포함되어 있습니다. 이를 통해 Kafka 클러스터에 대한 상호 인증을 허용합니다. 브로커는 인증서를 통해 클라이언트의 ID를 검증합니다.
사용자 시크릿
사용자 시크릿에는 개인 키와 인증서가 포함되어 있습니다. 새 사용자를 생성할 때 클라이언트 CA에서 시크릿을 생성하고 서명합니다. 키와 인증서는 클러스터에 액세스할 때 사용자를 인증하고 권한을 부여하는 데 사용됩니다.
참고

TLS 리스너 또는 TLS 암호화가 활성화된 외부 리스너에 대한 Kafka 리스너 인증서를 제공할 수 있습니다. Kafka 리스너 인증서를 사용하여 이미 보유한 보안 인프라를 통합합니다.

16.2.1. PEM 또는 PKCS #12 형식의 키와 인증서를 사용하는 TLS 인증

AMQ Streams에서 생성한 시크릿은 PEM(Privacy Enhanced Mail) 및 PKCS #12(Public-Key Cryptography Standards) 형식으로 개인 키와 인증서를 제공합니다. PEM 및 PKCS #12는 SSL 프로토콜을 사용하여 TLS 통신을 위한 OpenSSL 생성 키 형식입니다.

Kafka 클러스터 및 사용자에 대해 생성된 보안에 포함된 인증 정보를 사용하는 상호 TLS(mTLS) 인증을 구성할 수 있습니다.

mTLS를 설정하려면 먼저 다음을 수행해야 합니다.

Kafka 클러스터를 배포할 때 클러스터를 확인하기 위해 < cluster_name>-cluster-ca-cert 시크릿이 공개 키로 생성됩니다. 공개 키를 사용하여 클라이언트의 신뢰 저장소를 구성합니다.

KafkaUser 를 생성할 때 사용자(클라이언트)를 확인하기 위해 키와 인증서로 < kafka_user_name > 시크릿이 생성됩니다. 이러한 인증 정보를 사용하여 클라이언트의 키 저장소를 구성합니다.

Kafka 클러스터 및 클라이언트가 mTLS를 사용하도록 설정된 상태에서 시크릿에서 인증 정보를 추출하여 클라이언트 구성에 추가합니다.

PEM 키 및 인증서

PEM의 경우 클라이언트 구성에 다음을 추가합니다.

truststore
  • 클러스터의 CA 인증서인 < cluster_name>-cluster-ca-cert 시크릿의 ca.crt.
키 저장소
  • < kafka_user_name > 시크릿의 user.crt 는 사용자의 공용 인증서입니다.
  • < kafka_user_name > 시크릿의 user.key 는 사용자의 개인 키입니다.
PKCS #12 키 및 인증서

PKCS #12의 경우 클라이언트 구성에 다음을 추가합니다.

truststore
  • 클러스터의 CA 인증서인 < cluster_name>-cluster-ca-cert 시크릿의 ca.p12.
  • 공용 클러스터 CA 인증서에 액세스하기 위한 암호인 < cluster_name>-cluster-ca-cert 시크릿의 ca.password.
키 저장소
  • < kafka_user_name > 시크릿의 user.p12 는 사용자의 공개 키 인증서입니다.
  • Kafka 사용자의 공개 키 인증서에 액세스하기 위한 암호인 < kafka_user_name > 시크릿의 user.password.

PKCS #12는 Java에서 지원하므로 인증서 값을 Java 클라이언트 구성에 직접 추가할 수 있습니다. 보안 스토리지 위치의 인증서를 참조할 수도 있습니다. PEM 파일을 사용하면 한 줄 형식으로 클라이언트 구성에 인증서를 직접 추가해야 합니다. Kafka 클러스터와 클라이언트 간의 TLS 연결을 설정하는 데 적합한 형식을 선택합니다. PEM에 익숙하지 않은 경우 PKCS #12를 사용합니다.

참고

모든 키는 크기가 2048비트이며 기본적으로 초기 생성에서 365일 동안 유효합니다. 유효 기간을 변경할 수 있습니다.

16.2.2. Cluster Operator에서 생성한 보안

Cluster Operator는 OpenShift 클러스터에 시크릿으로 저장된 다음 인증서를 생성합니다. AMQ Streams는 기본적으로 이러한 시크릿을 사용합니다.

클러스터 CA 및 클라이언트 CA에는 개인 키 및 공개 키에 대한 별도의 시크릿이 있습니다.

<cluster_name>-cluster-ca
클러스터 CA의 개인 키를 포함합니다. AMQ Streams 및 Kafka 구성 요소는 개인 키를 사용하여 서버 인증서에 서명합니다.
<cluster_name>-cluster-ca-cert
클러스터 CA의 공개 키를 포함합니다. Kafka 클라이언트는 공개 키를 사용하여 TLS 서버 인증으로 연결된 Kafka 브로커의 ID를 확인합니다.
<cluster_name>-clients-ca
클라이언트 CA의 개인 키를 포함합니다. Kafka 클라이언트는 Kafka 브로커에 연결할 때 개인 키를 사용하여 mTLS 인증을 위한 새 사용자 인증서에 서명합니다.
<cluster_name>-clients-ca-cert
클라이언트 CA의 공개 키를 포함합니다. Kafka 브로커는 공개 키를 사용하여 mTLS 인증이 사용되는 경우 Kafka 브로커에 액세스하는 클라이언트의 ID를 확인합니다.

AMQ Streams 구성 요소 간 통신을 위한 시크릿에는 클러스터 CA에서 서명한 개인 키와 공개 키 인증서가 포함되어 있습니다.

<cluster_name>-kafka-brokers
Kafka 브로커의 개인 키 및 공개 키가 포함되어 있습니다.
<cluster_name>-zookeeper-nodes
Zoo Cryostat 노드의 개인 및 공개 키를 포함합니다.
<cluster_name>-cluster-operator-certs
Cluster Operator와 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
<cluster_name>-entity-topic-operator-certs
Topic Operator와 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
<cluster_name>-entity-user-operator-certs
User Operator와 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
<cluster_name>-cruise-control-certs
Cruise Control과 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
<cluster_name>-kafka-exporter-certs
Kafka Exporter와 Kafka 또는 Zoo Cryostat 간의 통신을 암호화하기 위한 개인 및 공개 키가 포함되어 있습니다.
참고

16.2.3. 클러스터 CA 시크릿

클러스터 CA 보안은 Kafka 클러스터의 Cluster Operator에 의해 관리됩니다.

클라이언트에는 <cluster_name> -cluster-ca-cert 시크릿만 필요합니다. 다른 모든 클러스터 시크릿은 AMQ Streams 구성 요소에서 액세스할 수 있습니다. 필요한 경우 OpenShift 역할 기반 액세스 제어를 사용하여 이를 적용할 수 있습니다.

참고

< cluster_name> -cluster-ca-cert 의 CA 인증서는 TLS를 통해 Kafka 브로커에 연결할 때 Kafka 브로커 인증서를 검증하도록 Kafka 클라이언트 애플리케이션에서 신뢰해야 합니다.

Expand
표 16.1. < cluster_name> -cluster-ca 시크릿의 필드
필드설명

ca.key

클러스터 CA의 현재 개인 키입니다.

Expand
표 16.2. < cluster_name> -cluster-ca-cert 시크릿의 필드
필드설명

ca.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

ca.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

ca.crt

클러스터 CA의 현재 인증서입니다.

Expand
표 16.3. < cluster_name> -kafka-brokers 시크릿의 필드
필드설명

<cluster_name>-kafka-<num>.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

<cluster_name>-kafka-<num>.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

<cluster_name>-kafka-<num>.crt

Kafka 브로커 Pod < num>의 인증서입니다. <cluster _name> -cluster-ca 에서 현재 또는 이전 클러스터 CA 개인 키로 서명했습니다.

<cluster_name>-kafka-<num>.key

Kafka 브로커 Pod < num&gt;의 개인 키

Expand
표 16.4. < cluster_name> -zookeeper-nodes 시크릿의 필드
필드설명

<cluster_name>-zookeeper-<num>.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

<cluster_name>-zookeeper-<num>.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

<cluster_name>-zookeeper-<num>.crt

Zoo Cryostat 노드 < num& gt;의 인증서입니다. <cluster _name> -cluster-ca 에서 현재 또는 이전 클러스터 CA 개인 키로 서명했습니다.

<cluster_name>-zookeeper-<num>.key

Zoo Cryostat pod < num> 의 개인 키입니다.

Expand
표 16.5. < cluster_name> -cluster-operator-certs 시크릿의 필드
필드설명

cluster-operator.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

cluster-operator.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

cluster-operator.crt

Cluster Operator와 Kafka 또는 Zoo Cryostat 간의 mTLS 통신 인증서입니다. <cluster _name> -cluster-ca 에서 현재 또는 이전 클러스터 CA 개인 키로 서명했습니다.

cluster-operator.key

Cluster Operator와 Kafka 또는 Zoo Cryostat 간의 mTLS 통신의 개인 키입니다.

Expand
표 16.6. < cluster_name>-entity-topic-operator-certs 시크릿의 필드
필드설명

entity-operator.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

entity-operator.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

entity-operator.crt

Topic Operator와 Kafka 또는 Zoo Cryostat 간의 mTLS 통신 인증서입니다. <cluster _name> -cluster-ca 에서 현재 또는 이전 클러스터 CA 개인 키로 서명했습니다.

entity-operator.key

Topic Operator와 Kafka 또는 Zoo Cryostat 간의 mTLS 통신의 개인 키입니다.

Expand
표 16.7. < cluster_name>-entity-user-operator-certs 시크릿의 필드
필드설명

entity-operator.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

entity-operator.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

entity-operator.crt

User Operator와 Kafka 또는 Zoo Cryostat 간의 mTLS 통신 인증서입니다. <cluster _name> -cluster-ca 에서 현재 또는 이전 클러스터 CA 개인 키로 서명했습니다.

entity-operator.key

User Operator와 Kafka 또는 Zoo Cryostat 간의 mTLS 통신의 개인 키입니다.

Expand
표 16.8. < cluster_name> -cruise-control-certs 시크릿의 필드
필드설명

cruise-control.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

cruise-control.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

cruise-control.crt

Cruise Control과 Kafka 또는 Zoo Cryostat 간의 mTLS 통신 인증서입니다. <cluster _name> -cluster-ca 에서 현재 또는 이전 클러스터 CA 개인 키로 서명했습니다.

cruise-control.key

크루즈 컨트롤과 Kafka 또는 Zoo Cryostat 간의 mTLS 통신의 개인 키입니다.

Expand
표 16.9. < cluster_name>-kafka-exporter-certs 시크릿의 필드
필드설명

kafka-exporter.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

kafka-exporter.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

kafka-exporter.crt

Kafka Exporter와 Kafka 또는 Zoo Cryostat 간의 mTLS 통신 인증서입니다. <cluster _name> -cluster-ca 에서 현재 또는 이전 클러스터 CA 개인 키로 서명했습니다.

kafka-exporter.key

Kafka Exporter와 Kafka 또는 Zoo Cryostat 간의 mTLS 통신의 개인 키입니다.

16.2.4. 클라이언트 CA 시크릿

클라이언트 CA 보안은 Kafka 클러스터의 Cluster Operator에 의해 관리됩니다.

< cluster_name> -clients-ca-cert 의 인증서는 Kafka 브로커가 신뢰하는 인증서입니다.

& lt;cluster_name&gt; -clients-ca 시크릿은 클라이언트 애플리케이션의 인증서에 서명하는 데 사용됩니다. User Operator를 사용하지 않고 애플리케이션 인증서를 발급하려는 경우 AMQ Streams 구성 요소와 관리 액세스 권한을 위해 이 시크릿에 액세스할 수 있어야 합니다. 필요한 경우 OpenShift 역할 기반 액세스 제어를 사용하여 이를 적용할 수 있습니다.

Expand
표 16.10. < cluster_name> -clients-ca 시크릿의 필드
필드설명

ca.key

클라이언트 CA의 현재 개인 키입니다.

Expand
표 16.11. < cluster_name> -clients-ca-cert 시크릿의 필드
필드설명

ca.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

ca.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

ca.crt

클라이언트 CA의 현재 인증서입니다.

16.2.5. User Operator에서 생성한 사용자 시크릿

사용자 보안은 User Operator가 관리합니다.

User Operator를 사용하여 사용자를 생성하면 사용자 이름을 사용하여 보안이 생성됩니다.

Expand
표 16.12. user_name 시크릿의 필드
시크릿 이름시크릿 내 필드설명

<user_name>

user.p12

인증서 및 키를 저장하기 위한 PKCS #12 저장소입니다.

user.password

PKCS #12 저장소를 보호하기 위한 암호입니다.

user.crt

클라이언트 CA에서 서명한 사용자의 인증서

user.key

사용자의 개인 키

16.2.6. 클러스터 CA 보안에 레이블 및 주석 추가

Kafka 사용자 정의 리소스에서 clusterCaCert 템플릿 속성을 구성하면 Cluster Operator에서 생성한 Cluster CA 보안에 사용자 정의 레이블 및 주석을 추가할 수 있습니다. 레이블 및 주석은 오브젝트를 식별하고 컨텍스트 정보를 추가하는 데 유용합니다. AMQ Streams 사용자 정의 리소스에서 템플릿 속성을 구성합니다.

보안에 레이블 및 주석을 추가하는 템플릿 사용자 정의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    template:
      clusterCaCert:
        metadata:
          labels:
            label1: value1
            label2: value2
          annotations:
            annotation1: value1
            annotation2: value2
    # ...
Copy to Clipboard Toggle word wrap

16.2.7. CA 보안에서 ownerReference 비활성화

기본적으로 클러스터 및 클라이언트 CA 보안은 Kafka 사용자 정의 리소스로 설정된 ownerReference 속성을 사용하여 생성됩니다. 즉, Kafka 사용자 정의 리소스가 삭제되면 OpenShift에서 CA 시크릿도 삭제(가용됨)됩니다.

새 클러스터에 CA를 재사용하려면 Kafka 구성에서 클러스터 및 클라이언트 CA 시크릿의 generateSecretOwnerReference 속성을 false 로 설정하여 ownerReference 를 비활성화할 수 있습니다. ownerReference 가 비활성화되면 해당 Kafka 사용자 정의 리소스가 삭제되면 OpenShift에서 CA 시크릿이 삭제되지 않습니다.

클러스터 및 클라이언트 CA에 대해 비활성화된 ownerReference 가 있는 Kafka 구성의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
# ...
  clusterCa:
    generateSecretOwnerReference: false
  clientsCa:
    generateSecretOwnerReference: false
# ...
Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat