3.4. 使用 SCRAM 安全性配置 Kafka 存储


您可以将 AMQ Streams Operator 和 Apicurio Registry Operator 配置为对 Kafka 集群使用 Salted Challenge Response Authentication Mechanism (SCRAM-SHA-512)。

前提条件

  • 您必须使用 OperatorHub 或命令行安装 Apicurio Registry Operator。
  • 您必须安装 AMQ Streams Operator 或具有 Kafka 命令从 OpenShift 集群访问。
注意

本节假设 AMQ Streams Operator 可用,但您可以使用任何 Kafka 部署。在这种情况下,您必须手动创建 Apicurio Registry Operator 期望的 Openshift secret。

流程

  1. 在 OpenShift Web 控制台中,点 Installed Operators,选择 AMQ Streams Operator 详情,然后选择 Kafka 选项卡。
  2. Create Kafka 为 Apicurio Registry 存储置备新的 Kafka 集群。
  3. authorizationtls 字段配置为对 Kafka 集群使用 SCRAM-SHA-512 身份验证,例如:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: registry-example-kafkasql-scram
      # 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: scram-sha-512
        authorization:
          type: simple
      entityOperator:
        topicOperator: {}
        userOperator: {}
      zookeeper:
        storage:
          type: ephemeral
        replicas: 3
    Copy to Clipboard Toggle word wrap

    Apicurio Registry 用来存储数据的默认 Kafka 主题名称为 kafkasql-journal。本主题由 Apicurio Registry 自动创建。您可以通过设置适当的环境变量(默认值)来覆盖此行为或默认主题名称:

    • REGISTRY_KAFKASQL_TOPIC_AUTO_CREATE=true
    • REGISTRY_KAFKASQL_TOPIC=kafkasql-journal

    如果您决定不手动创建 Kafka 主题,请跳过下一步。

  4. 点击 Kafka 主题 选项卡,然后创建 Kafka 主题 以创建 kafkasql-journal 主题:

    apiVersion: kafka.strimzi.io/v1beta1
    kind: KafkaTopic
    metadata:
      name: kafkasql-journal
      labels:
        strimzi.io/cluster: my-cluster
      namespace: registry-example-kafkasql-scram
    spec:
      partitions: 2
      replicas: 1
      config:
        retention.ms: 604800000
        segment.bytes: 1073741824
    Copy to Clipboard Toggle word wrap
  5. 创建一个 Kafka User 资源,为 Apicurio Registry 用户配置 SCRAM 身份验证和授权。您可以在 metadata 部分中指定用户名,或使用默认的 my-user

    apiVersion: kafka.strimzi.io/v1beta1
    kind: KafkaUser
    metadata:
      name: my-user
      labels:
        strimzi.io/cluster: my-cluster
      namespace: registry-example-kafkasql-scram
    spec:
      authentication:
        type: scram-sha-512
      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
    Copy to Clipboard Toggle word wrap
    注意

    您必须为 Apicurio Registry 所需的主题和资源配置授权。这是一个简单的许可示例。

  6. Workloads然后点 AMQ Streams 为 Apicurio Registry 创建的两个 secret 来连接到 Kafka 集群:

    • my-cluster-cluster-ca-cert - 包含 Kafka 集群的 PKCS12 信任存储
    • my-user - 包含用户的密钥存储

      注意

      secret 的名称会根据集群或用户名而有所不同。

  7. 如果手动创建 secret,它们必须包含以下键值对:

    • my-cluster-ca-cert

      • ca.p12 - PKCS12 格式的信任存储
      • ca.password - truststore password
    • my-user

      • Password - 用户密码
  8. 配置以下示例设置以部署 Apicurio Registry:

    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry-kafkasql
    spec:
      configuration:
        persistence: "kafkasql"
        kafkasql:
          bootstrapServers: "my-cluster-kafka-bootstrap.registry-example-kafkasql-scram.svc:9093"
          security:
            scram:
              truststoreSecretName: my-cluster-cluster-ca-cert
              user: my-user
              passwordSecretName: my-user
    Copy to Clipboard Toggle word wrap
重要

您必须使用与普通不安全的用例不同的 bootstrapServers 地址。地址必须支持 TLS 连接,并在 type: tls 字段下的指定 Kafka 资源中找到。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat