خط پایه امنیت
خط پایه، حداقلی است که هیچ سرویسی زیر آن مستقر نمیشود. فراتر رفتن از آن تشویق میشود؛ پایینتر ماندن، مسدود.
کانتینر
هیچ کانتینری با کاربر 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 موجود |
| ایمیج | trivy | HIGH یا CRITICAL |
| سیاست | conftest | هر نقض |
امنیتی که مهندسان دورش میزنند، امنیت نیست. اگر یک دروازه هفتهای چند بار بهاشتباه Fail میدهد، پیش از آنکه کسی یاد بگیرد نادیدهاش بگیرد، تنظیمش کنید یا حذفش کنید.
شبکه
پیشفرض هر Namespace، رد کردن تمام ترافیک ورودی است. دسترسیها بهصورت صریح باز میشوند.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
spec:
podSelector: {}
policyTypes: ["Ingress"]