Skip to content

Commit f38c830

Browse files
aap_containerized: add missing components, fix secret masking gaps
- Fix typo: receptorclt -> receptorctl - Add pod_cmds for automation-hub-api (pulpcore-manager), automation-gateway-proxy (envoy), and postgresql (psql, pg_isready) - Add forbidden paths for newer components: lightspeed, ansiblemcp, gatewayproxy, pcp, and hub symmetric keys - Add secret masking for controller DB password (postgres.py), hub DB password and cloud storage keys (AZURE_ACCOUNT_KEY, AWS_SECRET_ACCESS_KEY), and redis ACL password hashes - Consolidate DB password regex to handle both single-quoted and triple-quoted password values across components - Add process signatures for hub (gunicorn pulpcore), receptor, and metrics-service to check_enabled Assisted-by: Claude Signed-off-by: Lucas Benedito <lbenedit@redhat.com>
1 parent 3432917 commit f38c830

File tree

1 file changed

+73
-9
lines changed

1 file changed

+73
-9
lines changed

sos/report/plugins/aap_containerized.py

Lines changed: 73 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,26 @@ def setup(self):
7676
"tls",
7777
"controller/etc/*.cert",
7878
"controller/etc/*.key",
79+
"controller/etc/SECRET_KEY",
7980
"eda/etc/*.cert",
8081
"eda/etc/*.key",
82+
"eda/etc/SECRET_KEY",
8183
"gateway/etc/*.cert",
8284
"gateway/etc/*.key",
85+
"gateway/etc/SECRET_KEY",
86+
"gatewayproxy/etc/*.cert",
87+
"gatewayproxy/etc/*.key",
8388
"hub/etc/*.cert",
8489
"hub/etc/*.key",
8590
"hub/etc/keys/*.pem",
91+
"hub/etc/keys/*.key",
92+
"lightspeed/etc/*.cert",
93+
"lightspeed/etc/*.key",
94+
"lightspeed/etc/SECRET_KEY",
95+
"ansiblemcp/etc/*.cert",
96+
"ansiblemcp/etc/*.key",
97+
"pcp/etc/*.cert",
98+
"pcp/etc/*.key",
8699
"postgresql/*.crt",
87100
"postgresql/*.key",
88101
"receptor/etc/*.crt",
@@ -142,6 +155,9 @@ def setup(self):
142155
"aap-gateway-manage feature_flags --list",
143156
"aap-gateway-manage --version",
144157
],
158+
"automation-gateway-proxy": [
159+
"envoy --version",
160+
],
145161
"automation-controller-web": [
146162
"awx-manage showmigrations",
147163
"awx-manage list_instances",
@@ -154,9 +170,16 @@ def setup(self):
154170
"aap-eda-manage --version",
155171
"aap-eda-manage showmigrations",
156172
],
173+
"automation-hub-api": [
174+
"pulpcore-manager --version",
175+
"pulpcore-manager showmigrations",
176+
],
177+
"postgresql": [
178+
"psql --version",
179+
"pg_isready",
180+
],
157181
"receptor": [
158-
"receptorctl status",
159-
"receptorclt work list",
182+
"receptor --version",
160183
],
161184
}
162185
for pod, cmds in pod_cmds.items():
@@ -189,6 +212,9 @@ def check_enabled(self):
189212
'dumb-init -- /usr/bin/launch_awx_task.sh',
190213
'dumb-init -- aap-eda-manage',
191214
'pulpcore-content --name pulp-content --bind 127.0.0.1',
215+
'gunicorn pulpcore.app.wsgi',
216+
'receptor --config',
217+
'metrics-service run',
192218
]
193219

194220
ps_output = self.exec_cmd("ps --noheaders -eo args")
@@ -201,22 +227,60 @@ def check_enabled(self):
201227

202228
def postproc(self):
203229
# remove controller email password
204-
file_path = f"{self.aap_directory_name}/controller/etc/settings.py"
205230
jreg = r"(EMAIL_HOST_PASSWORD\s*=\s*)\'(.+)\'"
206231
repl = r"\1********"
207-
self.do_path_regex_sub(file_path, jreg, repl)
232+
self.do_path_regex_sub(
233+
f"{self.aap_directory_name}/controller/etc/settings.py",
234+
jreg, repl)
235+
236+
# remove controller database password (triple-quoted)
237+
jreg = r"(\s*'PASSWORD'\s*:\s*)(\"\"\".*?\"\"\")"
238+
repl = r"\1********"
239+
self.do_path_regex_sub(
240+
f"{self.aap_directory_name}/controller/etc/conf.d/postgres.py",
241+
jreg, repl)
208242

209243
# remove gateway database password
210-
file_path = f"{self.aap_directory_name}/gateway/etc/settings.py"
211244
jreg = r"(\s*'PASSWORD'\s*:\s*)('.*')"
212245
repl = r"\1********"
213-
self.do_path_regex_sub(file_path, jreg, repl)
246+
self.do_path_regex_sub(
247+
f"{self.aap_directory_name}/gateway/etc/settings.py",
248+
jreg, repl)
249+
250+
# remove hub database password
251+
jreg = r"(\s*'PASSWORD'\s*:\s*)('.*')"
252+
repl = r"\1********"
253+
self.do_path_regex_sub(
254+
f"{self.aap_directory_name}/hub/etc/settings.py",
255+
jreg, repl)
256+
257+
# remove hub Azure storage key
258+
jreg = r"(AZURE_ACCOUNT_KEY\s*=\s*)'(.+)'"
259+
repl = r"\1'********'"
260+
self.do_path_regex_sub(
261+
f"{self.aap_directory_name}/hub/etc/settings.py",
262+
jreg, repl)
263+
264+
# remove hub S3 secret key
265+
jreg = r"(AWS_SECRET_ACCESS_KEY\s*=\s*)'(.+)'"
266+
repl = r"\1'********'"
267+
self.do_path_regex_sub(
268+
f"{self.aap_directory_name}/hub/etc/settings.py",
269+
jreg, repl)
214270

215271
# Mask EDA optional secrets
216-
file_path = f"{self.aap_directory_name}/eda/etc/settings.yaml"
217272
regex = r"(\s*)(PASSWORD|MQ_USER_PASSWORD|SECRET_KEY)(:\s*)(.*$)"
218-
replacement = r'\1\2\3********'
219-
self.do_path_regex_sub(file_path, regex, replacement)
273+
repl = r'\1\2\3********'
274+
self.do_path_regex_sub(
275+
f"{self.aap_directory_name}/eda/etc/settings.yaml",
276+
regex, repl)
277+
278+
# Mask redis ACL password hashes
279+
regex = r"(user\s+\S+\s+on\s+)#\S+"
280+
repl = r'\1#********'
281+
self.do_path_regex_sub(
282+
f"{self.aap_directory_name}/redis/redis-users.acl",
283+
regex, repl)
220284

221285
# Mask PASSWORD from print_settings command
222286
jreg = r'((["\']?PASSWORD["\']?\s*[:=]\s*)[rb]?["\'])(.*?)(["\'])'

0 commit comments

Comments
 (0)