16.3.2. 사용자 인증 구성
KafkaUser 사용자 지정 리소스를 사용하여 Kafka 클러스터에 액세스해야 하는 사용자(클라이언트)에 대한 인증 자격 증명을 구성합니다. KafkaUser.spec 의 인증 속성을 사용하여 인증 정보를 구성합니다. 유형을 지정하면 생성되는 인증 정보를 제어할 수 있습니다.
지원되는 인증 유형:
-
mTLS 인증용 TLS
-
외부 인증서를 사용한 mTLS 인증에 대한 TLS-external -
SCRAM-SHA-512 인증을 위한 SCRAM-sha-512
tls 또는 scram-sha-512 가 지정된 경우 User Operator는 사용자를 생성할 때 인증 인증 정보를 생성합니다. tls-external 가 지정된 경우에도 사용자는 mTLS를 계속 사용하지만 인증 인증 정보는 생성되지 않습니다. 자체 인증서를 제공할 때 이 옵션을 사용합니다. 인증 유형을 지정하지 않으면 User Operator에서 사용자 또는 인증 정보를 생성하지 않습니다.
tls-external 를 사용하여 User Operator 외부에서 발행된 인증서를 사용하여 mTLS로 인증할 수 있습니다. User Operator는 TLS 인증서 또는 보안을 생성하지 않습니다. tls 메커니즘을 사용하는 경우와 동일한 방식으로 User Operator를 통해 ACL 규칙 및 할당량을 계속 관리할 수 있습니다. 즉, ACL 규칙 및 할당량을 지정할 때 CN=USER-NAME 형식을 사용합니다. USER-NAME 은 TLS 인증서에 지정된 일반적인 이름입니다.
16.3.2.1. mTLS 인증 링크 복사링크가 클립보드에 복사되었습니다!
mTLS 인증을 사용하려면 KafkaUser 리소스의 type 필드를 tls 로 설정합니다.
mTLS 인증이 활성화된 사용자 예
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
name: my-user
labels:
strimzi.io/cluster: my-cluster
spec:
authentication:
type: tls
# ...
인증 유형은 Kafka 클러스터에 액세스하는 데 사용되는 Kafka 리스너의 동등한 구성과 일치해야 합니다.
User Operator에 의해 사용자를 생성하면 KafkaUser 리소스와 동일한 이름으로 새 시크릿을 생성합니다. 보안에는 mTLS의 개인 및 공개 키가 포함됩니다. 공개 키는 사용자 인증서에 포함되어 있으며 클라이언트 CA(인증 기관)가 이를 생성할 때 서명합니다. 모든 키는 X.509 형식으로 되어 있습니다.
Cluster Operator에서 생성한 클라이언트 CA를 사용하는 경우 Cluster Operator에 의해 클라이언트 CA를 갱신할 때 User Operator에서 생성한 사용자 인증서도 갱신됩니다.
사용자 시크릿 은 PEM 및 PKCS #12 형식의 키와 인증서를 제공합니다.
사용자 인증 정보가 있는 시크릿 예
apiVersion: v1
kind: Secret
metadata:
name: my-user
labels:
strimzi.io/kind: KafkaUser
strimzi.io/cluster: my-cluster
type: Opaque
data:
ca.crt: <public_key> # Public key of the clients CA used to sign this user certificate
user.crt: <user_certificate> # Public key of the user
user.key: <user_private_key> # Private key of the user
user.p12: <store> # PKCS #12 store for user certificates and keys
user.password: <password_for_store> # Protects the PKCS #12 store
클라이언트를 구성할 때 다음을 지정합니다.
- Kafka 클러스터의 ID를 확인하기 위한 공용 클러스터 CA 인증서의 truststore 속성
- 클라이언트를 확인하기 위한 사용자 인증 자격 증명의 키 저장소 속성
구성은 파일 형식(PEM 또는 PKCS #12)에 따라 다릅니다. 이 예에서는 PKCS #12 저장소와 저장소의 자격 증명에 액세스하는 데 필요한 암호를 사용합니다.
PKCS #12 형식의 mTLS를 사용하는 클라이언트 구성 예
bootstrap.servers=<kafka_cluster_name>-kafka-bootstrap:9093
security.protocol=SSL
ssl.truststore.location=/tmp/ca.p12
ssl.truststore.password=<truststore_password>
ssl.keystore.location=/tmp/user.p12
ssl.keystore.password=<keystore_password>
- 1
- Kafka 클러스터에 연결할 부트스트랩 서버 주소입니다.
- 2
- 암호화에 TLS를 사용할 때 보안 프로토콜 옵션입니다.
- 3
- truststore 위치에는 Kafka 클러스터의 공개 키 인증서(
ca.p12)가 포함되어 있습니다. 클러스터 CA 인증서 및 암호는 Kafka 클러스터가 생성될 때 <cluster_name>-cluster-ca-cert시크릿의 Cluster Operator에 의해 생성됩니다. - 4
- 신뢰 저장소에 액세스하기 위한 암호(
ca.password)입니다. - 5
- 키 저장소 위치에는 Kafka 사용자의 공개 키 인증서(
user.p12)가 포함되어 있습니다. - 6
- 키 저장소에 액세스하기 위한 암호(
user.password)입니다.