Config را با Secret قاطی نکن؛ سه لایه تنظیمات برنامه
پروژه روی لپتاپ کار میکند ولی در staging و production تنظیمات پراکنده است یا secret داخل کد commit شده است.
مقدار عمومی قابل version، تنظیم محیطی و secret حساس را جدا نگه دار. رمز و کلید API نباید داخل repo یا فایل نمونه واقعی باشند.
چطور دقیقتر به موضوع نگاه کنیم؟
- defaultهای غیرحساس و نام متغیرها را در repo نگه دار، نه credential واقعی.
- تنظیم وابسته به محیط را با environment variable یا سیستم config مناسب تزریق کن.
- secretها را در secret manager یا بخش امن CI/host نگه دار و دسترسی را حداقلی کن.
- در startup وجود و فرمت config ضروری را validate کن تا برنامه با تنظیم ناقص بیصدا بالا نیاید.
چرا این موضوع مهم است؟
تنظیمات محیطها تغییر میکنند و secret چرخه امنیتی متفاوتی دارد. مخلوطکردن آنها deployment و rotation را سخت میکند.
سؤالهایی که معمولاً بعدش پیش میآید
.env را commit کنم؟
فایل نمونه بدون مقدار حساس خوب است؛ فایل واقعی secret معمولاً نباید وارد repo شود.
اسم host هم secret است؟
همیشه نه، ولی جداسازی تنظیمات محیطی از کد همچنان مفید است.
