14.2. Kafka 클라이언트의 보안 옵션


KafkaUser 리소스를 사용하여 Kafka 클라이언트에 대한 인증 메커니즘, 권한 부여 메커니즘 및 액세스 권한을 구성합니다. 보안 구성 측면에서 클라이언트는 사용자로 표시됩니다.

Kafka 브로커에 대한 사용자 액세스 권한을 인증하고 인증할 수 있습니다. 인증은 액세스를 허용하고 권한 부여는 허용되는 작업에 대한 액세스를 제한합니다.

Kafka 브로커에 대한 제약되지 않은 액세스 권한이 있는 슈퍼 사용자를 생성할 수도 있습니다.

인증 및 권한 부여 메커니즘은 Kafka 브로커에 액세스하는 데 사용되는 리스너의 사양과 일치해야 합니다.

Kafka 브로커에 안전하게 액세스하도록 KafkaUser 리소스를 구성하는 방법에 대한 자세한 내용은 13.3절. “리스너를 사용하여 Kafka 클러스터에 클라이언트 액세스 설정” 을 참조하십시오.

14.2.1. 사용자 처리를 위한 Kafka 클러스터 식별

KafkaUser 리소스에는 적절한 Kafka 클러스터 이름( Kafka 리소스의 이름에서 파생)을 정의하는 레이블이 포함됩니다.

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: my-user
  labels:
    strimzi.io/cluster: my-cluster

레이블은 User Operator에서 KafkaUser 리소스를 식별하고 새 사용자를 생성하고 사용자를 나중에 처리하는 데 사용됩니다.

레이블이 Kafka 클러스터와 일치하지 않으면 User Operator에서 KafkaUser 를 식별할 수 없으며 사용자가 생성되지 않습니다.

KafkaUser 리소스의 상태가 비어 있으면 레이블을 확인합니다.

14.2.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 인증서에 지정된 공통 이름입니다.

14.2.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를 사용하는 경우 클라이언트 CA를 Cluster Operator가 갱신할 때 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
  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 인증서의 신뢰 저장소 속성
  • 사용자 인증 자격 증명의 키 저장소 속성을 사용하여 클라이언트를 확인합니다.

