Configurando ACLs do Kafka

As listas de controle de acesso (ACLs) do Kafka são usadas para especificar permissões para recursos de cluster no serviço Streaming com Apache Kafka.

Característica principal
Um usuário ou aplicativo autenticado pelo cluster do Kafka. O formato do nome principal depende do tipo de mecanismo de autenticação usado, como SASL/SCRAM ou mTLS.
Operações
Uma ação executada em um recurso de cluster do Kafka, como criar, excluir, produzir ou consumir.
Recursos
Um recurso de cluster do Kafka, como cluster, broker, grupo de broker ou tópico. Se um recurso não tiver uma ACL associada, somente um superusuário poderá acessar o recurso.

As ACLs do Kafka controlam qual principal pode executar operações nos recursos. Se você criar ACLs allow e deny em um recurso, as ACLs deny terão precedência sobre as ACLs allow.

Execute as tarefas a seguir para configurar uma ACL para um cluster.

  1. Ativar o Autorizador
  2. Criar a ACL do Kafka
  3. Atualizar a Configuração do Cluster

Ativar o Autorizador

No Apache Kafka, o autorizador é um componente que impõe ACLs (Listas de Controle de Acesso) e garante que somente usuários ou clientes autorizados executem as ações definidas nas ACLs.

Atualize o config_name.properties arquivo de configuração para o cluster com as seguintes informações:
authorizer.class.name=kafka.security.authorizer.AclAuthorizer

Criar a ACL do Kafka

Para adicionar, remover ou listar ACLs em um cluster, use a CLI do autorizador do Apache Kafka.

As regras de acesso nas ACLs do Apache Kafka são criadas com o seguinte formato:

Principal P is [Allowed/Denied] Operation O From Host H on any Resource R matching ResourcePattern RP

Aqui,

  • Principal é o usuário ou cliente ao qual o acesso é concedido ou negado.
  • Permitido/Negado é a permissão definida no principal.
  • Operação O é a ação no recurso, como leitura, gravação, criação e exclusão.
  • Host H é a origem que está fazendo a solicitação. O caractere curinga * é usado para representar qualquer host.
  • Recurso R é a entidade Kafka, como tópico ou cluster.
  • ResourcePattern RP é como o recurso é correspondido. Por exemplo, ResourcePattern RP poderia ser PREFIXED com um valor logs-, o que significa que a ACL se aplica a todos os tópicos cujos nomes comecem com logs-. Se RP não corresponder a um recurso específico R, R não terá ACLs associadas.
Execute o seguinte comando para criar uma regra ACL que permita ao usuário Alice gravar em todos os tópicos começando com logs- de qualquer host:
kafka-acls --bootstrap-server <bootstrap-server-url> \
--command-config <config-file-path> \
--add \
--allow-principal User:Alice \
--operation Write \
--topic logs- \
--resource-pattern-type prefixed

Atualizar a Configuração do Cluster

Quando você cria um cluster, um arquivo de configuração padrão é criado para o cluster. A propriedade ACL está definida para permitir que todos acessem recursos quando nenhuma ACL for encontrada para o cluster.

Altere a propriedade allow.everyone.if.no.acl.found para false para impor um acesso de segurança deny by default. Quando você define o valor dessa propriedade como falso, somente os clientes ou usuários permitidos na ACL e superusuários podem acessar os recursos.
allow.everyone.if.no.acl.found=false
Você também pode manter o valor padrão true para allow.everyone.if.no.acl.found para permitir acesso irrestrito a recursos sem ACLs ao mesmo tempo em que impõe ACLs a recursos que as possuem.