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