Configurazione delle ACL di Kafka

Le liste di controllo dell'accesso (ACL, Access Control List) Kafka vengono utilizzate per specificare le autorizzazioni per le risorse cluster in Streaming con Apache Kafka.

Principal
Utente o applicazione autenticata dal cluster Kafka. Il formato del nome principale dipende dal tipo di meccanismo di autenticazione utilizzato, ad esempio SASL/SCRAM o mTLS.
Operazioni
Azione eseguita su una risorsa del cluster Kafka, ad esempio creazione, eliminazione, produzione o utilizzo.
Risorse
Una risorsa cluster Kafka, ad esempio cluster, broker, gruppo di broker o argomento. Se a una risorsa non è associata un'ACL, solo un utente privilegiato può accedere alla risorsa.

Le ACL di Kafka controllano quale principal può eseguire operazioni sulle risorse. Se si creano entrambe le ACL allow e deny su una risorsa, le ACL deny hanno la precedenza sulle ACL allow.

Per configurare un'ACL per un cluster, completare i task riportati di seguito.

  1. Abilita responsabile autorizzazioni
  2. Creazione dell'ACL Kafka
  3. Aggiornare la configurazione del cluster

Abilita responsabile autorizzazioni

In Apache Kafka, l'autorizzazione è un componente che applica le liste di controllo dell'accesso (ACL, Access Control List) e garantisce che solo gli utenti o i client autorizzati eseguano le azioni definite nelle ACL.

Aggiornare il file di configurazione config_name.properties per il cluster con le seguenti informazioni:
authorizer.class.name=kafka.security.authorizer.AclAuthorizer

Creazione dell'ACL Kafka

Per aggiungere, rimuovere o elencare le ACL in un cluster, utilizzare l'interfaccia CLI del responsabile autorizzazioni Apache Kafka.

Le regole di accesso nelle ACL di Apache Kafka vengono create utilizzando il formato seguente:

Principal P is [Allowed/Denied] Operation O From Host H on any Resource R matching ResourcePattern RP

Qui,

  • Principal P è l'utente o il client al quale viene concesso o negato l'accesso.
  • Consentito/Negato è l'autorizzazione impostata sul principal.
  • Operazione O è l'azione sulla risorsa, ad esempio lettura, scrittura, creazione ed eliminazione.
  • Host H è l'origine della richiesta. Il carattere jolly * viene utilizzato per rappresentare qualsiasi host.
  • Risorsa R è l'entità Kafka, ad esempio un argomento o un cluster.
  • ResourcePattern RP indica la corrispondenza della risorsa. Ad esempio, ResourcePattern RP potrebbe essere PREFIXED con un valore logs-, il che significa che l'ACL si applica a tutti gli argomenti i cui nomi iniziano con logs-. Se RP non corrisponde a una specifica risorsa R, R non dispone di ACL associate.
Eseguire il comando seguente per creare una regola ACL che consenta a un utente Alice di scrivere su tutti gli argomenti che iniziano con logs- da qualsiasi 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

Aggiorna configurazione cluster

Quando si crea un cluster, viene creato un file di configurazione predefinito per il cluster. La proprietà ACL è impostata in modo da consentire a tutti di accedere alle risorse quando non viene trovata alcuna ACL per il cluster.

Modificare la proprietà allow.everyone.if.no.acl.found in false per applicare un accesso di sicurezza deny by default. Quando si imposta il valore di questa proprietà su false, solo i client o gli utenti autorizzati nell'ACL e gli utenti privilegiati possono accedere alle risorse.
allow.everyone.if.no.acl.found=false
È anche possibile mantenere il valore predefinito true per allow.everyone.if.no.acl.found per consentire l'accesso illimitato alle risorse senza ACL, applicando al contempo le ACL per le risorse che le dispongono.