O OCI Streaming with Apache Kafka é um serviço gerenciado da OCI que permite que você execute um cluster Kafka com todas as funcionalidades do Apache Kafka sem se preocupar em gerenciar a infraestrutura onde ele roda.
Você tem duas opções para ativar a ACL:
Durante a criação do cluster na tela de parâmetros configurando essas linhas:
allow.everyone.if.no.acl.found para false e authorizer para kafka.security.authorizer.AclAuthorizer, ficando algo assim:

Após o cluster criado
Caso o seu cluster já esteja no ar e queira ativar as ACLs, o processo atualmente precisa ser feito via oci cli ou API, no nosso caso vamos usar o OCI CLI.
Vamos pegar qual a configuração que está aplicada ao cluster
oci kafka cluster get --kafka-cluster-id ocid1.kafkacluster.oc1.uk-london-1.xxxxx | grep config
Com o OCID da configuração podemos pegar quais os parâmetros atuais, isso é importante pois o processo para atualizar a config faz um replace da configuração atual!
oci kafka cluster-config get --kafka-cluster-config-id ocid1.kafkaclusterconfig.oc1.uk-london-1.xxxxx
Para facilitar as coisas, vamos salvar os properties em um arquivo json e adicionar os parâmetros que precisamos:
{
"properties": {
"allow.everyone.if.no.acl.found": "false",
"auto.create.topics.enable": "true",
"default.replication.factor": "1",
"leader.imbalance.per.broker.percentage": "1",
"min.insync.replicas": "1",
"offsets.topic.replication.factor": "1",
"transaction.state.log.min.isr": "1",
"transaction.state.log.replication.factor": "1",
"authorizer":"kafka.security.authorizer.AclAuthorizer"
}
}
E agora podemos fazer um update da configuração passando esse .json como parametro:
oci kafka cluster-config update --kafka-cluster-config-id ocid1.kafkaclusterconfig.oc1.uk-london-1.xxxxx --latest-config file://params.json
Esse comando vai gerar uma nova versão da configuração, veja no campo version-number.
Agora podemos atualizar a configuração no cluster com o seguinte comando:
oci kafka cluster update --kafka-cluster-id ocid1.kafkacluster.oc1.uk-london-1.xxxxxx --cluster-config-id ocid1.kafkaclusterconfig.oc1.uk-london-1.xxxxxxx --cluster-config-version XXX
Onde o –cluster-config-version deve ser o version-number retornado pelo comando de update, aqui vai uma dica importante: Você pode reverter a configuração aplicada usando um version-number anterior.
Com os parametros configurados já podemos criar as ACLs, aqui para facilitar estou usando um arquivo de configuração para meu superuser e outro para meu usuário comum.
[opc@b-tnk config]$ cat consumer_super_user.properties
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="super-user-xxxx" password="xxxxx";
[opc@b-tnk config]$ cat consumer_tanaka.properties
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="tanaka" password="xxxxx";
Para criar um usuário no cluster você pode usar o seguinte comando, perceba que estou passando o properties do superuser:
./kafka-configs.sh --bootstrap-server bootstrap-clstr-xxxx.kafka.uk-london-1.oci.oraclecloud.com:9092 \
--alter --add-config 'SCRAM-SHA-512=[iterations=8192,password=xxxx]' \
--entity-type users \
--entity-name tanaka \
--command-config ../config/consumer_super_user.properties
Podemos criar um tópico de teste
./kafka-topics.sh --bootstrap-server bootstrap-clstr-xxxxx.kafka.uk-london-1.oci.oraclecloud.com:9092 \
--command-config ../config/consumer_super_user.properties \
--create --topic topico-tanaka2
E uma ACL permitindo que o usuário tanaka possa escrever em tópicos que comecem com topico-tanaka:
./kafka-acls.sh --bootstrap-server bootstrap-clstr-xxxxx.kafka.uk-london-1.oci.oraclecloud.com:9092 \
--command-config ../config/consumer_super_user.properties \
--add \
--allow-principal User:tanaka \
--operation Write \
--topic topico-tanaka \
--resource-pattern-type prefixed
E agora podemos validar que a ACL está funcionando, aqui como superuser eu consigo ver mais tópicos do que com o usuário normal:
[opc@b-tnk bin]$ ./kafka-topics.sh --bootstrap-server bootstrap-clstr-xxxxxx.kafka.uk-london-1.oci.oraclecloud.com:9092 --list
--command-config ../config/consumer_super_user.properties
logs-app
teste
topico-tanaka
topico-tanaka1
topico-tanaka2
E quando eu listo com o usuário tanaka:
[opc@b-tnk bin]$ ./kafka-topics.sh --bootstrap-server bootstrap-clstr-xxxxxxx.kafka.uk-london-1.oci.oraclecloud.com:9092 --list --command-config ../config/consumer_tanaka.properties
topico-tanaka
topico-tanaka1
topico-tanaka2
E com um terceiro usuário, com menos permissões(outras ACLs aplicadas):
[opc@b-tnk bin]$ ./kafka-topics.sh --bootstrap-server bootstrap-clstr-xxxxx.kafka.uk-london-1.oci.oraclecloud.com:9092 --list --command-config ../config/consumer_user.properties
logs-app
Esse foi um exemplo bem simples de como a ACL pode ser implementada no OCI Streaming With Kafka, caso queira mais detalhes de quais parâmetros podem ser alterados, você pode (e deve) consultar a documentação oficial do serviço: https://docs.public.content.oci.oraclecloud.com/en-us/iaas/Content/kafka/config.htm