Skip to content

Commit cac8050

Browse files
authored
feat: Add redis password support (#49)
feat: Add redis password support (#49)
1 parent f14a1ef commit cac8050

File tree

5 files changed

+72
-1
lines changed

5 files changed

+72
-1
lines changed

infrastructure/deployment/deploy.sh

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,19 @@ rotate_secrets() {
217217
configured_ssh '/opt/opencrvs/$STACK/infrastructure/rotate-secrets.sh '$files_to_rotate' | tee -a '$LOG_LOCATION'/rotate-secrets.log'
218218
}
219219

220+
save_redis_acl(){
221+
echo "Saving redis acl"
222+
printf """
223+
user default on >$DEFAULT_REDIS_PASSWORD ~* +@all
224+
user $GATEWAY_REDIS_USERNAME on >$GATEWAY_REDIS_PASSWORD ~* +@all
225+
user $WORKFLOW_REDIS_USERNAME on >$WORKFLOW_REDIS_PASSWORD ~* +@all
226+
user $AUTH_REDIS_USERNAME on >$AUTH_REDIS_PASSWORD ~* +@all
227+
user $WEBHOOKS_REDIS_USERNAME on >$WEBHOOKS_REDIS_PASSWORD ~* +@all
228+
""" > $INFRASTRUCTURE_DIRECTORY/redis-acl.conf
229+
echo "Redis acl saved to $INFRASTRUCTURE_DIRECTORY/redis-acl.conf"
230+
cat $INFRASTRUCTURE_DIRECTORY/redis-acl.conf
231+
}
232+
220233
split_and_join() {
221234
separator_for_splitting=$1
222235
separator_for_joining=$2
@@ -265,6 +278,15 @@ export WEBHOOKS_MONGODB_PASSWORD=`generate_password`
265278
export NOTIFICATION_MONGODB_PASSWORD=`generate_password`
266279
export EVENTS_MONGODB_PASSWORD=`generate_password`
267280

281+
export DEFAULT_REDIS_PASSWORD=`generate_password`
282+
export GATEWAY_REDIS_USERNAME=`generate_password`
283+
export GATEWAY_REDIS_PASSWORD=`generate_password`
284+
export WORKFLOW_REDIS_USERNAME=`generate_password`
285+
export WORKFLOW_REDIS_PASSWORD=`generate_password`
286+
export AUTH_REDIS_USERNAME=`generate_password`
287+
export AUTH_REDIS_PASSWORD=`generate_password`
288+
export WEBHOOKS_REDIS_USERNAME=`generate_password`
289+
export WEBHOOKS_REDIS_PASSWORD=`generate_password`
268290
#
269291
# Elasticsearch credentials
270292
#
@@ -291,6 +313,8 @@ done
291313

292314
validate_environment_variables
293315

316+
save_redis_acl
317+
294318
if [ "$SSH_PORT" -eq 22 ]; then
295319
SSH_HOST_TO_CHECK="$SSH_HOST"
296320
else

infrastructure/deployment/download-images.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,18 @@ rotate_secrets() {
216216
configured_ssh '/opt/opencrvs/$STACK/infrastructure/rotate-secrets.sh '$files_to_rotate' | tee -a '$LOG_LOCATION'/rotate-secrets.log'
217217
}
218218

219+
save_redis_acl(){
220+
echo "Saving redis acl"
221+
printf """
222+
user default on >$DEFAULT_REDIS_PASSWORD ~* +@all
223+
user $GATEWAY_REDIS_USERNAME on >$GATEWAY_REDIS_PASSWORD ~* +@all
224+
user $WORKFLOW_REDIS_USERNAME on >$WORKFLOW_REDIS_PASSWORD ~* +@all
225+
user $AUTH_REDIS_USERNAME on >$AUTH_REDIS_PASSWORD ~* +@all
226+
user $WEBHOOKS_REDIS_USERNAME on >$WEBHOOKS_REDIS_PASSWORD ~* +@all
227+
""" > $INFRASTRUCTURE_DIRECTORY/redis-acl.conf
228+
echo "Redis acl saved to $INFRASTRUCTURE_DIRECTORY/redis-acl.conf"
229+
cat $INFRASTRUCTURE_DIRECTORY/redis-acl.conf
230+
}
219231

220232
# Takes in a space separated string of docker-compose.yml files
221233
# returns a new line separated list of images defined in those files
@@ -343,6 +355,15 @@ export WEBHOOKS_MONGODB_PASSWORD=`generate_password`
343355
export NOTIFICATION_MONGODB_PASSWORD=`generate_password`
344356
export EVENTS_MONGODB_PASSWORD=`generate_password`
345357

358+
export DEFAULT_REDIS_PASSWORD=`generate_password`
359+
export GATEWAY_REDIS_USERNAME=`generate_password`
360+
export GATEWAY_REDIS_PASSWORD=`generate_password`
361+
export WORKFLOW_REDIS_USERNAME=`generate_password`
362+
export WORKFLOW_REDIS_PASSWORD=`generate_password`
363+
export AUTH_REDIS_USERNAME=`generate_password`
364+
export AUTH_REDIS_PASSWORD=`generate_password`
365+
export WEBHOOKS_REDIS_USERNAME=`generate_password`
366+
export WEBHOOKS_REDIS_PASSWORD=`generate_password`
346367
#
347368
# Elasticsearch credentials
348369
#
@@ -369,6 +390,8 @@ done
369390

370391
validate_environment_variables
371392

393+
save_redis_acl
394+
372395
if [ "$SSH_PORT" -eq 22 ]; then
373396
SSH_HOST_TO_CHECK="$SSH_HOST"
374397
else

infrastructure/docker-compose.app.yml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@ services:
44
redis:
55
image: docker.io/bitnami/valkey:8.1
66
environment:
7-
- ALLOW_EMPTY_PASSWORD=yes
7+
- VALKEY_PASSWORD=false
8+
- VALKEY_ACLFILE=/run/secrets/redis-acl.{{STACK}}.{{ts}}
9+
- VALKEY_OVERRIDES_FILE=/opt/bitnami/valkey/mounted-etc/overrides.conf
10+
secrets:
11+
- redis-acl.{{STACK}}.{{ts}}
12+
configs:
13+
- source: redis-overrides.{{ts}}
14+
target: /opt/bitnami/valkey/mounted-etc/overrides.conf
815
networks:
916
app_net:
1017
dependencies_monitoring_net:
@@ -226,6 +233,8 @@ services:
226233
- SENTRY_DSN=${SENTRY_DSN:-}
227234
- DISABLE_RATE_LIMIT=true
228235
- REDIS_HOST=redis.${STACK}_app_net
236+
- REDIS_USERNAME=${GATEWAY_REDIS_USERNAME}
237+
- REDIS_PASSWORD=${GATEWAY_REDIS_PASSWORD}
229238
- APN_SERVICE_URL=http://dependencies_apm-server:8200
230239
- CERT_PUBLIC_KEY_PATH=/run/secrets/jwt-public-key.{{STACK}}.{{ts}}
231240
- LOGIN_URL=https://login.${STACK}.{{hostname}}
@@ -305,6 +314,8 @@ services:
305314
- QA_ENV=true
306315
- HOST=0.0.0.0
307316
- REDIS_HOST=redis.${STACK}_app_net
317+
- REDIS_USERNAME=${WORKFLOW_REDIS_USERNAME}
318+
- REDIS_PASSWORD=${WORKFLOW_REDIS_PASSWORD}
308319
- NODE_ENV=production
309320
- LANGUAGES=en,fr
310321
- SENTRY_DSN=${SENTRY_DSN:-}
@@ -452,6 +463,8 @@ services:
452463
- CLIENT_APP_URL=https://register.${STACK}.{{hostname}}
453464
- DOMAIN=${STACK}.{{hostname}}
454465
- REDIS_HOST=redis.${STACK}_app_net
466+
- REDIS_USERNAME=${AUTH_REDIS_USERNAME}
467+
- REDIS_PASSWORD=${AUTH_REDIS_PASSWORD}
455468
- USER_MANAGEMENT_URL=http://user-mgnt.{{STACK}}_app_net:3030/
456469
- CONFIG_TOKEN_EXPIRY_SECONDS=604800
457470
- CONFIG_SMS_CODE_EXPIRY_SECONDS=600
@@ -524,6 +537,8 @@ services:
524537
- SENTRY_DSN=${SENTRY_DSN:-}
525538
- CERT_PRIVATE_KEY_PATH="THIS IS NOT EVEN USED ANYWHERE @todo"
526539
- REDIS_HOST=redis.${STACK}_app_net
540+
- REDIS_USERNAME=${WEBHOOKS_REDIS_USERNAME}
541+
- REDIS_PASSWORD=${WEBHOOKS_REDIS_PASSWORD}
527542
- APN_SERVICE_URL=http://dependencies_apm-server:8200
528543
- MONGO_URL=mongodb://${STACK}__webhooks:${WEBHOOKS_MONGODB_PASSWORD}@mongo1/${STACK}__webhooks?replicaSet=rs0
529544
- CERT_PUBLIC_KEY_PATH=/run/secrets/jwt-public-key.{{STACK}}.{{ts}}
@@ -741,13 +756,17 @@ secrets:
741756
external: true
742757
jwt-private-key.{{STACK}}.{{ts}}:
743758
external: true
759+
redis-acl.{{STACK}}.{{ts}}:
760+
external: true
744761
configs:
745762
hearth-dupe.{{ts}}:
746763
file: /opt/opencrvs/{{STACK}}/infrastructure/hearth-plugins/checkDuplicateTask.js
747764
hearth-ext-conf.{{ts}}:
748765
file: /opt/opencrvs/{{STACK}}/infrastructure/hearth-queryparam-extensions.json
749766
mongo-on-deploy.{{ts}}:
750767
file: /opt/opencrvs/{{STACK}}/infrastructure/mongodb/on-deploy.sh
768+
redis-overrides.{{ts}}:
769+
file: /opt/opencrvs/{{STACK}}/infrastructure/redis/overrides.conf
751770
networks:
752771
dependencies_mongo_net_1:
753772
external: true
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
protected-mode no

infrastructure/rotate-secrets.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#!/bin/bash
12
# This Source Code Form is subject to the terms of the Mozilla Public
23
# License, v. 2.0. If a copy of the MPL was not distributed with this
34
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
@@ -17,6 +18,9 @@ UNIX_TS=$(date +%s)
1718
echo "$PUB_KEY" | docker secret create jwt-public-key.$STACK.$UNIX_TS -
1819
echo "$PRIV_KEY" | docker secret create jwt-private-key.$STACK.$UNIX_TS -
1920

21+
INFRASTRUCTURE_DIRECTORY=$(dirname "$0")
22+
cat $INFRASTRUCTURE_DIRECTORY/redis-acl.conf | docker secret create redis-acl.$STACK.$UNIX_TS -
23+
2024
sed -i "s/{{ts}}/$UNIX_TS/g" "$@"
2125
sed -i "s/{{STACK}}/$STACK/g" "$@"
2226
echo "DONE - `date --iso-8601=ns`"

0 commit comments

Comments
 (0)