Blog/devops/Environment Variables Təhlükəsizliyi — Developer-lərin Buraxdığı Səhvlər
devops

Environment Variables Təhlükəsizliyi — Developer-lərin Buraxdığı Səhvlər

B
Baku Stack AI
·3 aprel 2026·4 dəq oxuma·18 baxış
devops.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ SECURITY ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ .env → ⚠ LEAKED! ▓
▓ API_KEY=sk-proj-4f.. ▓
▓ DB_PASS=super_sec... ▓
▓ ░░░░░░░░░░░░░░░░░░░ ▓
▓ ● Scan: gitleaks ▓
▓ ● Risk: ▓▓▓▓▓▓▓▓░░ ▓
▓ ● Leaks: 12.8M/year ▓
▓ ░░░░░░░░░░░░░░░░░░░ ▓
▓ ✓ .gitignore → .env ▓
▓ ✓ Rotate keys 90d ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Hər il minlərlə API key GitHub-da açıq qalır. Azərbaycanlı developer-lər olaraq biz də bu səhvləri edirik — gəlin real nümunələrlə öyrənək və qorunaq.

Environment Variables Təhlükəsizliyi — Developer-lərin Buraxdığı Səhvlər

Salam, developer dostlar! Bu gün çox ciddi, amma çoxumuzun "ay, sonra düzəldərəm" deyib keçdiyi bir mövzudan danışacağıq: environment variables təhlükəsizliyi.

Bakıda bir startup-da işləyirsən, saat gecənin 2-sidir, deadline sabah səhərdir. .env faylını .gitignore-a əlavə etməyi unudursan, git push edirsən — və bütün API key-lərin artıq GitHub-da açıq şəkildə görünür. Tanış gəlir?

Rəqəmlər Danışır

GitGuardian-ın 2025-ci il hesabatına görə:

  • GitHub-da 12.8 milyon yeni secret sızıntısı aşkar edilib (əvvəlki ilə nisbətən 28% artım)
  • Orta hesabla hər 1000 commit-dən 4.6-sında hardcoded secret var
  • Sızan bir AWS key-in orta zərəri $28,000 təşkil edib — bu, Bakıda senior developer-in təxminən 8-9 aylıq maaşıdır (3000-3500 AZN/ay hesabı ilə)

Bu, sadəcə böyük şirkətlərin problemi deyil. Bakıda fəaliyyət göstərən fintech startup-lar, e-commerce layihələr, dövlət portallarına inteqrasiya edən şirkətlər — hamısı risk altındadır.

Səhv №1: Secret-ləri Kodun İçinə Yazmaq

Bu, ən klassik və ən təhlükəli səhvdir. Xüsusilə tez-tez interview tapşırıqlarında və ya freelance layihələrdə görürəm:

python
# ❌ HEÇ VAXT BELƏ ETMƏ import requests API_KEY = "sk-proj-4f8b2a1c9d3e7f6a5b8c2d1e0f9a8b7c" DB_PASSWORD = "super_secret_parol_123" PAYMENT_SECRET = "pay_live_AZN_k8x9m2n4p6" response = requests.get( f"https://api.example.com/data?key={API_KEY}" )

Bu kodu GitHub-a push etdiyin an, bot-lar saniyələr içində həmin key-ləri tapır. Bəli, saniyələr — avtomatlaşdırılmış scanner-lər GitHub-ın public repository-lərini real vaxtda izləyir.

python
# ✅ DOĞRU YANAŞMA import os import requests from dotenv import load_dotenv load_dotenv() API_KEY = os.environ.get("API_KEY") DB_PASSWORD = os.environ.get("DB_PASSWORD") PAYMENT_SECRET = os.environ.get("PAYMENT_SECRET") if not API_KEY: raise ValueError("API_KEY environment variable tapılmadı!") response = requests.get( f"https://api.example.com/data?key={API_KEY}" )

Səhv №2: .gitignore Faylını Unudmaq

Layihəni yaratdığın ilk dəqiqədə .gitignore faylını konfiqurasiya et. Sonra "əlavə edərəm" demə — unutacaqsan.

gitignore
# .gitignore — layihənin ilk faylı olmalıdır .env .env.local .env.production .env.*.local *.pem *.key config/secrets.yml

Məsləhət: git init etdikdən dərhal sonra .gitignore yarat. Hətta bunun üçün özünə shell alias yaz:

bash
# ~/.bashrc və ya ~/.zshrc faylına əlavə et alias gitnew='git init && curl -o .gitignore https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore && echo ".env" >> .gitignore && git add .gitignore && git commit -m "Initial commit with .gitignore"'

Səhv №3: .env.example Faylı Yaratmamaq

Bakıda bir çox komandada belə situasiya yaşanır: yeni developer işə başlayır, repo-nu clone edir, .env faylı yoxdur, hansı variable-lar lazım olduğunu bilmir, 2 saat vaxt itirir.

bash
# .env.example — BU FAYL repo-da OLMALIDIR # Həqiqi dəyərlər yox, sadəcə struktur göstərilir API_KEY=your_api_key_here DB_HOST=localhost DB_PORT=5432 DB_NAME=myapp_development DB_PASSWORD=your_db_password_here PAYMENT_GATEWAY_KEY=your_payment_key_here REDIS_URL=redis://localhost:6379

Bu sadə addım komandadakı hər yeni developer-ə minimum 1-2 saat qazandırır.

Səhv №4: Production və Development Secret-lərini Qarışdırmaq

