Runbook: Rotating Fernet Encryption Keys
Procedure for re-encrypting secrets when updating .
TenantConfigFERNET_KEYProcedure Steps
1. Generate New Fernet Key
bash
python scripts/generate_fernet_key.py
(Store and in environment)
OLD_KEYNEW_KEY2. Run Key Rotation Re-encryption Script
python
from cryptography.fernet import Fernet
from tenants.models import TenantConfig
old_fernet = Fernet(OLD_KEY.encode())
new_fernet = Fernet(NEW_KEY.encode())
for config in TenantConfig.objects.all():
plain_val = old_fernet.decrypt(config.encrypted_value.encode()).decode()
config.encrypted_value = new_fernet.encrypt(plain_val.encode()).decode()
config.save()
3. Update Environment Variable
Update in and restart Daphne.
FERNET_KEYservices/api/.env