ACLs do Apache Kafka
O Apache Kafka tem um autorizador conectável e já vem com uma implementação de autorizador pronta. O Amazon MSK habilita esse autorizador no arquivo server.properties dos agentes.
As ACLs do Apache Kafka têm o formato "O principal P é [permitido/negado] para a operação O do host H em qualquer recurso R correspondente ao padrão de recurso RP". Se o RP não corresponder a um recurso R específico, R não terá ACLs associadas e, portanto, ninguém além de superusuários terá permissão para acessar R. Para alterar esse comportamento do Apache Kafka, defina a propriedade allow.everyone.if.no.acl.found como true. O Amazon MSK a define como true por padrão. Isso significa que, com clusters do Amazon MSK, se você não definir explicitamente as ACLs em um recurso, todos os principais poderão acessá-lo. Se você habilitar ACLs em um recurso, somente os principais autorizados poderão acessá-lo. Se você quiser restringir o acesso a um tópico e autorizar um cliente usando a autenticação mútua TLS, adicione ACLs usando a CLI de autorização do Apache Kafka. Para obter mais informações sobre adicionar, remover e listar ACLs, consulte Kafka Authorization Command Line Interface
Como o Amazon MSK configura os agentes como superusuários, eles podem acessar todos os tópicos. Isso ajuda os agentes a replicar mensagens da partição primária, quer a allow.everyone.if.no.acl.found propriedade esteja definida ou não para a configuração do cluster.
Como adicionar ou remover o acesso de leitura e gravação a um tópico
-
Adicione os agentes à tabela de ACL para permitir que eles leiam todos os tópicos que possuem ACLs. Para conceder acesso de leitura a um tópico para os seus agentes, execute o comando a seguir em uma máquina cliente capaz de se comunicar com o cluster do MSK.
Substitua
Distinguished-Namepelo DNS de qualquer um dos agentes de bootstrap do cluster e substitua a string antes do primeiro ponto desse nome distinto por um asterisco (*). Por exemplo, se um dos agentes de bootstrap do cluster tiver o DNSb-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com, substituaDistinguished-Nameno comando a seguir por*.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com. Para ver informações sobre como obter os agentes de bootstrap, consulte Obter os agentes de bootstrap para um cluster do Amazon MSK.<path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topicTopic-Name -
Para conceder acesso de leitura a uma aplicação cliente, execute o comando a seguir na máquina de cliente. Se usar autenticação TLS mútua, use o mesmo
Distinguished-Nameusado ao criar a chave privada.<path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topicTopic-NamePara remover o acesso de leitura, é possível executar o mesmo comando, substituindo
--addpor--remove. -
Para conceder acesso de gravação a um tópico, execute o comando a seguir na máquina de cliente. Se usar autenticação TLS mútua, use o mesmo
Distinguished-Nameusado ao criar a chave privada.<path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Write --topicTopic-NamePara remover o acesso de gravação, é possível executar o mesmo comando, substituindo
--addpor--remove.