یک اصل پایه در DevSecOps و Secure Software Development این است که هیچگونه Secret، Password، API Ke…
انتشار: 2026/08/14 09:35 UTCدریافت: 2026/08/15 10:21 UTCآخرین مشاهده: 2026/08/15 10:21 UTC
یک اصل پایه در DevSecOps و Secure Software Development این است که هیچگونه Secret، Password، API Key، Access Token، Private Key یا Credential بهصورت مستقیم داخل Repository ذخیره نشود؛ حتی اگر Repository خصوصی باشد.ابزارهایی مانند Gitleaks با اسکن Commitها و محتوای Repository، الگوهای شناختهشدهی Secret و Credential را شناسایی میکنند. این ابزارها علاوه بر Tokenهای استاندارد، میتوانند با استفاده از Custom Rules برای الگوهای اختصاصی هر سازمان نیز تنظیم شوند؛ بنابراین اگر یک سازمان الگوی مشخصی برای نامگذاری، ساختار یا فرمت Secretهای خود داشته باشد، میتوان Detection Rule متناسب با همان الگو تعریف کرد.در GitLab نیز میتوان این کنترلها را در سطح Pipeline و Repository اعمال کرد؛ برای مثال با استفاده از Push Rules، Protected Branches، Merge Request Approval و CI/CD Pipeline Security Checks میتوان مانع ورود Secret به Branchهای حساس یا Merge شدن کد آلوده به Credential شد.نکته مهم این است که صرفاً داشتن Gitleaks کافی نیست. باید Secret Scanning به بخشی از Security Gate در CI/CD تبدیل شود؛ یعنی کد قبل از Merge یا Release بررسی شود و در صورت شناسایی Credential، Pipeline متوقف شود.حتی اگر توسعهدهندگان یک سازمان از الگوهای اختصاصی برای نوشتن Password، Token، API Key یا سایر اطلاعات حساس استفاده کنند، میتوان برای Gitleaks Ruleهای سفارشی و Regexهای اختصاصی تعریف کرد تا این الگوها نیز شناسایی شوند.در نتیجه، رویکرد صحیح این نیست که صرفاً بگوییم «توسعهدهنده نباید Secret را داخل Git قرار دهد»؛ بلکه باید یک کنترل فنی و خودکار ایجاد کنیم که حتی در صورت اشتباه توسعهدهنده، Repository و Pipeline بتوانند از انتشار Secret جلوگیری کنند.البته یک نکته مهمتر هم وجود دارد: Secret Scanning فقط Detection است، نه Secret Management. برای نگهداری واقعی Secretها باید از راهکارهایی مانند HashiCorp Vault، Kubernetes Secrets با Encryption at Rest، Cloud Secret Manager یا Secret Manager داخلی سازمان استفاده کرد و Application در زمان اجرا Secret را دریافت کند، نه اینکه Secret داخل Source Code یا Git History قرار بگیرد.#DevOps #devsecops