구성은 파일 형식(PEM 또는 PKCS #12)에 따라 다릅니다. 이 예에서는 PKCS #12 저장소와 저장소의 자격 증명에 액세스하는 데 필요한 암호를 사용합니다.

PKCS #12 형식의 mTLS를 사용한 클라이언트 구성 예

bootstrap.servers=<kafka_cluster_name>-kafka-bootstrap:9093 
1

security.protocol=SSL 
2

ssl.truststore.location=/tmp/ca.p12 
3

ssl.truststore.password=<truststore_password> 
4

ssl.keystore.location=/tmp/user.p12 
5

ssl.keystore.password=<keystore_password> 
6

1
Kafka 클러스터에 연결할 부트스트랩 서버 주소입니다.
2
암호화에 TLS를 사용할 때 보안 프로토콜 옵션입니다.
3
신뢰 저장소 위치에는 Kafka 클러스터의 공개 키 인증서(ca.p12)가 포함됩니다. Kafka 클러스터가 생성될 때 <cluster _name>-cluster-ca-cert 보안의 Cluster Operator에 클러스터 CA 인증서 및 암호가 생성됩니다.
4
신뢰 저장소에 액세스하기 위한 암호(ca.password)입니다.
5
키 저장소 위치에는 Kafka 사용자의 공개 키 인증서(user.p12)가 포함됩니다.
6
키 저장소에 액세스하기 위한 암호(user.password)

14.2.2.2. User Operator 외부에서 발행된 인증서를 사용한 mTLS 인증

User Operator 외부에서 발행된 인증서를 사용하여 mTLS 인증을 사용하려면 KafkaUser 리소스의 type 필드를 tls-external 로 설정합니다. 사용자에 대해 시크릿 및 인증 정보가 생성되지 않습니다.

User Operator 외부에서 발행된 인증서를 사용하는 mTLS 인증이 있는 사용자의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: my-user
  labels:
    strimzi.io/cluster: my-cluster
spec:
  authentication:
    type: tls-external
  # ...

14.2.2.3. SCRAM-SHA-512 인증

SCRAM-SHA-512 인증 메커니즘을 사용하려면 KafkaUser 리소스의 type 필드를 scram-sha-512 로 설정합니다.

SCRAM-SHA-512 인증이 활성화된 사용자의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: my-user
  labels:
    strimzi.io/cluster: my-cluster
spec:
  authentication:
    type: scram-sha-512
  # ...

User Operator에 의해 사용자를 생성하면 KafkaUser 리소스와 동일한 이름으로 새 시크릿을 생성합니다. 보안에는 암호 키에 생성된 암호 가 포함되어 있으며, 이 암호는 base64로 인코딩됩니다. 암호를 사용하려면 암호를 디코딩해야 합니다.

사용자 인증 정보가 있는 시크릿 예

apiVersion: v1
kind: Secret
metadata:
  name: my-user
  labels:
    strimzi.io/kind: KafkaUser
    strimzi.io/cluster: my-cluster
type: Opaque
data:
  password: Z2VuZXJhdGVkcGFzc3dvcmQ= 
1

  sasl.jaas.config: b3JnLmFwYWNoZS5rYWZrYS5jb21tb24uc2VjdXJpdHkuc2NyYW0uU2NyYW1Mb2dpbk1vZHVsZSByZXF1aXJlZCB1c2VybmFtZT0ibXktdXNlciIgcGFzc3dvcmQ9ImdlbmVyYXRlZHBhc3N3b3JkIjsK 
2

1
생성된 암호 base64로 인코딩됩니다.
2
SASL SCRAM-SHA-512 인증, base64로 인코딩되는 SASL 구성 문자열입니다.

생성된 암호를 디코딩합니다.

echo "Z2VuZXJhdGVkcGFzc3dvcmQ=" | base64 --decode
14.2.2.3.1. 사용자 정의 암호 구성

사용자가 생성되면 AMQ Streams에서 임의의 암호를 생성합니다. AMQ Streams에서 생성한 암호 대신 자체 암호를 사용할 수 있습니다. 이를 위해 암호를 사용하여 시크릿을 생성하고 KafkaUser 리소스에서 참조합니다.

SCRAM-SHA-512 인증에 대해 암호가 설정된 사용자의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: my-user
  labels:
    strimzi.io/cluster: my-cluster
spec:
  authentication:
    type: scram-sha-512
    password:
      valueFrom:
        secretKeyRef:
          name: my-secret 
1

          key: my-password 
2

  # ...

1
사전 정의된 암호가 포함된 시크릿의 이름입니다.
2
시크릿 내에 저장된 암호의 키입니다.

14.2.3. 사용자 권한 부여

KafkaUser 사용자 지정 리소스를 사용하여 Kafka 클러스터에 액세스해야 하는 사용자(클라이언트)의 권한 부여 규칙을 구성합니다. KafkaUser.spec권한 부여 속성을 사용하여 규칙을 구성합니다. 유형을 지정하면 사용되는 규칙을 제어합니다.

간단한 인증을 사용하려면 KafkaUser.spec.authorization 에서 type 속성을 simple 로 설정합니다. 간단한 권한 부여에서는 Kafka Admin API를 사용하여 Kafka 클러스터 내부의 ACL 규칙을 관리합니다. User Operator의 ACL 관리가 활성화되어 있는지 여부에 관계없이 Kafka 클러스터의 권한 부여 구성에 따라 달라집니다.

  • 간단한 권한 부여의 경우 ACL 관리가 항상 활성화됩니다.
  • OPA 권한 부여의 경우 ACL 관리가 항상 비활성화되어 있습니다. 권한 부여 규칙은 OPA 서버에서 구성됩니다.
  • Red Hat Single Sign-On 권한 부여의 경우 Red Hat Single Sign-On에서 직접 ACL 규칙을 관리할 수 있습니다. 간단한 인증자에게 권한을 구성의 폴백 옵션으로 위임할 수도 있습니다. 간단한 작성자로 위임하는 경우 User Operator는 ACL 규칙 관리도 활성화합니다.
  • 사용자 지정 권한 부여 플러그인을 사용하여 사용자 정의 권한 부여의 경우 Kafka 사용자 정의 리소스의 .spec.kafka.authorization 구성에서 supportsAdminApi 속성을 사용하여 지원을 활성화하거나 비활성화합니다.

권한 부여는 클러스터 전체입니다. 권한 부여 유형은 Kafka 사용자 정의 리소스의 동등한 구성과 일치해야 합니다.

ACL 관리가 활성화되지 않은 경우 AMQ Streams는 ACL 규칙이 포함된 경우 리소스를 거부합니다.

User Operator의 독립 실행형 배포를 사용하는 경우 ACL 관리가 기본적으로 활성화됩니다. STRIMZI_ACLS_ADMIN_API_SUPPORTED 환경 변수를 사용하여 비활성화할 수 있습니다.

인증이 지정되지 않은 경우 User Operator는 사용자에 대한 액세스 권한을 프로비저닝하지 않습니다. 이러한 KafkaUser 가 리소스에 계속 액세스할 수 있는지의 여부는 사용 중인 인증자에 따라 달라집니다. 예를 들어 AclAuthorizer 의 경우 allow.everyone.if.no.acl.found 구성에 따라 결정됩니다.

14.2.3.1. ACL 규칙

AclAuthorizer 는 ACL 규칙을 사용하여 Kafka 브로커에 대한 액세스를 관리합니다.

ACL 규칙은 acls 속성에 지정하는 사용자에게 액세스 권한을 부여합니다.

AclRule 오브젝트에 대한 자세한 내용은 AclRule 스키마 참조를 참조하십시오.

14.2.3.2. Kafka 브로커에 대한 Super 사용자 액세스

Kafka 브로커 구성의 슈퍼 사용자 목록에 사용자를 추가하면 KafkaUser 의 ACL에 정의된 권한 부여 제약 조건에 관계없이 사용자가 클러스터에 대한 무제한 액세스를 허용합니다.

브로커에 대한 슈퍼 사용자 액세스에 대한 자세한 내용은 Kafka 권한 부여 를 참조하십시오.

14.2.3.3. 사용자 할당량

KafkaUser 리소스에 대한 사양 을 구성하여 사용자가 Kafka 브로커에 대한 구성된 액세스 수준을 초과하지 않도록 할당량을 적용할 수 있습니다. 크기 기반 네트워크 사용량 및 시간 기반 CPU 사용률 임계값을 설정할 수 있습니다. 파티션 변경 할당량을 추가하여 사용자 요청에 대해 파티션 변경 요청이 허용되는 속도를 제어할 수도 있습니다.

사용자 할당량이 있는 KafkaUser 의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: my-user
  labels:
    strimzi.io/cluster: my-cluster
spec:
  # ...
  quotas:
    producerByteRate: 1048576 
1

    consumerByteRate: 2097152 
2

    requestPercentage: 55 
3

    controllerMutationRate: 10 
4

1
사용자가 Kafka 브로커로 푸시할 수 있는 데이터 양에 대한 바이트당 할당량
2
사용자가 Kafka 브로커에서 가져올 수 있는 데이터 크기에 대한 바이트당 할당량
3
클라이언트 그룹의 시간 백분율로 CPU 사용률 제한
4
초당 허용된 동시 파티션 생성 및 삭제 작업(변경 사항) 수

이러한 속성에 대한 자세한 내용은 KafkaUserQuotas 스키마 참조를 참조하십시오.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동