3.4. SCRAM セキュリティーでの Kafka ストレージの設定

Kafka クラスターの Salted Challenge Response Authentication Mechanism (SCRAM-SHA-512) を使用するように AMQ Streams Operator および Service Registry Operator を設定できます。

前提条件

  • OperatorHub またはコマンドラインを使用して Service Registry Operator をインストールする。
  • AMQ Streams Operator をインストールする、または Kafka が OpenShift クラスターからアクセスできる。
注記

ここでは、AMQ Streams Operator が利用可能であることを前提としていますが、任意の Kafka デプロイメントを使用できます。この場合、Service Registry Operator が想定する Openshift シークレットを手動で作成する必要があります。

手順

  1. OpenShift Web コンソールで Installed Operators をクリックし、AMQ Streams Operator の詳細を選択してから、Kafka タブをクリックします。
  2. Create Kafka をクリックし、Service Registry ストレージの新しい Kafka クラスターをプロビジョニングします。
  3. 以下のように、Kafka クラスターの SCRAM-SHA-512 認証を使用するように authorization および tls フィールドを設定します。

    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

    Service Registry がデータを保存するために使用するデフォルトの Kafka トピック名は kafkasql-journal です。このトピックは Service Registry によって自動的に作成されます。適切な環境変数 (デフォルト値) を設定して、この動作またはデフォルトのトピック名を上書きできます。

    • REGISTRY_KAFKASQL_TOPIC_AUTO_CREATE=true
    • REGISTRY_KAFKASQL_TOPIC=kafkasql-journal

    Kafka トピックを手動で作成しない場合は、次の手順を省略します。

  4. Kafka Topic タブをクリックしてから Create 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-scram
    spec:
      partitions: 2
      replicas: 1
      config:
        retention.ms: 604800000
        segment.bytes: 1073741824
  5. Kafka User リソースを作成し、Service 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
    注記

    Service Registry が必要とするトピックおよびリソースに合わせて承認を設定する必要があります。これは、単純な許容例です。

  6. Workloads をクリックしてから Secrets をクリックし、Service Registry が Kafka クラスターに接続するために AMQ Stremas によって作成される 2 つのシークレットを見つけます。

    • my-cluster-cluster-ca-cert - Kafka クラスターの PKCS12 トラストストアが含まれます。
    • my-user - ユーザーのキーストアが含まれます。

      注記

      シークレットの名前は、クラスターまたはユーザー名によって異なります。

  7. シークレットを手動で作成する場合は、以下のキーと値のペアを含める必要があります。

    • my-cluster-ca-cert

      • ca.p12 - PKCS12 形式のトラストストア
      • ca.password - トラストストアのパスワード
    • my-user

      • password - ユーザーパスワード
  8. Service 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
重要

プレーンでセキュアでないユースケースとは別の bootstrapServers アドレスを使用する必要があります。アドレスは TLS 接続をサポートする必要があり、type: tls フィールドで指定された Kafka リソースにあります。