Confluent for Kubernetes を使用した単純な ACL の構成

アクセス制御リスト認可 を使用する Kafka をデプロイするには、Kafka の CustomResource に設定を指定します。

kind: Kafka
spec:
  authorization:
    type: simple             --- [1]
    superUsers:
  • [1](必須)``simple`` に設定します。単純な認可(ZooKeeper ベースの ACL)が構成されていれば、それを使用するように Kafka が構成されます。

mTLS 認証: 証明書からのプリンシパルの抽出

mTLS 認証が有効の場合、Confluent Platform では認証されるプリンシパルの ID が、クライアント証明書から取得されるデータをもとに決定されます。ユーザー名の決定には、証明書の Subject セクションが使用されます。

たとえば、次の証明書のサブジェクト(C=US, ST=CA, L=Palo Alto)の場合、ユーザー名は User:L=Palo Alto,ST=CA,C=US のように取得されます。

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            omitted...
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, ST=Palo Alto, L=CA, O=Company, OU=Engineering, CN=TestCA
        Validity
            Not Before: Mar 28 16:37:00 2019 GMT
            Not After : Mar 26 16:37:00 2024 GMT
        Subject: C=US, ST=CA, L=Palo Alto
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:

User:ANONYMOUS は、内部クライアントやブローカー間の通信に使用されるデフォルトユーザーです。

Kafka が mTLS 認証を使用するように構成されている場合は、User:ANONYMOUS に加えて証明書ユーザー名が必要です。

一般に、Confluent Platform のユーザーやクライアントをいくつも持つことになります。複数のユーザー/クライアントの間でクライアント証明書を共有することも考えられますが、ベストプラクティスとしては、ユーザーや証明書それぞれに一意のクライアント証明書を発行し、各証明書が一意のサブジェクト/ユーザー名を持つようにしてください。各ユーザー/クライアントについて、Confluent Platform 内でアクセスが許可される対象を決定し、該当するクライアント証明書のサブジェクト/ユーザー名に対応する ACL が作成されていることを確認してください。「ACL を使用した認可」の手順に従って、Kafka オブジェクトの ACL 認可を有効にしてください。