پرش به محتوای اصلی

خط پایه امنیت

خط پایه، حداقلی است که هیچ سرویسی زیر آن مستقر نمی‌شود. فراتر رفتن از آن تشویق می‌شود؛ پایین‌تر ماندن، مسدود.

کانتینر

هیچ کانتینری با کاربر Root اجرا نمی‌شود و سیستم فایل ریشه فقط‌خواندنی است.

securityContext:
  runAsNonRoot: true
  runAsUser: 1001
  allowPrivilegeEscalation: false
  readOnlyRootFilesystem: true
  capabilities:
    drop: ["ALL"]
  seccompProfile:
    type: RuntimeDefault

اسرار

اسرار در Vault نگه‌داری می‌شوند و با Sidecar به Pod تزریق می‌گردند. هیچ سری در مخزن، در ConfigMap، یا در متغیر محیطی تصویر ساخته‌شده قرار نمی‌گیرد.

resource "vault_kv_secret_v2" "payments_db" {
  mount = "kv"
  name  = "payments/production/database"
 
  data_json = jsonencode({
    username = var.db_username
    password = var.db_password
  })
}

پیش از هر Commit، اسکن اسرار روی Hook محلی اجرا می‌شود:

gitleaks protect --staged --redact --verbose

دروازه‌های خط لوله

بررسیابزارآستانه شکست
تحلیل ایستاsemgrepهر یافته‌ی High
وابستگی‌هاosv-scannerهر CVE با Fix موجود
ایمیجtrivyHIGH یا CRITICAL
سیاستconftestهر نقض

امنیتی که مهندسان دورش می‌زنند، امنیت نیست. اگر یک دروازه هفته‌ای چند بار به‌اشتباه Fail می‌دهد، پیش از آن‌که کسی یاد بگیرد نادیده‌اش بگیرد، تنظیمش کنید یا حذفش کنید.

شبکه

پیش‌فرض هر Namespace، رد کردن تمام ترافیک ورودی است. دسترسی‌ها به‌صورت صریح باز می‌شوند.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
spec:
  podSelector: {}
  policyTypes: ["Ingress"]