fix(logs): do not log the MongoDB credentials
DataManager logged the full connection string, user and password included, at startup. Log it through redact_uri (mongodb://***@host:port/...). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,22 @@ from sientia_do.temporal.constants import now
|
||||
import ingestor.metrics as metrics
|
||||
|
||||
|
||||
def redact_uri(uri: str) -> str:
|
||||
"""
|
||||
Returns ``uri`` without the user and password, safe to log
|
||||
(``mongodb://user:pass@host:27017/db`` -> ``mongodb://***@host:27017/db``).
|
||||
"""
|
||||
prefix, sep, rest = uri.partition('://')
|
||||
if not sep:
|
||||
prefix, rest = '', uri
|
||||
ends = [i for i in (rest.find('/'), rest.find('?')) if i != -1]
|
||||
end = min(ends) if ends else len(rest)
|
||||
authority, tail = rest[:end], rest[end:]
|
||||
if '@' not in authority:
|
||||
return uri
|
||||
return f'{prefix}{sep}***@{authority.rpartition("@")[2]}{tail}'
|
||||
|
||||
|
||||
class DataManager(SientiaMonitoring):
|
||||
"""
|
||||
Manages data persistence operations for the OPC Ingestor.
|
||||
@@ -66,7 +82,8 @@ class DataManager(SientiaMonitoring):
|
||||
)
|
||||
|
||||
logger.info(
|
||||
f'Trying to initializing DataManager with MongoDB servers: {mongo_connection_string}'
|
||||
'Trying to initializing DataManager with MongoDB servers: '
|
||||
f'{redact_uri(mongo_connection_string)}'
|
||||
)
|
||||
|
||||
self.connection_string = mongo_connection_string
|
||||
@@ -82,7 +99,9 @@ class DataManager(SientiaMonitoring):
|
||||
|
||||
self.metadata = metadata
|
||||
|
||||
logger.info(f'DataManager initialized with MongoDB servers: {self.connection_string}')
|
||||
logger.info(
|
||||
f'DataManager initialized with MongoDB servers: {redact_uri(self.connection_string)}'
|
||||
)
|
||||
|
||||
def shutdown(self):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user