env-creds-mask
All checks were successful
Deploy on push / deploy (push) Successful in 6s

This commit is contained in:
2025-05-26 13:31:25 +03:00
parent c06a187fd6
commit 627be9a4f1
3 changed files with 98 additions and 23 deletions

View File

@@ -86,7 +86,9 @@ class EnvManager:
# Переменные, которые следует всегда помечать как секретные
SECRET_VARS_PATTERNS = [
r".*TOKEN.*", r".*SECRET.*", r".*PASSWORD.*", r".*KEY.*",
r".*PWD.*", r".*PASS.*", r".*CRED.*"
r".*PWD.*", r".*PASS.*", r".*CRED.*",
r".*JWT.*", r".*SESSION.*", r".*OAUTH.*",
r".*GITHUB.*", r".*GOOGLE.*", r".*FACEBOOK.*"
]
def __init__(self):
@@ -178,9 +180,27 @@ class EnvManager:
def _is_secret_variable(self, key: str) -> bool:
"""
Проверяет, является ли переменная секретной
Проверяет, является ли переменная секретной.
Секретными считаются:
- переменные, подходящие под SECRET_VARS_PATTERNS
- переменные с ключами DATABASE_URL, REDIS_URL, DB_URL (точное совпадение, без учета регистра)
>>> EnvManager()._is_secret_variable('MY_SECRET_TOKEN')
True
>>> EnvManager()._is_secret_variable('database_url')
True
>>> EnvManager()._is_secret_variable('REDIS_URL')
True
>>> EnvManager()._is_secret_variable('DB_URL')
True
>>> EnvManager()._is_secret_variable('SOME_PUBLIC_KEY')
True
>>> EnvManager()._is_secret_variable('SOME_PUBLIC_VAR')
False
"""
key_upper = key.upper()
if key_upper in {"DATABASE_URL", "REDIS_URL", "DB_URL"}:
return True
return any(re.match(pattern, key_upper) for pattern in self.SECRET_VARS_PATTERNS)
def _determine_variable_type(self, value: str) -> str:

View File

@@ -75,7 +75,7 @@ class ViewedStorage:
await redis.connect()
# Логируем настройки Redis соединения
logger.info(f" * Redis connection: {redis._client}")
logger.info("* Redis connected")
# Получаем список всех ключей migrated_views_* и находим самый последний
keys = await redis.execute("KEYS", "migrated_views_*")