Skip to content

Instantly share code, notes, and snippets.

@di7spider
Last active July 29, 2025 09:07
Show Gist options
  • Select an option

  • Save di7spider/dfc6dbe237d3dc3bd0cac8b82eb8fdd4 to your computer and use it in GitHub Desktop.

Select an option

Save di7spider/dfc6dbe237d3dc3bd0cac8b82eb8fdd4 to your computer and use it in GitHub Desktop.
Basic auth bitnami/schema-registry 8.0 (docker compose.yaml)
# see https://github.com/bitnami/containers/blob/main/bitnami/kafka/README.md
# see https://github.com/bitnami/containers/blob/main/bitnami/schema-registry/README.md
# see https://docs.confluent.io/platform/current/schema-registry/security/index.html#configuring-the-rest-api-for-basic-http-authentication
services:
kafka:
image: bitnami/kafka:4.0
volumes:
- kafka_data:/bitnami/kafka
ports:
- ${KAFKA_EXTERNAL_PORT}:${KAFKA_INTERNAL_PORT}
networks:
- infrastructure
environment:
KAFKA_CFG_NODE_ID: 1
KAFKA_CLUSTER_ID: ${KAFKA_CLUSTER_ID}
KAFKA_CFG_PROCESS_ROLES: controller,broker
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
KAFKA_CFG_LISTENERS: SASL_PLAINTEXT://:${KAFKA_INTERNAL_PORT},CONTROLLER://:${KAFKA_CONTROLLER_INTERNAL_PORT}
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:SASL_PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT
KAFKA_CFG_ADVERTISED_LISTENERS: SASL_PLAINTEXT://kafka:${KAFKA_INTERNAL_PORT}
KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_CFG_INTER_BROKER_LISTENER_NAME: SASL_PLAINTEXT
KAFKA_CLIENT_LISTENER_NAME: SASL_PLAINTEXT
KAFKA_CFG_SASL_ENABLED_MECHANISMS: PLAIN,SCRAM-SHA-512
KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
KAFKA_CFG_SASL_MECHANISM_CONTROLLER_PROTOCOL: PLAIN
KAFKA_CONTROLLER_USER: ${KAFKA_CONTROLLER_USER}
KAFKA_CONTROLLER_PASSWORD: ${KAFKA_CONTROLLER_PASSWORD}
KAFKA_INTER_BROKER_USER: ${KAFKA_INTER_BROKER_USER}
KAFKA_INTER_BROKER_PASSWORD: ${KAFKA_INTER_BROKER_PASSWORD}
KAFKA_CLIENT_USERS: ${KAFKA_ADMIN_USER},${KAFKA_PRODUCER_USER},${KAFKA_CONSUMER_USER}
KAFKA_CLIENT_PASSWORDS: ${KAFKA_ADMIN_PASSWORD},${KAFKA_PRODUCER_PASSWORD},${KAFKA_CONSUMER_PASSWORD}
KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: true
KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
healthcheck:
test: |
echo 'security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="${KAFKA_ADMIN_USER}" password="${KAFKA_ADMIN_PASSWORD}";' > /tmp/client.properties &&
kafka-broker-api-versions.sh \
--bootstrap-server kafka:${KAFKA_INTERNAL_PORT} \
--command-config /tmp/client.properties \
|| exit 1
interval: 10s
timeout: 10s
retries: 5
start_period: 30s
restart: always
schema_registry:
image: bitnami/schema-registry:8.0
ports:
- ${SCHEMA_REGISTRY_EXTERNAL_PORT}:${SCHEMA_REGISTRY_INTERNAL_PORT}
networks:
- infrastructure
depends_on:
kafka:
condition: service_healthy
environment:
SCHEMA_REGISTRY_DEBUG: false
SCHEMA_REGISTRY_KAFKA_BROKERS: SASL_PLAINTEXT://kafka:${KAFKA_INTERNAL_PORT}
SCHEMA_REGISTRY_HOST_NAME: schema_registry
SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:${SCHEMA_REGISTRY_INTERNAL_PORT}
SCHEMA_REGISTRY_KAFKA_SASL_MECHANISM: SCRAM-SHA-512
SCHEMA_REGISTRY_KAFKA_SASL_USER: ${KAFKA_PRODUCER_USER}
SCHEMA_REGISTRY_KAFKA_SASL_PASSWORD: ${KAFKA_PRODUCER_PASSWORD}
SCHEMA_REGISTRY_OPTS: "-Djava.security.auth.login.config=/tmp/jaas.conf"
command: >
bash -c "
/opt/bitnami/scripts/schema-registry/setup.sh
source /opt/bitnami/scripts/libschemaregistry.sh
echo 'Setting up basic authentication...'
schema_registry_conf_set 'authentication.method' 'BASIC'
schema_registry_conf_set 'authentication.realm' 'SchemaRegistry-Props'
schema_registry_conf_set 'authentication.roles' 'schema'
exec $$SCHEMA_REGISTRY_BIN_DIR/schema-registry-start $$SCHEMA_REGISTRY_CONF_FILE
"
configs:
- source: schema_registry_jaas
target: /tmp/jaas.conf
- source: schema_registry_users
target: /tmp/users.properties
restart: always
networks:
infrastructure:
attachable: true
volumes:
kafka_data:
configs:
schema_registry_jaas:
content: |
SchemaRegistry-Props {
org.eclipse.jetty.security.jaas.spi.PropertyFileLoginModule required
file="/tmp/users.properties"
debug="false";
};
schema_registry_users:
content: |
# Schema Registry Basic Auth Users
${SCHEMA_REGISTRY_USER}: ${SCHEMA_REGISTRY_PASSWORD},schema
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment