ACL de Apache Kafka - Transmisión administrada de Amazon para Apache Kafka

ACL de Apache Kafka

Apache Kafka tiene un autorizador conectable y se envía con una implementación de autorizador lista para usar. Amazon MSK habilita este autorizador en el archivo server.properties de los agentes.

Las ACL de Apache Kafka tienen el formato "Principal P is [Allowed/Denied] Operation O From Host H on any Resource R matching ResourcePattern RP". Si RP no coincide con un recurso específico R, R no tiene ACL asociadas y, por lo tanto, nadie más que los superusuarios tiene permiso para acceder a R. Para cambiar este comportamiento de Apache Kafka, establezca la propiedad allow.everyone.if.no.acl.found en true. Amazon MSK lo establece como true de forma predeterminada. Esto significa que con los clústeres de Amazon MSK, si no establece explícitamente las ACL en un recurso, todos los principales pueden acceder a este recurso. Si habilita las ACL en un recurso, sólo los principales autorizados pueden acceder a él. Si desea restringir el acceso a un tema y autorizar a un cliente mediante la autenticación mutua de TLS, agregue ACL mediante la CLI del autorizador de Apache Kafka. Para obtener más información acerca de cómo agregar, eliminar y enumerar ACL, consulte la Interfaz de línea de comandos de Kafka.

Dado que Amazon MSK configura los agentes como superusuarios, estos pueden acceder a todos los temas. Esto ayuda a los agentes a replicar mensajes desde la partición principal, independientemente de que la propiedad allow.everyone.if.no.acl.found esté definida o no en la configuración del clúster.

Adición o eliminación del acceso de lectura y escritura a un tema
  1. Agregue sus agentes a la tabla de ACL para permitirles leer de todos los temas que tengan ACL en su lugar. Para conceder a los agentes acceso de lectura a un tema, ejecute el siguiente comando en un equipo cliente que pueda comunicarse con el clúster de MSK.

    Reemplace el Nombre-distinguido por el DNS de cualquiera de los agentes de arranque del clúster y, a continuación, reemplace la cadena antes del primer punto de este nombre distintivo por un asterisco (*). Por ejemplo, si uno de los agentes de arranque del clúster tiene el DNS b-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com, reemplace Distinguished-Name en el siguiente comando por *.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com. Para obtener información sobre cómo obtener los agentes de arranque, consulte Obtención de agentes de arranque para un clúster de Amazon MSK.

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
  2. Para conceder a una aplicación cliente acceso de lectura a un tema, ejecute el siguiente comando en la máquina cliente. Si usa una autenticación TLS mutua, use el mismo Distinguished-Name que utilizó al crear la clave privada.

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

    Para eliminar el acceso de lectura, puede ejecutar el mismo comando, sustituyendo --add por --remove.

  3. Para conceder acceso de escritura a un tema, ejecute el siguiente comando en su máquina del cliente. Si usa una autenticación TLS mutua, use el mismo Distinguished-Name que utilizó al crear la clave privada.

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

    Para eliminar el acceso de escritura, puede ejecutar el mismo comando, sustituyendo --add por --remove.