3.3. TLS 보안을 사용하여 Kafka 스토리지 구성


AMQ Streams Operator 및 Service Registry Operator를 구성하여 암호화된 TLS(Transport Layer Security) 연결을 사용할 수 있습니다.

사전 요구 사항

  • OperatorHub 또는 명령줄을 사용하여 Service Registry Operator를 설치했습니다.
  • AMQ Streams Operator를 설치하거나 OpenShift 클러스터에서 Kafka에 액세스할 수 있습니다.
참고

이 섹션에서는 AMQ Streams Operator를 사용할 수 있다고 가정하지만 Kafka 배포를 사용할 수 있습니다. 이 경우 Service Registry Operator에서 예상하는 Openshift 시크릿을 수동으로 생성해야 합니다.

프로세스

  1. OpenShift 웹 콘솔에서 Installed Operators 를 클릭하고 AMQ Streams Operator 세부 정보를 선택한 다음 Kafka 탭을 선택합니다.
  2. Create Kafka 를 클릭하여 Service Registry 스토리지의 새 Kafka 클러스터를 프로비저닝합니다.
  3. Kafka 클러스터에 TLS 인증을 사용하도록 권한 부여tls 필드를 구성합니다. 예를 들면 다음과 같습니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: registry-example-kafkasql-tls
      # Change or remove the explicit namespace
    spec:
      kafka:
        config:
          offsets.topic.replication.factor: 3
          transaction.state.log.replication.factor: 3
          transaction.state.log.min.isr: 2
          log.message.format.version: '2.7'
          inter.broker.protocol.version: '2.7'
        version: 2.7.0
        storage:
          type: ephemeral
        replicas: 3
        listeners:
          - name: tls
            port: 9093
            type: internal
            tls: true
            authentication:
              type: tls
        authorization:
          type: simple
      entityOperator:
        topicOperator: {}
        userOperator: {}
      zookeeper:
        storage:
          type: ephemeral
        replicas: 3

    데이터를 저장하기 위해 Service Registry에서 자동으로 생성한 기본 Kafka 주제 이름은 kafkasql-journal 입니다. 환경 변수를 설정하여 이 동작 또는 기본 주제 이름을 재정의할 수 있습니다. 기본값은 다음과 같습니다.

    • REGISTRY_KAFKASQL_TOPIC_AUTO_CREATE=true
    • REGISTRY_KAFKASQL_TOPIC=kafkasql-journal

    Kafka 주제를 수동으로 생성하지 않으려면 다음 단계를 건너뜁니다.

  4. Kafka Topic 탭을 클릭한 다음 Kafka Topic 생성 을 클릭하여 kafkasql-journal 주제를 생성합니다.

    apiVersion: kafka.strimzi.io/v1beta1
    kind: KafkaTopic
    metadata:
      name: kafkasql-journal
      labels:
        strimzi.io/cluster: my-cluster
      namespace: registry-example-kafkasql-tls
    spec:
      partitions: 2
      replicas: 1
      config:
        cleanup.policy: compact
  5. Kafka 사용자 리소스를 생성하여 서비스 레지스트리 사용자에 대한 인증 및 권한 부여를 구성합니다. metadata 섹션에 사용자 이름을 지정하거나 기본 my-user 를 사용할 수 있습니다.

    apiVersion: kafka.strimzi.io/v1beta1
    kind: KafkaUser
    metadata:
      name: my-user
      labels:
        strimzi.io/cluster: my-cluster
      namespace: registry-example-kafkasql-tls
    spec:
      authentication:
        type: tls
      authorization:
        acls:
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: topic
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: cluster
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: transactionalId
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: group
        type: simple
    참고

    이 간단한 예제에서는 관리자 권한을 가정하고 Kafka 주제를 자동으로 생성합니다. 서비스 레지스트리에 필요한 주제 및 리소스에 대해 권한 부여 섹션을 구체적으로 구성해야 합니다.

    다음 예제에서는 Kafka 주제를 수동으로 생성할 때 필요한 최소 구성을 보여줍니다.

     ...
      authorization:
        acls:
        - operations:
            - Read
            - Write
          resource:
            name: kafkasql-journal
            patternType: literal
            type: topic
        - operations:
            - Read
            - Write
          resource:
            name: apicurio-registry-
            patternType: prefix
            type: group
        type: simple
  6. 워크로드 및 시크릿을 클릭하여 AMQ Streams가 Kafka 클러스터에 연결하기 위해 Service Registry에서 생성하는 두 가지 시크릿을 찾습니다.

    • my-cluster-cluster-ca-cert - Kafka 클러스터의 PKCS12 신뢰 저장소 포함
    • my-user - 사용자의 키 저장소 포함

      참고

      시크릿 이름은 클러스터 또는 사용자 이름에 따라 다를 수 있습니다.

  7. 수동으로 보안을 생성하는 경우 다음 키-값 쌍을 포함해야 합니다.

    • my-cluster-ca-cert

      • ca.p12 - PKCS12 형식의 신뢰 저장소
      • ca.password - truststore 암호
    • my-user

      • user.p12 - PKCS12 형식의 키 저장소
      • user.password - 키 저장소 암호
  8. 서비스 레지스트리를 배포하도록 다음 예제 구성을 구성합니다.

    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry-kafkasql-tls
    spec:
      configuration:
        persistence: "kafkasql"
        kafkasql:
          bootstrapServers: "my-cluster-kafka-bootstrap.registry-example-kafkasql-tls.svc:9093"
          security:
            tls:
              keystoreSecretName: my-user
              truststoreSecretName: my-cluster-cluster-ca-cert
중요

일반 비보안 사용 사례와 다른 bootstrapServers 주소를 사용해야 합니다. 주소는 TLS 연결을 지원해야 하며 type: tls 필드의 지정된 Kafka 리소스에 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.