클러스터 보안 설정
데이터 미러링 작업을 구성할 때, Felice에 등록된 클러스터의 접속 정보를 다른 보안 설정으로 덮어쓰고 싶거나, 외부 클러스터에 보안이 설정되어있는 경우 보안 정보를 입력해야해요.

보안 프로토콜
보안 프로토콜이란 보안을 위한 네트워크상의 일련의 규칙 또는 절차를 의미해요. Kafka에서는 인증 및 암호화 방식을 결합한 4가지 종류의 보안 프로토콜을 제공해요.
- PLAINTEXT: 인증과 암호화를 모두 적용하지 않는 기본 통신 프로토콜이에요. 보안이 필요하지 않은 폐쇄된 네트워크에서 주로 사 용해요. 보안 설정을 활성화하지 않으면 해당 프로토콜로 지정돼요.
- SASL_PLAINTEXT: SASL을 통한 인증을 적용하지만, 암호화는 적용하지 않는 보안 프로토콜이에요. 인증만 필요한 환경에서 주로 사용해요.
- SASL_SSL: SASL을 통한 인증과 SSL을 통한 암호화를 모두 적용하는 보안 프로토콜이에요. 민감한 데이터를 안전하게 전송해야 하는 환경에서 주로 사용해요.
- SSL: SSL을 통한 암호화를 적용하여, 민감한 데이터를 안전하게 전송하도록 돕는 보안 프로토콜이에요.
SASL 인증 매커니즘
SASL이 포함된 보안 프로토콜 선택 시, 인증 매커니즘을 함께 선택해야 해요. Kafka는 SASL 인증 지원하기 위한 다양한 인증 메커니즘을 제공해요.
- SASL/PLAIN: 사용자명(username)과 비밀번호(password)를 사용하여 인증해요. 이때, 사용자의 자격증명(username, password)은 평문으로 전송되기 때문에 비교적 보안에 취약한 방식이에요.
- SASL/SCRAM-SHA-256: 사용자명(username)과 비밀번호(password)를 사용하여 인증해요. 이때, 사용자의 자격 증명 중 비밀번호(password)는 SHA-256 방식으로 암호화를 수행하고 저장해요. 자격 증명은 주키퍼에 저장되기 때문에 Kafka-configs 명령어 스크립트 또는
Felice를 통해 사용자를 직접 관리할 수 있어요. - SASL/SCRAM-SHA-512: SASL/SHA-256과 동일하지만, 암호화 과정에서 SCRAM-SHA-512 방식을 사용해요.
- SASL/OAUTHBEARER: OAuth2 프로토콜을 기반으로 인증 서버로부터 발급받은 보안 토큰을 사용하여 인증해요. 해당 방식은 Kafka에서 제공하는 기능이 한정적이기 때문에 운영 환경이 아닌 클러스터에서만 사용하는 것을 권장해요.
SSL 인증서
인증서는 SSL 통신을 위해 사용되는 전자화된 문서에요. Kafka와 클라이언트 간의 통신을 제 3자가 보증해줘요.

Trust Store
Kafka 브로커로부터 인증서를 전달받았을 때, 해당 인증서가 신뢰할 수 있는 인증서인지 확인하려면 공인 인증기관(CA)의 인증서가 필요해요. 이러한 인증기관의 인증서를 저장하는 특수한 파일(.jks, .pkcs12, pem)이에요. 일반적으로 카프카 브로커에서 SSL 구성을 할 때 사용한 파일과 같은 파일을 사용해요.
Felice는 SSL 인증 방식으로 볼륨에 저장된 TrustStore 인증서 파일 경로 지정, PEM 문자열 직접 입력을 지원해요.
Key Store
공개키를 포함한 인증서와 개인키를 담고 있는 특수한 파일(.jks, .pkcs12, pem)이에요. 보안을 위해 패스워드로 보호되어 있어요. 상호 인증(mTLS)에서 클라이언트의 인증서를 Kafka 브로커에게 전달할 때 사용해요.
TrustStore와 마찬가지로 SSL 인증 방식으로 볼륨에 저장된 KeyStore 인증서 파일 경로 지정, PEM 문자열 직접 입력을 지원해요.
mTLS는 클라이언트와 서버 간에 상호인증을 수행하는 SSL(TLS) 프로토콜의 확장이에요. TLS는 클라이언트만 서버의 인증서를 확인하여 신뢰성을 검증하는 반면, mTLS에서는 클라이언트와 서버 모두가 서로의 인증서를 확인하여 서로 신뢰할 수 있는 엔티티인지 확인해요.

SSL 인증 방식
SSL이 포함된 보안 프로토콜 선택 시에는 Trust Store에 대한 정보를 입력해주어야 해요. 또한, mTLS 사용 시에는 클라이언트의 인증서를 보관하는 Key Store에 대한 정보도 추가로 입력해주어야 해요.
1. 볼륨에 저장된 인증서 파일 경로 지정 (jks, pkcs12)
JKS 또는 PKCS12 형태의 인증서 파일이 볼륨에 저장되어 있다면, 해당 파일의 경로를 지정해주세 요. 이때, 인증서는 Felice가 설치된 서버와 Kafka Connect가 설치된 서버에서 모두 동일한 경로에 존재해야 해요.

2. 직접 입력 (pem)
액세스 키와 인증서 내용을 PEM 타입의 문자열로 직접 입력할 수 있어요.

SSL Endpoint 식별 알고리즘
SSL/TLS 통신에서 서버의 호스트 이름을 검증하는 방법이에요. 주로 서버의 인증서를 이용하여 해당 서버가 신뢰할 수 있는 서버인지 확인하는 역할을 해요. 이를 통해 중간자 공격을 방지할 수 있어요.

사용 가능한 옵션
- HTTPS : 일반적으로, Kafka에서는 해당 옵션의 값을 HTTPS로 설정하여 서버 인증서의 호스트 이름과 클라이언트가 접속하려는 호스트 이름이 일치하는지 검증해요.
- None : 호스트 이름 검증을 비활성화 해요. 주로 개발 환경이나 테스트 환경에서 자체 서명된 인증서를 사용할 때 유용해요. 하지만, 운영 환경에서는 보안상 위험 때문에 해당 설정을 사용하지 않는 것을 권장해요.