مدیریت تنظیمات و اسرار
مدیریت تنظیمات و اسرار
1) چرا شما به آن نیاز دارید
تنظیمات و اسرار «خون» پلت فرم تولید است. یک خطا در پیکربندی به p95 می افتد، راز نشت یک حادثه P1 است. هدف این است که یک پیکربندی/راز ایجاد کنید:- قابل پیش بینی (طرح ها، اعتبار سنجی، نسخه ها).
- امن (رمزگذاری، حداقل حقوق، چرخش).
- مدیریت شده (GitOps، حسابرسی، بازپرداخت).
- پویا در جایی که توجیه می شود (پرچم های ویژگی، پارامتری کردن محدودیت ها).
2) طبقه بندی مصنوعات
تنظیمات عمومی: ویژگی ها، آستانه ها، زمان بندی ها، پرچم های ویژگی (بدون اسرار).
تنظیمات حساس: پارامترهایی که رفتار مسیرهای بحرانی را تغییر می دهند (به عنوان مثال، محدودیت های پرداخت).
اسرار: کلمات عبور/کلید/نشانه/گواهی/مواد رمزگذاری.
مصنوعات اعتماد: گواهینامه های ریشه/متوسط، سیاست های PKI، کلید های KMS.
اصل جداگانه ذخیره سازی و حقوق: اسرار ≠ عمومی ≠ حساس است.
3) سلسله مراتب پیکربندی
ساخت یک «هرم» از لایه ها:1. پیش فرض های جهانی (org-wide).
2. محیط زیست ('prod/stage/dev').
3. منطقه («eu-central-1»، «us-east-1»).
4. مستاجر/نام تجاری (برای چند مستاجر).
5. خدمات (میکروسرویس خاص)
6. نادیده گرفتن (زمان اجرا) - سوئیچ های موقت.
قوانین ادغام: «زیر برنده»، درگیری - تنها از طریق MR/تصویب.
مثال (YAML)
yaml defaults:
http:
timeout_ms: 800 retry: 2 prod:
http:
timeout_ms: 1200 service: payments-api overrides:
eu-central-1:
http:
timeout_ms: 1500
4) طرح ها و اعتبار سنجی
هر پیکربندی یک قرارداد با یک طرح (JSON Schema/OPA/validators در CI) است.
انواع، محدوده ها، زمینه های مورد نیاز، مقادیر پیش فرض.
«قوانین گارد» (نمی توان به 'retry> 5'، 'p95 _ target <50ms' تنظیم کرد).
بررسی خودکار در CI و زمانی که اعمال می شود (پذیرش-webhook/KRM).
قطعه طرح JSON
json
{
"type":"object",
"properties":{
"http":{"type":"object","properties":{"timeout_ms":{"type":"integer","minimum":100,"maximum":10000},"retry":{"type":"integer","minimum":0,"maximum":5}},"required":["timeout_ms"]},
"feature_flags":{"type":"object","additionalProperties":{"type":"boolean"}}
},
"required":["http"]
}
5) مدل های تحویل پیکربندی
استاتیک (تصویر پخته شده): قابل اعتماد است، اما نیاز به راه اندازی مجدد دارد.
فشار/سازمان دیده بان :/عوامل sidecar دریافت به روز رسانی (جریان/نظرسنجی) و سیگنال نرم افزار.
نگه دار، در راه اندازی: ما یک عکس فوری در راه اندازی (ساده داغ مسیر).
کش/پروکسی لبه برای بارهای توزیع شده جغرافیایی.
نکته اصلی: اتمی بودن و نسخه بندی عکس های فوری، کنترل سازگاری و بازگشت سریع.
6) ابزار و نقش
فروشگاه های پیکربندی: Git (منبع حقیقت) + GitOps (Argo/Flux)، Parameter Store/Config Service.
مخازن مخفی: Vault، AWS Secrets Manager/SSM، اسرار GCP، Azure KV.
رمزگذاری: KMS/HSM، SOPS (سن/GPG/KMS)، اسرار مهر و موم شده، رمزگذاری حمل و نقل (خرک).
تحویل: CSI Secrets Store، Vault Agent Injector/Sidecar، init-containers.
پرچم ها/دینامیک: پلت فرم پرچم (شامل سوئیچ کشتن اضطراری).
7) رمزگذاری: مدل ها و شیوه ها
در حالت استراحت: کلید KMS از پروژه/محیط زیست، رمزگذاری پاکت.
در حمل و نقل: TLS/mTLS با احراز هویت متقابل.
در حال استفاده: رمزگشایی در صورت امکان، ترجیحا در حافظه/حافظه جانبی (بدون نوشتن روی دیسک).
سلسله مراتب کلید: ریشه (HSM) → KMS CMK → کلیدهای داده (DEK).
چرخش: تقویم (90/180 روز) + توسط رویداد (سازش کارمند/خروج).
8) مدیریت مخفی: الگوها
8. 1 GitOps + SOPS (عکس فوری استاتیک)
Git فقط متن رمز شده را ذخیره می کند.
رمزگشایی در CI/CD یا در یک خوشه (KMS/age).
کاربرد از طریق کنترل کننده (Flux/Argo) → Kubernetes Secret.
yaml apiVersion: v1 kind: Secret metadata: { name: psp-keys, namespace: payments }
type: Opaque data:
apiKey: ENC[AES256_GCM,data:...,sops]
8. 2 خرک عامل انژکتور
حساب سرویس (JWT/SA) در Vault تأیید شده است.
Sidecar اعتبارات را در tmpfs و به روز رسانی در TTL قرار می دهد.
پشتیبانی از اعتبار پویا (DB، ابر - انزوا و کوتاه مدت).
yaml annotations:
vault. hashicorp. com/agent-inject: "true"
vault. hashicorp. com/role: "payments-api"
vault. hashicorp. com/agent-inject-secret-db: "database/creds/payments"
8. 3 فروشگاه اسرار CSI
راز را به عنوان حجم، چرخش شفاف است.
برای PKI - تجدید خودکار گواهینامه ها/کلید ها.
9) Kubernetes: عملیات
ConfigMap - فقط داده های عمومی/غیر حساس.
مخفی - حساس (با base64 - رمزگذاری نیست ؛ Encryption at Rest for etcd) را فعال کنید.
حاشیه نویسی Checksum: راه اندازی مجدد هنگام تغییر پیکربندی.
کنترل پذیرش: ممنوعیت نصب اسرار نه از «لیست سفید»، ممنوعیت کلمه عبور «ساده» در ظاهر.
NetworkPolicy: محدود کردن دسترسی به ارائه دهندگان مخفی (Vault/CSI).
مثال چک سام (هلم)
yaml annotations:
checksum/config: {{ include (print $.Template. BasePath "/configmap. yaml"). sha256sum }}
10) سیاست های دسترسی (RBAC/ABAC)
کمترین امتیاز: خدمات فقط اسرار خود را می بیند ؛ دسترسی توسط فضای نام/برچسب/پیشوند.
تقسیم وظایف: ایجاد یک راز ≠ خواندن محتوا ؛ هر خواندن را بررسی کنید.
اعتبار موقت: ورود پویا (DB، ابر) با TTL و چرخش خودکار.
بخش بندی: تولید/مرحله در پروژه های مختلف/حساب/کلید های KMS.
11) حسابرسی، ورود به سیستم، مشاهده پذیری
سیاهههای مربوط به خواندن/صدور اسرار: چه کسی/چه زمانی/چه چیزی/کجا ؛ ارتباط با انتشارات و حوادث
معیارها: فرکانس تماس ها، اسرار منقضی شده، گواهینامه های منقضی شده، سهم اعتبار پویا.
رویدادهای امنیتی - سهمیه بیش از حد، ناهنجاری های IP/زمان، احراز هویت چندگانه شکست خورده است.
12) چرخش اسرار و گواهینامه ها
استاندارد کردن شرایط: کلید API - 90 روز، کلمه عبور DB - 30 روز، TLS serts - 60-90 روز.
Rotation outline: generation → test → double publication (grace) → switching → revolocation of old → verification.
قابلیت اطمینان: ورود دوگانه configs/secrets، سازگاری مشتری (قبول جدید + قدیمی).
PKI: خود CA یا ادغام با یک خارجی ؛ به طور خودکار محتوای mTLS را از طریق CSI/Vault به روز کنید.
13) پیکربندی پویا و پرچم های ویژگی
پارامترهای «داغ» (محدودیت ها، زمان بندی ها) را از پلت فرم سرویس/پرچم پیکربندی کنید.
حافظه پنهان محلی و چسبندگی (محاسبه نوع توسط هش)، کوتاه TTL.
نگهبانان SLO برای تغییر پارامترهای حساس (خودکار برگشت و سوئیچ کشتن).
14) ادغام با CI/CD و GitOps
Pre-commit/CI: خطوط مدار، بررسی های SOPS، ممنوعیت اسرار «برهنه» (اسکنرها: gitleaks/trufflehog).
Policy Gate: OPA/Conftest - پیکربندی بدون طرح/بدون حاشیه نویسی مالک/بدون برچسب های محیط را غیرفعال کنید.
تحویل مترقی: ارتقاء پیکربندی به عنوان مصنوعات (semver)، canary برای تغییر پارامترها.
حاشیه نویسی انتشار: چه کسی/چه پیکربندی/مخفی تغییر ؛ ارتباط سریع با p95/5xx
15) مثال ها
15. 1 سیاست OPA: ممنوعیت SG های باز در پیکربندی
rego package policy. config
deny[msg] {
input. kind == "SecurityGroupRule"
input. cidr == "0. 0. 0. 0/0"
input. port = = 5432 msg: = "Postgres open internet banned"
}
15. 2 نمونه ای از یک عکس فوری پیکربندی (نسخه)
yaml version: 1. 12. 0 owner: payments-team appliesTo: [ "payments-api@prod" ]
http:
timeout_ms: 1200 retry: 2 withdraw:
limits:
per_txn_eur: 5000 per_day_eur: 20000 flags:
new_withdrawal_flow: false
15. 3 خرک - اعتبار پایگاه داده پویا
hcl path "database/creds/payments" {
capabilities = ["read"]
}
role issues user/password with TTL = 1h and auto-rollover
16) ضد الگوهای
اسرار در Git در متن روشن/متغیرهای Helm/Ansible بدون رمزگذاری.
یک «مگا راز» برای همه خدمات/محیط.
نشانه های طولانی مدت بدون TTL/چرخش ؛ گواهي نامه هاي «فناناپذير»
پیکربندی پویا بدون طرح/اعتبار سنجی و بدون تغییرات ممیزی.
بدون رمزگذاری در حالت استراحت برای etcd/KMS و شبکه غیر mTLS.
ویرایش دستی تنظیمات در محصول (با دور زدن GitOps).
دسترسی به توسعه دهندگان برای اسرار تجاری «فقط در مورد».
17) چک لیست پیاده سازی (0-60 روز)
0-15 روز
شامل نمودارها/اعتبار سنج برای پیکربندی ؛ شروع مجدد «configs» و جریان GitOps.
بالا بردن KMS و رمزگذاری: SOPS/اسرار مهر و موم شده/رمزگذاری در بقیه در etcd.
اسرار متن ساده را در CI (اسکنرها) ممنوع کنید، صاحبان/مصوبات را وارد کنید.
16-30 روز
تقسیم والتها: پیکربندی عمومی در مقابل حساس در مقابل اسرار.
پیاده سازی خرک/اسرار مدیر، مسیر تحویل (عامل/CSI/SOPS) را انتخاب کنید.
تنظیم چرخش اعتبارات TLS/DB/PSP ؛ داشبورد «طول عمر/انقضا».
31-60 روز
پیکربندی پویا و پرچم با SLO-gating و خودکار بازگشت.
سیاست های OPA/Conftest ؛ zero-trust (namespace/label-scoped access)
Game-day: شبیه سازی نشت مخفی و چرخش نیرو.
18) معیارهای بلوغ
٪ از اسرار تحت رمزگذاری و بدون دسترسی مستقیم از Git = 100٪.
پوشش پیکربندی/اعتبار 95٪ ≥.
میانگین زمان چرخش اسرار مهم (هدف: ساعت، نه روز).
سهم اعتبارات پویا (DB/cloud) 80٪ ≥.
0 حادثه به دلیل «اسرار ساده «/گواهینامه های منقضی شده.
MTTR خطای پیکربندی با برگشت <5 دقیقه.
19) نقش ها و فرآیندهای فرماندهی
پیکربندی مالک: مالک دامنه/طرح/سیاست.
امنیت: سیاست ها، سلسله مراتب کلیدی، ممیزی دسترسی.
پلت فرم/SRE: GitOps، عرضه/تزریق، تله متری.
تیم های برنامه: مصرف پیکربندی/مخفی، تست سازگاری.
20) نتیجه گیری
کانتور قابل اعتماد از تنظیمات و اسرار + GitOps + رمزگذاری + چرخش + طرح های سیاست. عمومی و مخفی را جدا کنید، همه چیز را رمزگذاری کنید، پیکربندی ها را به صورت اتمی و نسخه ای اعمال کنید، حقوق و طول عمر اعتبارات را به حداقل برسانید، چرخش ها و ممیزی ها را خودکار کنید. سپس تغییرات سریع و ایمن خواهند بود و خطر نشت و سقوط حداقل خواهد بود.