6.5. 채널의 보안 구성
6.5.1. Apache Kafka의 Knative 채널에 대한 TLS 인증 구성
TLS( Transport Layer Security )는 Apache Kafka 클라이언트와 서버에서 Knative와 Kafka 간의 트래픽을 암호화하고 인증을 위해 사용됩니다. TLS는 Apache Kafka에 대한 Knative 브로커 구현에 지원되는 유일한 트래픽 암호화 방법입니다.
사전 요구 사항
- OpenShift Container Platform에 대한 클러스터 또는 전용 관리자 권한이 있습니다.
-
OpenShift Serverless Operator, Knative Eventing,
KnativeKafka
CR이 OpenShift Container Platform 클러스터에 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
-
Kafka 클러스터 CA 인증서가
.pem
파일로 저장되어 있습니다. -
Kafka 클러스터 클라이언트 인증서와
.pem
파일로 저장된 키가 있습니다. -
OpenShift CLI(
oc
)를 설치합니다.
프로세스
선택한 네임스페이스에서 인증서 파일을 시크릿으로 생성합니다.
$ oc create secret -n <namespace> generic <kafka_auth_secret> \ --from-file=ca.crt=caroot.pem \ --from-file=user.crt=certificate.pem \ --from-file=user.key=key.pem
중요키 이름
ca.crt
,user.crt
,user.key
를 사용합니다. 이 값은 변경하지 마십시오.KnativeKafka
사용자 정의 리소스 편집을 시작합니다.$ oc edit knativekafka
시크릿 및 시크릿의 네임스페이스를 참조합니다.
apiVersion: operator.serverless.openshift.io/v1alpha1 kind: KnativeKafka metadata: namespace: knative-eventing name: knative-kafka spec: channel: authSecretName: <kafka_auth_secret> authSecretNamespace: <kafka_auth_secret_namespace> bootstrapServers: <bootstrap_servers> enabled: true source: enabled: true
참고부트스트랩 서버에서 일치하는 포트를 지정해야 합니다.
예를 들면 다음과 같습니다.
apiVersion: operator.serverless.openshift.io/v1alpha1 kind: KnativeKafka metadata: namespace: knative-eventing name: knative-kafka spec: channel: authSecretName: tls-user authSecretNamespace: kafka bootstrapServers: eventing-kafka-bootstrap.kafka.svc:9094 enabled: true source: enabled: true
6.5.2. Apache Kafka의 Knative 채널에 대한 SASL 인증 구성
SASL( Simple Authentication and Security Layer )은 Apache Kafka에서 인증에 사용됩니다. 클러스터에서 SASL 인증을 사용하는 경우 Kafka 클러스터와 통신하기 위해 Knative에 인증 정보를 제공해야 합니다. 그렇지 않으면 이벤트를 생성하거나 사용할 수 없습니다.
사전 요구 사항
- OpenShift Container Platform에 대한 클러스터 또는 전용 관리자 권한이 있습니다.
-
OpenShift Serverless Operator, Knative Eventing,
KnativeKafka
CR이 OpenShift Container Platform 클러스터에 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
- Kafka 클러스터의 사용자 이름과 암호가 있습니다.
-
PLAIN
,SCRAM-SHA-256
또는SCRAM-SHA-512
와 같이 사용할 SASL 메커니즘을 선택했습니다. -
TLS가 활성화된 경우 Kafka 클러스터의
ca.crt
인증서 파일도 필요합니다. -
OpenShift CLI(
oc
)를 설치합니다.
프로세스
선택한 네임스페이스에서 인증서 파일을 시크릿으로 생성합니다.
$ oc create secret -n <namespace> generic <kafka_auth_secret> \ --from-file=ca.crt=caroot.pem \ --from-literal=password="SecretPassword" \ --from-literal=saslType="SCRAM-SHA-512" \ --from-literal=user="my-sasl-user"
-
키 이름
ca.crt
,password
,sasl.mechanism
을 사용합니다. 이 값은 변경하지 마십시오. 공용 CA 인증서와 함께 SASL을 사용하려면 시크릿을 생성할 때
ca.crt
인수 대신tls.enabled=true
플래그를 사용해야 합니다. 예를 들면 다음과 같습니다.$ oc create secret -n <namespace> generic <kafka_auth_secret> \ --from-literal=tls.enabled=true \ --from-literal=password="SecretPassword" \ --from-literal=saslType="SCRAM-SHA-512" \ --from-literal=user="my-sasl-user"
-
키 이름
KnativeKafka
사용자 정의 리소스 편집을 시작합니다.$ oc edit knativekafka
시크릿 및 시크릿의 네임스페이스를 참조합니다.
apiVersion: operator.serverless.openshift.io/v1alpha1 kind: KnativeKafka metadata: namespace: knative-eventing name: knative-kafka spec: channel: authSecretName: <kafka_auth_secret> authSecretNamespace: <kafka_auth_secret_namespace> bootstrapServers: <bootstrap_servers> enabled: true source: enabled: true
참고부트스트랩 서버에서 일치하는 포트를 지정해야 합니다.
예를 들면 다음과 같습니다.
apiVersion: operator.serverless.openshift.io/v1alpha1 kind: KnativeKafka metadata: namespace: knative-eventing name: knative-kafka spec: channel: authSecretName: scram-user authSecretNamespace: kafka bootstrapServers: eventing-kafka-bootstrap.kafka.svc:9093 enabled: true source: enabled: true