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.
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.
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 serPREFIXED
com um valorlogs-
, o que significa que a ACL se aplica a todos os tópicos cujos nomes comecem comlogs-
. Se RP não corresponder a um recurso específico R, R não terá ACLs associadas.
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.
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
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.