Bu xüsusilə Azərbaycanda fəaliyyət göstərən ödəniş inteqrasiyalarında (məsələn, bank API-ları, milli ödəniş sistemləri) təhlükəlidir. Test key ilə production key-i eyri .env faylında saxlayırsan, bir gün səhvən production key-i test mühitində istifadə edirsən — və real müştəri datası risk altına düşür.

bash
# Mühitə görə ayrı fayllar istifadə et .env.development # Lokal development üçün .env.staging # Test server üçün .env.production # YALNIZ production serverdə olmalıdır

Səhv №5: Git Tarixçəsini Unutmaq

Ən qorxulu hissə budur: .env faylını .gitignore-a əlavə etdin, faylı sildin, commit etdin — amma əvvəlki commit-lərdə hələ də görünür!

bash
# Əgər artıq push etmisənsə, bu addımları at: # 1. Secret-i dərhal revoke et (ən vacib addım!) # API provider-in dashboard-undan key-i ləğv et # 2. Git tarixçəsindən silmək üçün git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch .env' \ --prune-empty --tag-name-filter cat -- --all # 3. Yeni key generate et və yalnız environment-də saxla # 4. Force push et (komandanı xəbərdar et!) git push origin --force --all

Qızıl qayda: Əgər secret bir dəfə olsun public repo-ya düşübsə — o secret artıq kompromis olunmuş sayılır. Mütləq yenisini generate et.

Production Üçün Best Practice-lər

Bakıda işləyən developer-lər üçün praktiki tövsiyələr:

  1. Secret manager istifadə et — AWS Secrets Manager, HashiCorp Vault, Azure Key Vault, ya da ən azı Docker secrets
  2. CI/CD pipeline-da secret-ləri environment variable olaraq təyin et — GitHub Actions Secrets, GitLab CI Variables
  3. Secret rotation policy qur — hər 90 gündən bir key-ləri yenilə
  4. Pre-commit hook qur — commit etməzdən əvvəl avtomatik yoxlasın:
bash
# pre-commit-config.yaml repos: - repo: https://github.com/gitleaks/gitleaks rev: v8.18.0 hooks: - id: gitleaks
  1. Audit et — mövcud repo-larını indi yoxla:
bash
# gitleaks ilə repo-nu skan et gitleaks detect --source=. --report-format=json --report-path=leak-report.json

Nəticə

Environment variable təhlükəsizliyi glamurlu mövzu deyil — amma bu, sənin professional səviyyəni göstərən əsas göstəricilərdən biridir. Bakıda müsahibəyə gedəndə hiring manager .env faylını repo-da görərsə, nə qədər yaxşı kod yazsan da, etibarını itirəcəksən.

Bu gün elə indi bir iş gör:

  • ✅ Bütün repo-larını gitleaks ilə skan et
  • .gitignore fayllarını yoxla
  • ✅ Hardcoded secret-ləri environment variable-a köçür
  • .env.example yarat

Bir secret sızıntısının qarşısını almaq, onun nəticələrini aradan qaldırmaqdan min dəfə asandır.

Təhlükəsiz kodlaşdırma, developer-lər! 🔐


Baku Stack | 3 Aprel 2026

Oxşar məqalələr

devops.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ CI/CD PIPELINE ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ git push → trigger ▓
▓ ↓ ▓
▓ ● checkout ✓ ▓
▓ ● npm ci ✓ ▓
▓ ● npm test ✓ ▓
▓ ● npm build ✓ ▓
▓ ● deploy ✓ ▓
▓ ↓ ▓
▓ PROGRESS ▓▓▓▓▓▓▓▓ 100%▓
▓ → SAYT CANLIDIR! ░░░ ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

GitHub Actions ilə Avtomatik Deploy — Pulsuz Hosting, Sıfır Stress

Hər git push əmrindən sonra saytın avtomatik deploy olsun, həm də pulsuz? GitHub Actions + GitHub Pages ilə bunu 10 dəqiqəyə qurursan.

devops.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ DEVOPS ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ $ docker build . ▓
▓ → deps ▓▓▓▓░░ 60% ▓
▓ → build ▓▓▓▓▓░ 80% ▓
▓ → runner ▓▓▓▓▓▓ ✓ ▓
▓ ● Image: 130 MB ▓
▓ ● Port: 3000 ▓
▓ ● User: nextjs ▓
▓ ──────────────────── ▓
▓ $ docker run -p 3000 ▓
▓ ✓ Ready on :3000 ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Docker ilə Next.js App Deployment — Addım-Addım Bələdçi

Next.js layihəni Docker ilə containerləşdirib production-a çıxarmağın ən sadə və düzgün yolu — real kod nümunələri ilə.

devops.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ DEVOPS ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ $ minikube start ▓
▓ ✓ cluster ready ▓
▓ ▓
▓ PODs: ●●●●●○○○ ▓
▓ NODES: ●●● ▓
▓ CPU: ▓▓▓▓▓░░░ 65% ▓
▓ MEM: ▓▓▓▓░░░░ 48% ▓
▓ ▓
▓ → scaling: 2 → 20 ▓
▓ → downtime: 0 sec ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Kubernetes başlanğıcı — nə vaxt lazım olur, nə vaxt yox?

Hər layihəyə Kubernetes lazım deyil. Gəl birlikdə baxaq: K8s nə vaxt həqiqətən işə yarayır, nə vaxt isə vaxt itkisidir.

← Bloqa qayıt