ACLs für AKHQ (andere UIs wahrscheinlich auch)
[demos/kafka/training] / README.sh
1 #!/bin/bash
2
3 if [ "$1" = "cleanup" ]
4 then
5   docker-compose -f docker/docker-compose.yml down -t0 -v --remove-orphans
6   exit
7 fi
8
9 ( cd docker; ./README.sh )
10
11 docker-compose -f docker/docker-compose.yml up --remove-orphans setup || exit 1
12 docker-compose -f docker/docker-compose.yml ps
13
14 docker-compose -f docker/docker-compose.yml exec cli kafka-configs \
15   --zookeeper zookeeper:2181 \
16   --alter \
17   --add-config 'SCRAM-SHA-512=[password=schemaregistry-secret]' \
18   --entity-type users \
19   --entity-name schemaregistry
20 docker-compose -f docker/docker-compose.yml exec cli kafka-configs \
21   --zookeeper zookeeper:2181 \
22   --alter \
23   --add-config 'SCRAM-SHA-512=[password=connect-secret]' \
24   --entity-type users \
25   --entity-name connect
26 docker-compose -f docker/docker-compose.yml exec cli kafka-configs \
27   --zookeeper zookeeper:2181 \
28   --alter \
29   --add-config 'SCRAM-SHA-512=[password=ui-secret]' \
30   --entity-type users \
31   --entity-name ui
32 docker-compose -f docker/docker-compose.yml exec cli kafka-configs \
33   --zookeeper zookeeper:2181 \
34   --alter \
35   --add-config 'SCRAM-SHA-512=[password=client-secret]' \
36   --entity-type users \
37   --entity-name client
38
39 # Nicht nötig, da `super.users=User:ANONYMOUS` gesetzt wurde
40 # Ohne diesen Eintrag wären diverse ACLs nötig, bevor BROKER funktioniert!
41 # docker-compose exec cli kafka-acls --authorizer-properties zookeeper.connect=zookeeper zookeeper:2181 --add --allow-principal User:ANONYMOUS --operation ALL --topic __CruiseControlMetrics --group=*
42
43 # schema-registry
44 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
45   --authorizer-properties zookeeper.connect=zookeeper \
46   --add \
47   --allow-principal User:schemaregistry \
48   --topic _schemas \
49   --consumer --group=schema-registry \
50   --producer
51 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
52   --authorizer-properties zookeeper.connect=zookeeper \
53   --add \
54   --allow-principal User:schemaregistry \
55   --topic _schemas \
56   --operation=DescribeConfigs
57
58 kafkacat -L -b :9092 -Xsecurity.protocol=sasl_plaintext -Xsasl.mechanisms=SCRAM-SHA-512 -Xsasl.username=client -Xsasl.password=client-secret
59
60 docker-compose -f docker/docker-compose.yml up -d schema-registry
61 while [[ ! $(http :8085/subjects 2> /dev/null) ]]; do echo Waiting for schema-registry; sleep 1; done
62 cat user-v1.schema|http POST http://localhost:8085/subjects/user/versions "Content-Type:application/vnd.schemaregistry.v1+json"
63 http GET http://0:8085/subjects/user/versions/1/schema
64
65 # kafka-connect
66 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
67   --authorizer-properties zookeeper.connect=zookeeper \
68   --add \
69   --allow-principal User:connect \
70   --topic __connect \
71   --resource-pattern-type prefixed \
72   --consumer --group=kafka-connect \
73   --producer
74 while [[ ! $(http :8083/connectors 2> /dev/null) ]]; do echo Waiting for schema-registry; sleep 1; done
75
76 # BEACHTE: Der Wildcard * benötigt den Matching-Typ LITERAL
77 # BEACHTE: Die * müssen vor der Bash geschützt werden
78 docker-compose -f docker/docker-compose.yml exec cli kafka-acls \
79   --authorizer-properties zookeeper.connect=zookeeper \
80   --add \
81   --allow-principal User:ui \
82   --cluster '*' \
83   --topic '*' \
84   --group '*' \
85   --transactional-id '*'