API қауіпсіздігі және сұрау сүзгісі
1) Бұл не үшін қажет
API - платформаның сыртқы және ішкі шекарасы. Аутентификациядағы, авторизациядағы, валидациядағы немесе нормаландырудағы кез келген қате осалдықтарды пайдалануға айналады (BOLA/IDOR, injection, SSRF, жаппай шектен шығу, ресурстық сарқылу). Мақсаты: өлшенетін SLO және тәуекелдерді бақылаумен периметрден бизнес-ережелерге дейін көп деңгейлі қорғанысты (defense-in-depth) құру.
2) API түгендеу және жіктеу
API каталогы: барлық сервистердің/эндпоинттердің тізілімі, клиенттердің иелері, нұсқалары, типтері (web, mobile, серіктестер), режим (жария/серіктес/ішкі), PII/қаржылық деректер.
Сындылығы: High (қаржылық операциялар/авторизация), Medium (бейінді оқу), Low (көпшілік анықтамалықтары).
Шабуыл беті: REST, GraphQL, gRPC, WebSocket, webhooks.
Мәртебесі: prod/staging/experimental, депрекейт саясаты, токендер/кілттердің өмір сүру мерзімі.
Shadow/тасталған API: логтардың ингресті арқылы табу, eBPF/Service Mesh телеметрия, каталогпен салыстыру.
3) Қатерлер моделі (қысқаша)
Сәйкестендіру: токендерді ұрлау, сессияны тіркеу, MitM, replay.
Авторизация: BOLA/IDOR, көлденең/тік эскалация.
Енгізу: инъекциялар (SQL/NoSQL/LDAP), шаблондық/серилизациялық, path traversal, тақырыптар.
Трафик: DDoS/L7-флудалар, баяу сұраулар, фантомдық ретрациялар.
Интеграциялар: қауіпсіз емес webhooks, URL параметрлері арқылы SSRF, файлдарды/сканерлерді жүктеу.
Логика: бонустарды теріс пайдалану, жарыстар, сәйкессіздік.
4) Қауіпсіздіктің базалық стандарты (минимум)
1. TLS 1. 2 + барлық жерде; HSTS; әлсіз шифрлар ажыратылған.
2. Аутентификация: клиенттер үшін OAuth2/OIDC, mTLS/немесе HMAC - сервис-к-сервис.
3. Авторизация: орталықтандырылған PDP (RBAC/ABAC), объектілік деңгейде тексеру (BOLA).
4. Валидация: қатаң схема (OpenAPI/JSON Schema/Protobuf), артық өрістерде істен шығу.
5. Лимиттер: rate/quotas + burst, пер-клиент/пер-IP/пер-токен.
6. Write-операциялардағы теңсіздік, қайталанудан/жарыстан қорғау.
7. WAF/гейтвей-сүзу: жолдарды/тақырыптарды қалыпқа келтіру, deny-парақтар, payload-анти-паттерндер блогы.
8. Құпиялар: KMS/Vault, кілттерді/сертификаттарды ротациялау, ағындарды бақылау.
9. Бақылануы: трассинг, қауіпсіздік аудит-логтары (кім/не/қашан/нәтиже), алерта.
10. Процедуралар: playbook инциденттер, тест-кейстер және тұрақты пентесттер/DAST.
5) Токендерді аутентификациялау және басқару
OAuth2/OIDC: қысқа өмір сүретін access-токендер, refresh қатаң OIDC бойынша; audience/issuer/exp гейтвейде тексеріледі.
JWT: RS256/ES256; ең аз клеймо жиынтығы; 'nbf/exp/aud' міндетті; PII сақтауға тыйым салу. JWKS арқылы кілттерді ротациялау.
DPoP/PoP: replay/айдап әкету қаупін төмендету үшін токенді клиент кілтіне байланыстыру.
Ішкі жүйелер мен сенімді серіктестерге арналған mTLS (CN/SAN, CRL/OCSP бойынша аттестаттау).
HMAC (қолдары): детерминирленген каноникализация (әдіс + жол + timestamp + nonce + body-hash); рұқсат етілген уақыт терезесі (± 300s).
Шолғыш сеанстары: SameSite = strict/lax, HttpOnly, Secure; CSRF (double submit/стейт-токендер) қорғанысы.
Клиенттердің қоймасы: мобильді - қауіпсіз сақтау орындары (Keychain/Keystore), дебагтан қорғау, сертификаттар пиннингі.
6) Авторизация (BOLA-first)
Object-level: әрбір операция нақты ресурстың құқығын тексереді (resource owner/scope/төлсипаттар).
RBAC/ABAC: рөлдер + атрибуттар (ел, сегмент, тәуекел лимиттері, KYC-деңгей).
Саясат: deny-by-default; айқын allow; саясатты нұсқалау; теріс жағдайларға арналған тестілер.
Шешімдердің кеші: бейімделген TTL + рөлдер/сегменттер өзгерген кезде мүгедектік.
7) Сұратуларды сүзу және қалыпқа келтіру (гейтвейде/WAF)
Қалыпқа келтіру: қайталама слэштерді қысу, тыйым салу '../', бір рет декодтау, бос орындарды/нөл байттарды кесу.
Тақырыптар: allow-list ('Host', 'Content-Type', 'Accept', 'Authorization', 'Date', 'Idempotency-Key', қажетті trace-тақырыптар).
Әдістер: 'GET/HEAD' денесіз; 'POST/PUT/PATCH' - 'application/json' түрімен немесе қатаң рұқсат етілген.
Өлшемдері: max-body, max-headers, max-path; early-reject 413/431.
Файлдар: MIME валидаторы, антивирус/сандбокс, белсенді мазмұнға тыйым салу, суреттерді ресайз/санитайз.
URL-мекенжайлар/фетчтер: SSRF блогы (deny private ranges/metadata IP, тек 'https', домендердің allow-list схемасы).
SQL/NoSQL-үлгілері: WAF rule-sets + серверлік параметрлеу сұраулары арқылы инъекция белгілері.
Тақырып саясатының мысалы (псевдо-формат)
deny_headers: ["X-Forwarded-Proto","X-Original-URL","Proxy-Connection","Destination"]
require_headers: ["Authorization" (для protected), "Content-Type" (для write)]
strip_duplicates: true max_header_count: 32 max_header_size: 16KB
8) Лимиттер, квоталар және қарсы қорғаныс
Rate limiting: token-bucket/ leaky-bucket; деңгейлер - per IP, per API key, per user, per org.
Quotas: тәуліктік/айлық, write/expensive әдістері үшін бөлек.
Бейімділігі: аномалиялар кезінде динамикалық қатаю (sudden burst/credential stuffing).
Slow-loris/slow-POST: оқу/keep-alive таймауттары, параллель қосылыстарды шектеу.
Антибот: device-fingerprint, мінез-құлық белгілері, жоғары тәуекелге proof-of-work/капча, торлар/прокси-желілер тізімі.
IP-бақылау: гео/ASN-сүзгілер, «лас» кіші желілердің deny-парақтары, серіктестер/әкімшілік панельдер үшін allow-парақтары.
9) Кіріс деректері мен схемаларын валидациялау
Fail-closed: схемадан өтпегендердің барлығы - 400. Артық өрістер - қабылдамау.
Түрлері/диапазондары: сандар, күндер (UTC/ISO-8601), enum-мәндер, жол ұзындықтары, регэксптер.
JSON-сапасы: max-nesting, үлкен массивтерге/кілттерге тыйым салу, canonical order (қосымша).
Бизнес-валидация: «Idempotency-Key» бойынша ұқсастық; анти-фрод-ережелер (операциялар жиілігінің лимиттері, amount caps).
GraphQL: depth/complexity-лимиттер, allow-listed queries, пер-өріс авторизациясы.
gRPC: қатаң Protobuf схемалары, міндетті өрістер, хабарламалар өлшемінің лимиттері.
10) Webhooks және сыртқы қоңыраулар
Қолтаңбалар: Таймстамппен HMAC/nonce; өңдеуге дейінгі верификация; терезе +/- 5 мин.
Жеткізу: экспоненциалды үзілісі және джиттері бар ретра; max-әрекеттер; оқиға ID бойынша дедупликация.
жеткізушінің IP allow-list; жеке кіші домен/жол; минималды хостинг-стек.
Жауаптар: 2xx сәтті ішкі жазбадан кейін ғана; керісінше 4xx/5xx түсінікті кодпен.
Шығыс SSRF бақылау: callback URL - allow-list кезінде, жеке мекенжайларға тыйым салу.
11) Шифрлау және құпияларды басқару
Арнада: TLS 1. 2+/1. 3, пиннинг, шифрлардың қатаң саясаты.
Тыныштықта: ДБ/объектілік қойманы шифрлау, PII/қаржылық деректер үшін жеке кілттер.
KMS/Vault: орталықтандырылған құпияларды сақтау, қысқа TTL, автоматты ротация.
Кілттер мен сертификаттар: қоршаған ортаға арналған жеке; беру аудиті; логиге шығаруға тыйым салу.
Token-introspection: offline-шолу тізімдері (revocation), қысқа 'exp'.
12) Бақылау, аудит және ден қою
Қауіпсіздік логтары: аутентификация әрекеттері/табыстары, авторизациядан бас тарту, rate-limit оқиғалар, рөлдерді/лимиттерді өзгерту.
Трасса: correlation-ID өтпелі; сыртқы шақырулар трассингі.
Метриктер: RPS, P95/P99 latency, кодтар бойынша error-rate, 401/403/429 үлесі, hit-rate лимиттері, аномалиялар.
Алерталар: 401/403/429 жарылыстары, 5xx биіктігі, жиі idempotency-қақтығыстар, QL-complexity бағандарының күрт ауытқулары.
Playbooks: кілттерді/токендерді бұғаттау, ережелерді жылдам қайтару, deny-парақты қыздыру, сервис иелеріне хабарлау.
Форензика: даулы payload (PII қауіпсіз редакциялау), репликаны оқшауланған стендте сақтау.
13) Қателер және клиентке жауаптар
Бірыңғай қате пішімі (код, хабарлама, trace-id, санат).
Ағытусыз: SQL, кесте атаулары, ішкі айдтар ашылмасын; 403 «неге нақты жоқ» орнына.
Кодтар: 400 (валидация), 401 (аутентификация жоқ), 403 (құқықтар жоқ), 404 (тіршілікті бүркемелеу), 405/406, 413/429, 500/503.
Retry-Hints: для 429 — `Retry-After`; демпотенттілік үшін - сол кілтпен қайталау жөніндегі кеңес.
14) Сәулет паттерндері
Zero-Trust: mTLS, барлық сервистер арасында айқын авторизация, ең аз артықшылықтар.
API-шлюз + WAF + сервис-меш: міндеттерді бөлу - периметр, L7-саясат, ішкі аутентификация.
Canary/Blue-Green: жаңа сүзу ережелерін бақылаумен кезең-кезеңімен шығару.
Fail-closed: сыни write үшін - дұрыс емес операцияға жол беруден гөрі қауіпсіз бас тарту жақсы.
Backpressure: кезектер/буферлер, circuit breaker, timeouts/budgets.
15) Практикалық ережелердің үлгілері (жалған)
15. 1 Жолдар мен әдістерді шектеу
/api/v1/payments:
allow_methods: [POST, GET]
auth: oauth2_required body:
content_type: application/json max_size: 256KB
15. 2 Сәйкессіздік
require_header: Idempotency-Key (UUIDv4)
store: redis:ttl=24h on_duplicate: return_previous_result
15. 3 Сұрау салудың қолы (HMAC)
signature:
scheme: "HMAC-SHA256"
required_headers: ["X-Signature","X-Timestamp","X-Nonce"]
allowed_drift: 300s string_to_sign: METHOD + "\n" + PATH + "\n" + SHA256(body) + "\n" + X-Timestamp + "\n" + X-Nonce
15. 4 SSRF қорғанысы
outbound_http:
allowlist_domains: ["kyc. partner. com","psp. example. net"]
block_private_ip: true require_https: true
15. 5 GraphQL лимиті
graphql:
max_depth: 8 max_complexity: 500 allowlisted_operations_only: true
16) iGaming/Қаржы ерекшелігі
Сегменттік лимиттер: ӨЕК/ел/тәуекел бейініне байланысты.
Уақытша терезелер: депозиттер/шығарулар жиілігінің ережелері, транзакциялар арасында «салқындату».
Анти-абьюз бонустар: аккаунтқа/құрылғыға/IP/төлем құралына консистенттік бұғаттау.
Реттеуіштер талаптарының аудиті: әрекеттер мен шешімдер логтарын сақтау (KYC/AML), ретеншн-кезеңдер, өзгермейтін журналдар.
17) Prod-әзірліктің бақылау тізімі
- Толық API каталогы және деректер ағындарының картасы (PII/қаржы белгіленген).
- OpenAPI/Protobuf схемалары, валидация тестілері және CI келісімшарттары.
- mTLS/HMAC/OAuth2 теңшелген; қысқа TTL токендері; кілттерді ротациялау.
- BOLA-тесттер және авторизацияның теріс жағдайлары; орталықтандырылған PDP.
- Лимиттер/квоталар/anti-bot, slow-lorisтен қорғау; IP сүзгілері.
- WAF/гейтвей-қалыпқа келтіру ережелері, инъекцияға қарсы белгілер.
- Write-операциялардың ұқсастығы; replay қорғанысы.
- Webhook қолтаңбалары және allow-list; оқшауланған endpoints.
- KMS/Vault құпиялары; шифрланған сторадждер; аномалиядағы аллергия.
- Дэшбордтар, алерттар, аудит-логтар; істен шыққан playbooks оқиғалар.
- Тұрақты пентест/DAST/SAST, осалдықтар тректері және патчтар.
18) Антипаттерндер (не мүмкін емес)
'X-Forwarded-' дегенге сенім артыңыз.
Еркін 'Content-Type' және 'жұмсақ' JSON схемаларын қабылдау.
Ұзақ өмір сүретін JWT кері қайтарусыз/ротациясыз.
Орталықтандырылған саясаттарсыз кодтағы рөлдер мен бизнес-ережелерді араластыру.
Құпиялары бар логтар/PII; сыртқа егжей-тегжейлі 500-хабарлар.
Лимитсіз және авторизациясыз «уақытша» ашық эндпоинттер.
19) Нұсқалау және депрекейт
Жолдағы/тақырыптағы нұсқалар; қолдау саясаты (мысалы, N-2).
Хабарландырулар: депрекейт мерзімдері, ескі нұсқаларды пайдалану мониторингі, басқарылатын ажырату.
Үйлесімділік: келісімшарттар және клиенттердің/әріптестердің тест-матрицалары.
20) Қауіпсіздікті тестілеу
Схемалардың/саясаттың келісімшарттық тестілері, кірістердің fuzzing, negative auth.
Лимиттері/квоталары бар перфоманс-профильдер, қорғауды сынау (chaos-трафик).
Red-team/bug-bounty: BOLA, SSRF сценарийлері, қолтаңбалар/репликалар, GraphQL-complexity.
TL; DR
1. API каталогы + қатаң схемалар.
2. клиенттер үшін OAuth2/OIDC, mTLS/HMAC ішінде.
3. Әр ресурсқа BOLA-периметр (ABAC/RBAC).
4. Сүзу: жолдарды/тақырыптарды қалыпқа келтіру, лимиттер, WAF-ережелер.
5. Теңсіздік, қолтаңбалар, replay/SSRF қорғанысы.
6. KMS/Vault және құпияларды ротациялау.
7. Бақылау, алерталар, playbooks.