6.2.2.6. Kafka 싱크에 대한 보안 구성
TLS( Transport Layer Security )는 Apache Kafka 클라이언트와 서버에서 Knative와 Kafka 간의 트래픽 암호화 및 인증에 사용됩니다. TLS는 Knative Kafka에서 지원되는 유일한 트래픽 암호화 방법입니다.
SASL( Simple Authentication and Security Layer )은 Apache Kafka에서 인증에 사용됩니다. 클러스터에서 SASL 인증을 사용하는 경우 사용자는 Kafka 클러스터와 통신하기 위해 Knative에 인증 정보를 제공해야 합니다. 그러지 않으면 이벤트를 생성하거나 사용할 수 없습니다.
사전 요구 사항
-
OpenShift Serverless Operator, Knative Eventing,
KnativeKafka
사용자 정의 리소스(CR)가 OpenShift Container Platform 클러스터에 설치되어 있습니다. -
Kafka 싱크는
KnativeKafka
CR에서 활성화되어 있습니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
-
Kafka 클러스터 CA 인증서가
.pem
파일로 저장되어 있습니다. -
Kafka 클러스터 클라이언트 인증서와
.pem
파일로 저장된 키가 있습니다. -
OpenShift(
oc
) CLI를 설치했습니다. -
사용할 SASL 메커니즘을 선택했습니다(예:
PLAIN
,SCRAM-SHA-256
또는SCRAM-SHA-512
).
절차
KafkaSink
오브젝트와 동일한 네임스페이스에 인증서 파일을 시크릿으로 생성합니다.중요인증서 및 키는 PEM 형식이어야 합니다.
암호화 없이 SASL을 사용한 인증의 경우:
$ oc create secret -n <namespace> generic <secret_name> \ --from-literal=protocol=SASL_PLAINTEXT \ --from-literal=sasl.mechanism=<sasl_mechanism> \ --from-literal=user=<username> \ --from-literal=password=<password>
TLS를 사용한 SASL 및 암호화를 사용한 인증의 경우:
$ oc create secret -n <namespace> generic <secret_name> \ --from-literal=protocol=SASL_SSL \ --from-literal=sasl.mechanism=<sasl_mechanism> \ --from-file=ca.crt=<my_caroot.pem_file_path> \ 1 --from-literal=user=<username> \ --from-literal=password=<password>
- 1
- 퍼블릭 클라우드 관리 Kafka 서비스를 사용하는 경우 시스템의 루트 CA 세트(예: Red Hat OpenShift Streams for Apache Kafka)를 사용하도록
ca.crt
를 생략할 수 있습니다.
TLS를 사용한 인증 및 암호화의 경우:
$ oc create secret -n <namespace> generic <secret_name> \ --from-literal=protocol=SSL \ --from-file=ca.crt=<my_caroot.pem_file_path> \ 1 --from-file=user.crt=<my_cert.pem_file_path> \ --from-file=user.key=<my_key.pem_file_path>
- 1
- 퍼블릭 클라우드 관리 Kafka 서비스를 사용하는 경우 시스템의 루트 CA 세트(예: Red Hat OpenShift Streams for Apache Kafka)를 사용하도록
ca.crt
를 생략할 수 있습니다.
KafkaSink
오브젝트를 생성하거나 수정하고auth
사양에서 보안에 대한 참조를 추가합니다.apiVersion: eventing.knative.dev/v1alpha1 kind: KafkaSink metadata: name: <sink_name> namespace: <namespace> spec: ... auth: secret: ref: name: <secret_name> ...
KafkaSink
오브젝트를 적용합니다.$ oc apply -f <filename>