GH GambleHub

Операції та Управління → Аудит конфігурацій

Аудит конфігурацій

1) Мета і цінність

Аудит конфігурацій забезпечує доказову підзвітність і повторюваність змін: хто, коли і що поміняв; чим обґрунтовано; як перевірено; як відкотити. Це знижує ризик інцидентів, витоків секретів, невідповідності комплаєнсу і «прихованих» правок у проді.

Ключові результати:
  • Єдине джерело правди (SoT) для конфігов.
  • Повне трасування змін (end-to-end).
  • Передбачувані релізи і швидкий відкат.
  • Відповідність регуляторним вимогам і політикам безпеки.

2) Область охоплення

Інфраструктура: Terraform/Helm/Ansible/K8s маніфести, мережеві ACL/WAF/CDN.
Прикладні конфіги: файли'yaml/json/properties', фіча-прапори, ліміти/квоти.
Секрети та ключі: vault/kms, сертифікати, токени, паролі.
Пайплайни даних: схеми, трансформації, розклади ETL/стрімів.
Інтеграції: PSP/KYC/провайдери, вебхуки, retry/timeout політики.
Спостережуваність: правила алертів, дашборди, SLO/SLA.

3) Принципи

Config as Data: декларативні, версіоновані, тестовані артефакти.
Іммутабельність та ідемпотентність: відтворюваність середовища з коду.
Схеми та контракти: сувора валідація (JSON-Schema/Protobuf), back/forward-сумісність.
Мінімізація ручних правок: зміни тільки через MR/PR.
Поділ обов'язків (SoD) і 4-eyes: автор! = деплоєр; обов'язковий рев'ю.
Атрибуція та підписи: підписи комітів/релізів, attestations артефактів.

4) Архітектура аудиту

1. SCM (Git) як SoT: всі конфіги в репозиторії, гілка «main» захищена.

2. Регістри:
  • Config Registry (каталог конфігов, володіння, SLA, оточення),
  • Schema Registry (версії схем конфігів/івентів),
  • Policy Engine (OPA/Conftest) - набір перевірок.
  • 3. CI/CD-гейти: формат/схема → статична перевірка → policy checks → секрет-скан → dry-run → план змін.
  • 4. Delivery: GitOps (наприклад, ArgoCD/Flux) з drift-детектором і audit-логами застосувань.
  • 5. Evidence Store: сховище артефактів аудиту (план, логи, підписи, білди, SBOM).
  • 6. Журнал дій: незмінний лог (append-only) подій'CREATE/APPROVE/APPLY/ROLLBACK/ACCESS'.

5) Модель даних аудиту (мінімум)

Сутності: `ConfigItem(id, env, service, owner, schema_version, sensitivity)`

Події: `change_id, actor, action, ts, diff_hash, reason, approvals[]`

Артефакти: `plan_url, test_report_url, policy_report, signature, release_tag`

Зв'язки: RFC/тікет ↔ PR ↔ деплою (sha) ↔ реліз-запис ↔ моніторинг SLO.

6) Процес зміни (наскрізний)

1. RFC/тікет → мета, ризик, backout.
2. PR/MR → лінтинг, схематична валідація, policy-перевірки, секрет-скан.
3. План/прев'ю → dry-run/plan, дифф ресурсів, оцінка вартості/імпакту.
4. Approve (4-eyes/SoD, мітка CAB при високому ризику).
5. Deploy (за вікном/календарем) → GitOps застосовує; включений drift-алертинг.
6. Верифікація → smoke/SLO-гардрейли, підтвердження результату.
7. Архівація доказів → evidence store; оновлення словника конфігурації.

7) Політики і правила (приклади)

SoD: в прод не мержит автор PR.
Обмеження часу: прод-деплою поза «freeze» заборонений.
Scope: зміна чутливих ключів вимагає 2х апруверів з Security/Compliance.
Секрети: заборонено зберігати в репо; тільки посилання на vault-шлях + роль доступу.
Мережі: ingress с `0. 0. 0. 0/0'заборонений без тимчасового виключення і TTL.
Алерти: заборонено знижувати критичність P1 без CAB.

8) Контроль секретів

Зберігання в Vault/KMS, короткі TTL, автоматична ротація.
Secret scanning в CI (патерни ключів, high-entropy).
Ізоляція секретів по оточеннях/ролях; мінімально необхідні привілеї.
Шифрування «на проводі» і «в спокої»; закриті аудит-логи доступу до секретів.

9) Інструменти (варіативно)

Lint/Schema: `yamllint`, `jsonschema`, `ajv`, `cue`.
Policy: OPA/Conftest, Checkov/tfsec/kube-policies.
GitOps: ArgoCD/Flux (drift detection, audit, RBAC).
Secrets: HashiCorp Vault, cloud KMS, cert-менеджери.
Сканери: trufflehog, gitleaks (секрети); OPA/Regula (правила).
Звітність: export журналів в DWH/BI, зв'язка з інцидент- і change-системою.

10) Приклади правил і артефактів

JSON-Schema для конфігурації лімітів

json
{
"$schema": "http://json-schema. org/draft-07/schema#",
"title": "limits",
"type": "object",
"required": ["service", "region", "rate_limit_qps"],
"properties": {
"service": {"type":"string", "pattern":"^[a-z0-9-]+$"},
"region": {"type":"string", "enum":["eu","us","latam","apac"]},
"rate_limit_qps": {"type":"integer","minimum":1,"maximum":5000},
"timeouts_ms": {"type":"integer","minimum":50,"maximum":10000}
},
"additionalProperties": false
}

Conftest/OPA (rego) - заборона'0. 0. 0. 0/0` в ingress

