S2S-tassyklama
S2S-autentifikasiýa haýsy hyzmatyň/workloadyň haýyşy edýändigini subut edýär we oňa çäkli wagt üçin iň az zerur hukuklary berýär. Ulanyjy akymlaryndan tapawutlylykda bu ýerde adam ýok - şonuň üçin hasap maglumatlarynyň gysga ömri, workload/kanal bilen kriptografiki baglanyşyk we anyk gözegçilik etmek möhümdir.
1) Maksatlar we ýörelgeler
"Zero Trust": tora ynanmazlyk, diňe workload we kriptografiýany tassyklamak.
Gysga ömürli kredenşly: günler/aýlar däl, minutlar.
Kontekste baglanyşyk: tenant/region/licence/audience/scopes.
Merkezleşdirilen bermek, merkezleşdirilmedik barlag: STS/IdP + lokal tassyklama.
Iň az artykmaçlyklar we aç-açan ygtyýarlyk bermek: diňe zerur satyn alyşlar we audit.
"Agyrysyz" aýlanyş: dual-key/dual-cert penjireleri we awtomatlaşdyryş.
2) Howplaryň nusgasy (iň az)
Dowamly syrlary ogurlamak (API-keys, long-lived RT).
VPC/klaster içindäki hyzmaty çalyşmak.
Döwülen segmentasiýa wagtynda sebitara hüjümler.
Traffigi proxy üçin replay/çalyşmak.
Supply-chain/konteýner görnüşini çalyşmak.
Konfigurasiýa ýalňyşlyklary (giň firewall/mesh düzgünleri, JWKS hemmeler üçin umumy).
3) Esasy nusgalar S2S
3. 1 mTLS (özara şahadatnamalar)
Siz kimsiňiz: kanaly bilen subut edýär.
Içerki PKI-den gysga ömürli (sagat-gün) şahadatnamalar; mesh/sidecar ýa-da SPIRE-agent tarapyndan dolandyrylýar.
Bir trust-domen we binding tokenleri üçin "goňşular" üçin amatly.
3. 2 Hyzmat JWT (STS)
Siz kimsiňiz: habary subut edýär.
Gysga Access JWT (2-5 minut) c 'aud', 'scp', 'tenant', 'region'.
KMS/HSM, açyk açarlar - JWKS arkaly 'kid' we rotasiýa bilen gol çekýär.
Lokal barlamak (IdP çagyryşsyz).
3. 3 SPIFFE/SPIRE (SVID)
Workloadlaryň ähliumumy şahsyýeti: 'spiffe ://trust-domain/ns/< ns >/sa/< sa>'.
Awtomatiki issuance/rotation X.509/JWT-SVID, Istio/Linkerd bilen integrasiýa.
3. 4 OAuth 2. 1 Client Credentials / Token Exchange (RFC 8693)
Maşyn müşderileri STS-den belgi alýarlar; ulanyjynyň "adyndan" hereketler üçin - OBO (token exchange).
Birleşdirýäris: Kanal üçin mTLS, Habar üçin JWT, Durnukly şahsyýetler üçin SPIFFE.
4) Salgylanma arhitekturasy
[KMS/HSM] [Policy Store / PDP]
[STS/IdP (issuer)] ── JWKS ──[Gateway/PEP] ─────[Services/PEP]
│
SVID/JWT │ │ │ │
(SPIRE/Istio)│ mTLS/DPoP │ mTLS/DPoP
│ │ │ │
[Workload/Sidecar]─────────┴───────┴────────────┘
Issuer (STS/IdP): JWT/CVID gysga hyzmatlaryny çykarýar, JWKS neşir edýär.
Gateway (PEP): tor termini, mTLS/JWT tassyklaýar, kontekstde baýlaşdyrýar, PDP soraýar.
Services (PEP): Gaýtadan barlamak (defense in depth), PDP çözgütleriniň keşi.
SPIRE/mesh: mTLS üçin awto-şahadatnamalar we SVID.
5) JWT hyzmat formaty (mysal)
json
{
"iss": "https://sts. core",
"sub": "svc. catalog, "//service identity
"aud": ["svc. search"] ,//target service/domain
"exp": 1730390100, "iat": 1730389800,
"tenant": "brand_eu",
"region": "EE",
"scp": ["catalog:read:public","catalog:read:tenant"],
"mtls": { "bound": true, "spiffe": "spiffe://core/ns/prod/sa/catalog" }
}
ES256/EdDSA gol çekdi, 'kid' açary görkezýär.
Kanala goşmaça binding: baýdak, hash cert, SVID.
6) Bermek syýasaty (STS) we tassyklamak
Bermek:- Subject SVID/müşderi şahadatnamasyndan/müşderiniň registrinden alynýar.
- Ömri 2-5 minut, refresh ýok - munuň ýerine STS-den täzeden soraň.
- Satyn almak/tomaşaçylar müşderiniň haýyşyndan däl-de, Policy Store-dan (GitOps) alynýar.
1. mTLS (goşmaça) we zynjyryň dogrulygyny barlaň.
2. JWKS boýunça JWT goluny barlaň ('kid').
3. Barlaň 'exp/nbf/iss/aud', tenant/region/licence.
4. Mazmuny baýlaşdyryň we PDP (RBAC/ABAC/ReBAC) soraň.
5. PDP (TTL 30-120 c) çözgüdini kesmek, wakalar boýunça maýyplyk.
7) Köp tenant we sebitler (trust domains)
Trust-domain's bölüň: 'spiffe ://eu. core`, `spiffe://latam. core`.
Sebitler boýunça aýratyn JWKS/PKI; sebitara - diňe ynanylan şlýuzlar arkaly.
'tenant/region/licence' belliklerine goşuň we çeşmäniň laýyklygyny barlaň.
Logy/audit tenantlar we sebitler boýunça bölünýär.
8) Mesh/sidecar we mesh rejimi
Istio/Linkerd: mTLS "gutudan", L4/L7 derejesinde policy-enforcement, SPIRE bilen integrasiýa.
Mesh bolmasa: kitaphana-müşderi + programmada mutual TLS; aýlanmagy dolandyrmak has kyn - agentiň üsti bilen awtomatlaşdyryň.
9) Açarlar, JWKS we aýlanyş
Şahsy açarlar diňe KMS/HSM-de; goly - uzakdaky jaň/enjam.
Her N günde rotation; dual-key: köne + täze kabul edilýär, issuer gyzdyrylandan soň täzesine gol çekýär.
Gözegçilik: "kid" boýunça sarp ediş paýy, köne açarda "asylan" müşderiler.
yaml issuer:
jwks:
alg: ES256 rotation_days: 30 publish_cache_ttl: 60s sts:
access_ttl: 5m audience_policies:
- subject: "svc. catalog"
allow: ["svc. search","svc. wallet"]
scopes: ["catalog:read:"]
tenancy:
claims: ["tenant","region","licence"]
jwks_per_region: true
10) Kanala baglanyşyk (DPoP/mTLS-bound)
mTLS-bound tokens: JWT-e hash müşderi şahadatnamasyny goşmak; kabul edişlikde barlamak.
DPoP: mTLS-siz HTTP-müşderiler üçin - her bir haýyşa DPoP açary bilen gol çekiň, AT-a DPoP thumbprint goýuň.
11) Ýalňyşlyklar we yzyna gaýtarmak syýasaty
Kodlary standartlaşdyryň:- `401 INVALID_TOKEN`/`EXPIRED_TOKEN`/`AUD_MISMATCH`.
- `401 MTLS_REQUIRED`/`MTLS_CERT_INVALID`.
- `403 INSUFFICIENT_SCOPE`/`POLICY_DENY`.
- `429 RATE_LIMITED`.
Jogapda machine-readable 'error _ code' we 'as _ of' (açar/syýasat görnüşi) bar.
12) Gözegçilik we audit
Metrikler:- `s2s_auth_p95_ms`, `verify_jwt_p95_ms`, `jwks_skew_ms`,
- `invalid_token_rate`, `aud_mismatch_rate`, `insufficient_scope_rate`,
- kid boýunça sarp etmek, mTLS-bound soraglarynyň paýy.
- `subject`, `aud`, `tenant`, `region`, `scp`, `kid`, `sid/svid`, `decision`, `policy_version`, `trace_id`.
- Bellikleri bermek, açarlary aýlamak, syýasatlary üýtgetmek, ret edilen haýyşlar.
13) Öndürijilik
JWT-ni barlamak - ýerli, JWKS-i fon täzelenmesi bilen kesiň (TTL 30-60 s).
X.509 zynjyrlary - CA pinning we OCSP/CRL kesiş.
Gymmat bahaly I/O tassyklamasyny gateway/sidecar-a geçiriň.
Prefetch belliklerini/şahadatnamalaryny ulanyň (möhleti 10-20 s öň).
14) Synag
Contract/interop: Dürli YAP/kitaphanalar, clock skew ± 300 s.
Negative: möhleti geçen/galp belgi, nädogry 'aud', nädogry sebit/tenant, döwülen cert-chain.
Chaos: 'kid' duýdansyz aýlanmagy, JWKS-iň elýeterliligi, köpçülikleýin ekspirasiýa, mTLS-iň döwülmegi.
Ýüklemek: STS-de berişiň iň ýokary derejesi, gateway-da verify-iň ýokarlanmagy.
E2E: mTLS-only, JWT-only, kombinirlenen re modeim, Token Exchange (OBO).
15) Oýun kitaplary (runbooks)
1. Gol açaryny bozmak
Derrew revoke 'kid', täze, gysgaldylan TTL belliklerini çykarmak, audit, "asylan" müşderileri gözlemek, köne 'kid' üçin mejbury deny.
2. Köpçülikleýin 'INVALID _ TOKEN'
JWKS-kesşini, sagatlaryň bölünişigini, tokenleriň gelip çykyşyny (TTL gaty gysga) barlaň, skew elýeterliligini wagtlaýyn giňeldiň, JWKS-i gyzdyryň.
3. mTLS şowsuzlyklary
CA zynjyryny, SVID möhletini, hostyň wagtyny barlamak; SPIRE/Istio arkaly emergency-gaýtadan çykarmak, fallback-marşrutlary diňe sebitiň içinde goşmak.
4. 'AUD _ MISMATCH'
Drift syýasatçy audience: STS-policy hakyky jaňlar bilen deňeşdiriň, wagtlaýyn 'aud' goşuň, çagyryş arhitekturasyny düzetmegi meýilleşdiriň.
5. STS elýeterli däl/haýal
Eýýäm berlen tokenleriň TTL-ini köpeltmek (grace), prefetch/refresh-öň, scale-out STS-i goşmak.
16) Adaty ýalňyşlyklar
Uzak ömürli API açarlary/env/kodda syrlar.
JWKS/PKI "ähli sebitler we döwürler üçin".
Binding ýoklugy (mTLS/DPoP) → belgi aňsatlyk bilen aýrylýar.
Giň 'aud =' we 'admin' scopes.
Dual-key döwri bolmazdan aýlanma → köpçülikleýin 401.
Bellikleri diňe gateway-da barlamak (defense in depth ýok).
"Dilsiz" ret etmek (no 'error _ code' ve 'reason') - jedelleşmek we toparlary taýýarlamak kyn.
17) Konfigurasiýanyň kiçi şablonlary
PEP (gateway) - düzgünler:yaml auth:
require_mtls: true jwks:
url: https://sts. core/.well-known/jwks. json cache_ttl: 60s claims:
required: ["iss","sub","aud","exp","tenant","region"]
tenant_in_header: "x-tenant"
pdp:
endpoint: "opa:8181/v1/data/policy/allow"
decision_cache_ttl: 60s
STS syýasaty (bölek):
yaml subjects:
- id: "svc. catalog"
spiffe: "spiffe://core/ns/prod/sa/catalog"
audiences: ["svc. search","svc. wallet"]
scopes: ["catalog:read:"]
ttl: "5m"
18) Azyk önüminden öň çek-sanawy
- Gysga hyzmat JWT (5 minutdan ≤), lokal tassyklama, JWKS keşi.
- mTLS (ýa-da DPoP) goşuldy; ileri tutulýan - mTLS-bound tokens.
- SPIFFE/SPIRE ýa-da şahadatnamalaryň awto-berilmegi/aýlanmagy üçin ekwiwalent.
- STS audience/scope syýasatlary bilen; diňe ynanylan şahsyýet boýunça bermek.
- Sebitler boýunça trust-domains we JWKS bölünişi; tenant/region/licence bellikleri barlanýar.
- PDP/PEP integrirlenen, çözgütleriň nagt puly + wakalar boýunça maýyplyk.
- Dual-key penjireleri, 'kid' sarp ediş gözegçiligi, invalid/aud mismatch üçin alertler.
- Doly giriş/audit S2S, öndürijilik/ýalňyşlyk metrikleri bar.
- Açaryň barlagy, STS ýykylmagy, mTLS şowsuzlygy.
- contract/negative/chaos/load/E2E synaglaryň toplumy geçdi.
Netije
S2S-autentifikasiýa, merkezleşdirilen STS tarapyndan dolandyrylýan we ýerli barlanylýan ynam kanalynyň (mTLS), ynam habarynyň (gysga JWT) we workloadyň durnukly şahsyýetiniň (SPIFFE) utgaşmasydyr. Trust-domen bölünişigini, berk audience/skopes, awtomatiki aýlanyş we gözegçilik - we platforma we onuň geografiýasy bilen bilelikde ygtybarly, düşündirip boljak we ulaldylýan kontury alyň.