Harden secrets handling: env-var DB password + defensive .gitignore
Move hardcoded 'rootpassword' default in parser/{config,backfill_changeover,
clmparser,udcparser}.py behind os.environ.get('SHOPDB_DB_PASSWORD',
'rootpassword'). Add defensive patterns (.env, *.key, *.pem, id_rsa*,
secrets.*, etc.) to .gitignore across all project repos.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
19
.gitignore
vendored
19
.gitignore
vendored
@@ -18,3 +18,22 @@ ENV/
|
|||||||
# OS
|
# OS
|
||||||
.DS_Store
|
.DS_Store
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|
||||||
|
# Secrets and credentials (defensive)
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
!.env.*.example
|
||||||
|
*.pem
|
||||||
|
*.key
|
||||||
|
id_rsa
|
||||||
|
id_rsa.*
|
||||||
|
*.ppk
|
||||||
|
*.p12
|
||||||
|
*.pfx
|
||||||
|
secrets.json
|
||||||
|
secrets.yaml
|
||||||
|
secrets.yml
|
||||||
|
*_secret
|
||||||
|
*_secrets
|
||||||
|
credentials.json
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""Backfill changeover values for udcparts"""
|
"""Backfill changeover values for udcparts"""
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
|
from config import DB_CONFIG
|
||||||
|
|
||||||
conn = mysql.connector.connect(
|
conn = mysql.connector.connect(**DB_CONFIG)
|
||||||
host='127.0.0.1', port=3306, user='root',
|
|
||||||
password='rootpassword', database='shopdb'
|
|
||||||
)
|
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
|
||||||
# Get all machines
|
# Get all machines
|
||||||
|
|||||||
@@ -35,13 +35,14 @@ from mysql.connector import Error
|
|||||||
try:
|
try:
|
||||||
from config import DB_CONFIG, CLM_DATA_PATH, BATCH_SIZE
|
from config import DB_CONFIG, CLM_DATA_PATH, BATCH_SIZE
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
import os
|
||||||
import platform
|
import platform
|
||||||
IS_WINDOWS = platform.system() == 'Windows'
|
IS_WINDOWS = platform.system() == 'Windows'
|
||||||
DB_CONFIG = {
|
DB_CONFIG = {
|
||||||
'host': '127.0.0.1',
|
'host': '127.0.0.1',
|
||||||
'port': 3306,
|
'port': 3306,
|
||||||
'user': 'root',
|
'user': 'root',
|
||||||
'password': 'rootpassword',
|
'password': os.environ.get('SHOPDB_DB_PASSWORD', 'rootpassword'),
|
||||||
'database': 'shopdb'
|
'database': 'shopdb'
|
||||||
}
|
}
|
||||||
CLM_DATA_PATH = r'S:\SPC\UDC\CLM_Data' if IS_WINDOWS else '/home/camp/projects/UDC/CLM_Data'
|
CLM_DATA_PATH = r'S:\SPC\UDC\CLM_Data' if IS_WINDOWS else '/home/camp/projects/UDC/CLM_Data'
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
"""
|
"""
|
||||||
UDC Parser Configuration
|
UDC Parser Configuration
|
||||||
"""
|
"""
|
||||||
|
import os
|
||||||
import platform
|
import platform
|
||||||
|
|
||||||
# Detect OS
|
# Detect OS
|
||||||
@@ -21,16 +22,16 @@ DB_CONFIG_DEV = {
|
|||||||
'host': '127.0.0.1',
|
'host': '127.0.0.1',
|
||||||
'port': 3306,
|
'port': 3306,
|
||||||
'user': 'root',
|
'user': 'root',
|
||||||
'password': 'rootpassword',
|
'password': os.environ.get('SHOPDB_DB_PASSWORD', 'rootpassword'),
|
||||||
'database': 'shopdb'
|
'database': 'shopdb'
|
||||||
}
|
}
|
||||||
|
|
||||||
# Database - Production (update these values)
|
# Database - Production (update these values)
|
||||||
DB_CONFIG_PROD = {
|
DB_CONFIG_PROD = {
|
||||||
'host': 'PROD_MYSQL_HOST', # TODO: Update with production host
|
'host': os.environ.get('SHOPDB_DB_HOST', 'PROD_MYSQL_HOST'),
|
||||||
'port': 3306,
|
'port': 3306,
|
||||||
'user': 'PROD_USER', # TODO: Update with production user
|
'user': os.environ.get('SHOPDB_DB_USER', 'PROD_USER'),
|
||||||
'password': 'PROD_PASSWORD', # TODO: Update with production password
|
'password': os.environ.get('SHOPDB_DB_PASSWORD', 'PROD_PASSWORD'),
|
||||||
'database': 'shopdb'
|
'database': 'shopdb'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,13 +23,14 @@ from mysql.connector.pooling import MySQLConnectionPool
|
|||||||
try:
|
try:
|
||||||
from config import DB_CONFIG, UDC_LOG_PATH as LOG_DIRECTORY, BATCH_SIZE
|
from config import DB_CONFIG, UDC_LOG_PATH as LOG_DIRECTORY, BATCH_SIZE
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
import os
|
||||||
import platform
|
import platform
|
||||||
IS_WINDOWS = platform.system() == 'Windows'
|
IS_WINDOWS = platform.system() == 'Windows'
|
||||||
DB_CONFIG = {
|
DB_CONFIG = {
|
||||||
'host': '127.0.0.1',
|
'host': '127.0.0.1',
|
||||||
'port': 3306,
|
'port': 3306,
|
||||||
'user': 'root',
|
'user': 'root',
|
||||||
'password': 'rootpassword',
|
'password': os.environ.get('SHOPDB_DB_PASSWORD', 'rootpassword'),
|
||||||
'database': 'shopdb'
|
'database': 'shopdb'
|
||||||
}
|
}
|
||||||
LOG_DIRECTORY = r'S:\SPC\UDC\LogFiles' if IS_WINDOWS else '/home/camp/projects/UDC/LogFiles'
|
LOG_DIRECTORY = r'S:\SPC\UDC\LogFiles' if IS_WINDOWS else '/home/camp/projects/UDC/LogFiles'
|
||||||
|
|||||||
Reference in New Issue
Block a user