ACLs do Apache Kafka - Amazon Managed Streaming for Apache Kafka

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

ACLs do Apache Kafka

O Apache Kafka tem um autorizador conectável e vem com uma implementação autorizadora. out-of-box O Amazon MSK habilita esse autorizador no arquivo server.properties dos agentes.

As ACLs do Apache Kafka têm o formato “Principal P é [Permitida/Negada] Operação O do Host H em qualquer recurso R correspondente a RP”. ResourcePattern 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.

Além do cliente, também é necessário conceder a todos os agentes acesso aos seus tópicos para que os agentes possam replicar mensagens da partição primária. Se os agentes não tiverem acesso a um tópico, ocorrerá uma falha na replicação dele.

Como adicionar ou remover o acesso de leitura e gravação a um tópico
  1. 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-Name pelo 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 DNS b-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com, substitua Distinguished-Name no 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 Como obter agentes de bootstrap para um cluster do Amazon MSK.

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --authorizer-properties --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
  2. Para conceder acesso de leitura 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-Name usado ao criar a chave privada.

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --authorizer-properties --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name

    Para remover o acesso de leitura, é possível executar o mesmo comando, substituindo --add por --remove.

  3. 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-Name usado ao criar a chave privada.

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --authorizer-properties --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Write --topic Topic-Name

    Para remover o acesso de gravação, é possível executar o mesmo comando, substituindo --add por --remove.