rego package policy. network

deny[msg] {
input. kind == "IngressRule"
input. cidr == "0. 0. 0. 0/0"
msg:= "Ingress 0. 0. 0. 0/0 is not allowed. Specify specific CIDRs or throw an exception with TTL"
}

Conftest/OPA - SoD (прод не мержит автор)

rego package policy. sod

deny[msg] {
input. env == "prod"
input. pr. author == input. pr. merger msg: = "SoD: PR author cannot hold in prod."
}

SQL (DWH) - хто знижував критичність алертів за місяць

sql
SELECT actor, COUNT() AS cnt
FROM audit_events
WHERE action = 'ALERT_SEVERITY_CHANGED'
AND old_value = 'P1' AND new_value IN ('P2','P3')
AND ts >= date_trunc('month', now())
GROUP BY 1
ORDER BY cnt DESC;

Приклад Git commit message (обов'язкові поля)


feat(config/payments): raise PSP_B timeout to 800ms in EU

RFC: OPS-3421
Risk: Medium (PSP_B only, EU region)
Backout: revert PR + restore timeout=500ms
Tests: schema ok, conftest ok, e2e ok

11) Моніторинг та алертинг

Drift-детект: конфіг в кластері ≠ Git → P1/P2 сигнал + авто-ремедіація (reconcile).
High-risk change: зміна мереж/секретів/політик - повідомлення в #security -ops.
Missing evidence: деплою без плану/підпису/звітів - блок або алерт.
Expired assets: терміни дії сертифікатів/ключів → pro-активні алерти.

12) Метрики та KPI

Audit Coverage% - частка конфігів під схемами/політиками/сканерами.
Drift MTTR - середній час усунення дрейфу.
Policy Compliance% - прохід політик на PR.
Secrets Leak MTTR - від витоку до відгуку/ротації.
Backout Rate - частка відкатів конфіг-змін.
Mean Change Size - середній дифф по рядках/ресурсах (менше - краще).

13) Звітність та відповідність

Сліди аудиту: зберігання ≥ 1-3 років (за вимогами), незмінне сховище.
Регуляторика: ISO 27001/27701, SOX-подібні SoD, GDPR (PII), галузеві вимоги (iGaming: облік зміни розрахунків GGR/NGR, лімітів, бонус-правил).
Щомісячні звіти: топ-змін, порушення політик, дрейф, що закінчуються сертифікати, статус ротацій.

14) Плейбуки

A. виявлений дрейф в проді

1. Заблокувати авто-деплою для порушеного сервісу.
2. Зняти снапшот поточного стану.
3. Порівняти з Git, ініціювати'reconcile'або відкат.
4. Створити інцидент P2, вказати джерело дрейфу (ручний kubectl/консоль).
5. Увімкнути захист: заборона прямих змін (PSP/ABAC), повідомити власників.

B. прострочений сертифікат PSP

1. Перемкнути на резервний шлях/PSP, знизити таймаути/ретраї.
2. Випустити новий сертифікат через PKI-процес, оновити конфіг через Git.
3. Smoke-тест, повернути трафік, закрити інцидент, провести пост-мортем.

C. секрет потрапив в PR

1. Відкликати ключ/токен, задіяти ротацію.
2. Переписати історію/видалити артефакт з кешів, оформити RCA.
3. Додати правило в secret-сканер, навчити команду.

15) Анти-патерни

Ручні правки «на проді» без сліду і відкату.
Конфіги без схем і без валідації.
Секрети в Git/CI-змінних без KMS/Vault.
Монорепо з еквівалентом «глобального супер-права».
«Глухий» GitOps без drift-алертів і журналів застосувань.
Величезні PR «все і відразу» - нечітка атрибуція і високий ризик.

16) Чек-листи

Перед merge

  • Схема і лінтери пройдені
  • Політики OPA/Conftest «зелені»
  • Secret-scan - «чисто»
  • План/дифф прикладений, ризик оцінений, backout готовий
  • 2 апрува (prod) і SoD дотриманий

Перед deploy

  • Вікно релізу і календар перевірені
  • Drift-моніторинг активний
  • SLO-гардрейли налаштовані, smoke-тести готові

Щомісяця

  • Ротація ключів/сертифікатів за графіком
  • Інвентаризація власників і прав
  • Рев'ю правил ОРА/винятків (TTL)
  • Тест інцидент-плейбуків (fire-drill)

17) Дизайн-поради

Дробіть зміни на маленькі диффи; один PR - одна мета.
Обов'язкові шаблони PR/комітів з RFC/ризиком/відкатом.
Для динамічних конфігів використовуйте «центри конфігів» з аудитом і rollback.
Версіонуйте схеми; забороняйте breaking без міграцій.
Візуалізуйте «карту конфігів»: що, де, ким управляється.

18) Інтеграції з управлінням змінами та інцидентами

PR ↔ RFC ↔ календар релізів ↔ інциденти/пост-мортеми.
Автоприв'язка метрик (SLO/бізнес) до релізів конфігів.
Авто-створення завдань на видалення старих прапорів/винятків (TTL).

19) Підсумок

Аудит конфігурацій - це не «паперова звітність», а операційний механізм надійності: конфіги - дані, зміни - контрольовані і перевіряються, секрети - під замком, а вся історія - прозора і піддається перевірці. Так будується стійка, комплаєнтна і передбачувана платформа.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Telegram
@Gamble_GC
Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.