Skip to content

Commit abd5ba0

Browse files
feat: secure redis authentication (#719)
* feat: secure redis authentication Signed-off-by: iam-veeramalla <[email protected]> * fix: operator controller manager cannot list networkpolicies Signed-off-by: iam-veeramalla <[email protected]> * fix: sentinal liveliness issue Signed-off-by: iam-veeramalla <[email protected]> * Fix tests Signed-off-by: Siddhesh Ghadi <[email protected]> --------- Signed-off-by: iam-veeramalla <[email protected]> Signed-off-by: Siddhesh Ghadi <[email protected]> Co-authored-by: iam-veeramalla <[email protected]>
1 parent df202ac commit abd5ba0

File tree

13 files changed

+60
-20
lines changed

13 files changed

+60
-20
lines changed

api/v1alpha1/zz_generated.deepcopy.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/redis/haproxy.cfg.tpl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ backend check_if_redis_is_master_0
2424
{{- else}}
2525
tcp-check connect ssl
2626
{{- end}}
27+
tcp-check send "AUTH replace-with-redis-auth"\r\n
28+
tcp-check expect string +OK
2729
tcp-check send PING\r\n
2830
tcp-check expect string +PONG
2931
tcp-check send SENTINEL\ get-master-addr-by-name\ argocd\r\n
@@ -48,6 +50,8 @@ backend check_if_redis_is_master_1
4850
{{- else}}
4951
tcp-check connect ssl
5052
{{- end}}
53+
tcp-check send "AUTH replace-with-redis-auth"\r\n
54+
tcp-check expect string +OK
5155
tcp-check send PING\r\n
5256
tcp-check expect string +PONG
5357
tcp-check send SENTINEL\ get-master-addr-by-name\ argocd\r\n
@@ -72,6 +76,8 @@ backend check_if_redis_is_master_2
7276
{{- else}}
7377
tcp-check connect ssl
7478
{{- end}}
79+
tcp-check send "AUTH replace-with-redis-auth"\r\n
80+
tcp-check expect string +OK
7581
tcp-check send PING\r\n
7682
tcp-check expect string +PONG
7783
tcp-check send SENTINEL\ get-master-addr-by-name\ argocd\r\n
@@ -102,6 +108,8 @@ backend bk_redis_master
102108
{{- else}}
103109
tcp-check connect ssl
104110
{{- end}}
111+
tcp-check send "AUTH replace-with-redis-auth"\r\n
112+
tcp-check expect string +OK
105113
tcp-check send PING\r\n
106114
tcp-check expect string +PONG
107115
tcp-check send info\ replication\r\n

build/redis/haproxy_init.sh.tpl

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@ if [ -z "$ANNOUNCE_IP0" ]; then
1111
fi
1212
sed -i "s/REPLACE_ANNOUNCE0/$ANNOUNCE_IP0/" "$HAPROXY_CONF"
1313

14-
if [ "${AUTH:-}" ]; then
15-
echo "Setting auth values"
16-
ESCAPED_AUTH=$(echo "$AUTH" | sed -e 's/[\/&]/\\&/g');
17-
sed -i "s/REPLACE_AUTH_SECRET/${ESCAPED_AUTH}/" "$HAPROXY_CONF"
18-
fi
1914
for loop in $(seq 1 10); do
2015
getent hosts {{.ServiceName}}-announce-1 && break
2116
echo "Waiting for service {{.ServiceName}}-announce-1 to be ready ($loop) ..." && sleep 1
@@ -27,11 +22,6 @@ if [ -z "$ANNOUNCE_IP1" ]; then
2722
fi
2823
sed -i "s/REPLACE_ANNOUNCE1/$ANNOUNCE_IP1/" "$HAPROXY_CONF"
2924

30-
if [ "${AUTH:-}" ]; then
31-
echo "Setting auth values"
32-
ESCAPED_AUTH=$(echo "$AUTH" | sed -e 's/[\/&]/\\&/g');
33-
sed -i "s/REPLACE_AUTH_SECRET/${ESCAPED_AUTH}/" "$HAPROXY_CONF"
34-
fi
3525
for loop in $(seq 1 10); do
3626
getent hosts {{.ServiceName}}-announce-2 && break
3727
echo "Waiting for service {{.ServiceName}}-announce-2 to be ready ($loop) ..." && sleep 1
@@ -43,8 +33,6 @@ if [ -z "$ANNOUNCE_IP2" ]; then
4333
fi
4434
sed -i "s/REPLACE_ANNOUNCE2/$ANNOUNCE_IP2/" "$HAPROXY_CONF"
4535

46-
if [ "${AUTH:-}" ]; then
47-
echo "Setting auth values"
48-
ESCAPED_AUTH=$(echo "$AUTH" | sed -e 's/[\/&]/\\&/g');
49-
sed -i "s/REPLACE_AUTH_SECRET/${ESCAPED_AUTH}/" "$HAPROXY_CONF"
50-
fi
36+
auth=$(cat /redis-initial-pass/admin.password)
37+
sed -i "s/replace-with-redis-auth/$auth/" "$HAPROXY_CONF"
38+

build/redis/init.sh.tpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ set -eu
2323
sentinel_get_master() {
2424
set +e
2525
if [ "$SENTINEL_PORT" -eq 0 ]; then
26-
redis-cli -h "${SERVICE}" -p "${SENTINEL_TLS_PORT}" --tls --cacert /app/config/redis/tls/tls.crt sentinel get-master-addr-by-name "${MASTER_GROUP}" |\
26+
redis-cli -h "${SERVICE}" -p "${SENTINEL_TLS_PORT}" --tls --cacert /app/config/redis/tls/tls.crt sentinel get-master-addr-by-name "${MASTER_GROUP}" |\
2727
grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
2828
else
2929
redis-cli -h "${SERVICE}" -p "${SENTINEL_PORT}" sentinel get-master-addr-by-name "${MASTER_GROUP}" |\
@@ -133,9 +133,9 @@ setup_defaults() {
133133
redis_ping() {
134134
set +e
135135
if [ "$REDIS_PORT" -eq 0 ]; then
136-
redis-cli -h "${MASTER}" -p "${REDIS_TLS_PORT}" --tls --cacert /app/config/redis/tls/tls.crt ping
136+
redis-cli -h "${MASTER}" -a "${AUTH}" --no-auth-warning -p "${REDIS_TLS_PORT}" --tls --cacert /app/config/redis/tls/tls.crt ping
137137
else
138-
redis-cli -h "${MASTER}" -p "${REDIS_PORT}" ping
138+
redis-cli -h "${MASTER}" -a "${AUTH}" --no-auth-warning -p "${REDIS_PORT}" ping
139139
fi
140140
set -e
141141
}

build/redis/redis.conf.tpl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,7 @@ rdbcompression yes
2020
repl-diskless-sync yes
2121
save ""
2222
protected-mode no
23+
requirepass replace-default-auth
24+
masterauth replace-default-auth
25+
26+

build/redis/redis_liveness.sh.tpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
response=$(
22
redis-cli \
3+
-a "${AUTH}" --no-auth-warning \
34
-h localhost \
45
-p 6379 \
56
{{- if eq .UseTLS "true"}}

build/redis/redis_readiness.sh.tpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
response=$(
22
redis-cli \
3+
-a "${AUTH}" --no-auth-warning \
34
-h localhost \
45
-p 6379 \
56
{{- if eq .UseTLS "true"}}

build/redis/sentinel.conf.tpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ bind 0.0.0.0
1515
sentinel failover-timeout argocd 180000
1616
maxclients 10000
1717
sentinel parallel-syncs argocd 5
18+
sentinel auth-pass argocd replace-default-auth

bundle/manifests/gitops-operator.clusterserviceversion.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,18 @@ spec:
747747
- ingresses
748748
verbs:
749749
- create
750+
- get
751+
- list
752+
- patch
753+
- update
754+
- watch
755+
- apiGroups:
756+
- networking.k8s.io
757+
resources:
758+
- ingresses
759+
- networkpolicies
760+
verbs:
761+
- create
750762
- delete
751763
- get
752764
- list

config/rbac/role.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,18 @@ rules:
423423
- ingresses
424424
verbs:
425425
- create
426+
- get
427+
- list
428+
- patch
429+
- update
430+
- watch
431+
- apiGroups:
432+
- networking.k8s.io
433+
resources:
434+
- ingresses
435+
- networkpolicies
436+
verbs:
437+
- create
426438
- delete
427439
- get
428440
- list

0 commit comments

Comments
 (0)