GH GambleHub

S2S-authentication

S2S kimlik doğrulaması, hangi hizmetin/iş akışının istekte bulunduğunu kanıtlar ve sınırlı bir süre için gerekli minimum hakları verir. Kullanıcı akışlarının aksine, burada hiç kimse yoktur - bu nedenle, kimlik bilgilerinin kısa ömrü, egzersiz/kanala kriptografik bağlanma ve net gözlemlenebilirlik kritiktir.

1) Hedefler ve ilkeler

Varsayılan olarak Sıfır Güven: ağa güvenmeyin, yalnızca egzersiz ve kriptografinin sertifikalandırılması.
Kısa ömürlü krediler: Günler/aylar değil, dakikalar.
Bağlam bağlama: kiracı/bölge/lisans/izleyici/kapsamlar.
Merkezi yayın, merkezi olmayan doğrulama: STS/IdP + yerel doğrulama.
Asgari ayrıcalıklar ve açık delegasyon: sadece gerekli kapsamlar ve denetimler.
"Ağrısız" rotasyon: çift anahtarlı/çift sertifikalı pencereler ve otomasyon.

2) Tehdit modeli (minimum)

Uzun ömürlü sırların çalınması (API anahtarları, uzun ömürlü RT).
VPC/küme içinde hizmet sahteciliği.
Parçalanmış segmentasyonda bölgeler arası saldırılar.
Yeniden oynatma/proxy trafiği değiştirme.
Tedarik zinciri/konteyner görüntü değiştirme.
Yapılandırma hataları (geniş güvenlik duvarı/kafes kuralları, herkes için ortak JWKS).

3) Temel modeller S2S

3. 1 mTLS (karşılıklı sertifikalar)

Sen kimsin: Kanal tarafından kanıtlanır.
İç PKI'dan kısa ömürlü (saat-gün) sertifikalar; Serbest bırakma/döndürme, mesh/sidecar veya SPIRE ajanı tarafından yönetilir.
Aynı güven alanındaki "komşular've bağlayıcı belirteçler için iyidir.

3. 2 Hizmet JWT'leri (STS)

Sen kimsin: Bir mesajla kanıtlıyor.
'Aud', 'scp', 'kiracı', 'bölge'ile Kısa Erişim JWT (2-5 dakika).
KMS/HSM, açık anahtarlar işaretler -'çocuk've rotasyon ile JWKS üzerinden.
Yerel olarak kontrol edin (IdP ağ çağrısı yok).

3. 3 SPIFFE/SPIRE (SVID)

İşçilerin evrensel kimliği: 'spiffe ://trust-domain/ns/< ns >/sa/< sa>'.
Otomatik verme/döndürme X.509/JWT-SVID, Istio/Linkerd ile entegrasyon.

3. 4 OAuth 2. 1 İstemci Kimlik Bilgileri/Belirteç Değişimi (RFC 8693)

Makine istemcileri STS'den bir belirteç alır; Kullanıcı'adına "eylemler için - OBO (token exchange).

Birleştirin: Kanal için mTLS, mesaj için JWT, kararlı kimlikler için SPIFFE.

4) Referans mimarisi


[KMS/HSM]       [Policy Store / PDP]

[STS/IdP (issuer)] ── JWKS ──[Gateway/PEP] ─────[Services/PEP]
│
SVID/JWT │         │    │      │
(SPIRE/Istio)│      mTLS/DPoP  │    mTLS/DPoP
│         │    │      │
[Workload/Sidecar]─────────┴───────┴────────────┘

İhraççı (STS/IdP): Kısa hizmet JWT/CVID'yi yayınlar, JWKS'yi yayınlar.
Ağ Geçidi (PEP): ağ terimi, mTLS/JWT'yi doğrular, bağlamı zenginleştirir, PDP ister.
Hizmetler (PEP) - derinlemesine savunma, PDP çözümleri önbelleği.
SPIRE/mesh: mTLS için otomatik sertifikalar ve SVID.

5) JWT servis formatı (örnek)

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" }
}

İmzalı ES256/EdDSA,'çocuk "etkin anahtarı gösterir.
Kanala isteğe bağlı bağlama: flag, hash cert, SVID.

6) İhraç Politikaları (STS) ve Doğrulama

Sorun:
  • Konu SVID/istemci sertifikası/istemci kaydından alınır.
  • Ömrü 2-5 dakika, hiçbirini yenilemeyin - bunun yerine tekrar STS isteyin.
  • Kapsamlar/kitleler, bir müşteri talebinden değil, Politika Mağazası'ndan (GitOps) alınır.
Doğrulama (PEP):

1. mTLS (isteğe bağlı) ve zincir geçerliliğini kontrol edin.

2. JWT imzasını JWKS tarafından kontrol edin ('çocuk'tarafından).

3. 'Exp/nbf/iss/aud', kiracı/bölge/lisansı kontrol edin.

4. İçeriği zenginleştirin ve PDP'ye sorun (RBAC/ABAC/ReBAC).

5. Önbellek PDP çözümü (TTL 30-120 s), olay sakatlığı.

7) Çok kiracılı ve bölgeler (güven alanları)

Ayrı trust-domain'ler: 'spiffe ://eu. Çekirdek ',' spiffe ://latam. Çekirdek.
JWKS/PKI'yi bölgelere göre ayırın; Interregion - sadece güvenilir ağ geçitleri aracılığıyla.
Pullara 'kiracı/bölge/lisans' ekleyin ve kaynak uyumluluğunu kontrol edin.
Kiracılara ve bölgelere göre segment günlükleri/denetimleri.

8) Mesh/sidecar ve no-mesh modu

Istio/Linkerd: Kutudan çıkan mTLS, L4/L7 düzeyde politika uygulama, SPIRE ile entegrasyon.
Mesh olmadan: istemci kütüphanesi + uygulamada karşılıklı TLS; Rotasyonu yönetmek daha zor - aracı aracılığıyla otomatikleştirin.

9) Anahtarlar, JWKS ve Rotasyon

Yalnızca KMS/HSM'de özel anahtarlar; İmza - uzaktan arama/set ile.
Her N günde bir rotasyon; Çift anahtar: eski + yeni kabul edilir, veren önbellekleri ısıttıktan sonra yeni imzalar.
İzleme:'çocuk'tarafından tüketim payı, eski anahtara asılmış müşteriler.

Yapılandırma Örneği (YAML):
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) Bağlantı bağlama (DPoP/mTLS-bound)

mTLS'ye bağlı belirteçler: JWT'ye istemci sertifikası karma ekleyin; resepsiyonda kontrol edin.
DPoP: mTLS içermeyen HTTP istemcileri için - her isteği bir DPoP anahtarıyla imzalayın, AT'ye bir DPoP parmak izi yerleştirin.

11) Hatalar ve iade politikası

Kodları standartlaştırın:
  • '401 INVALID_TOKEN'/'EXPIRED_TOKEN'/'AUD_MISMATCH'.
  • '401 MTLS_REQUIRED'/'MTLS_CERT_INVALID'.
  • '403 INSUFFICIENT_SCOPE'/'POLICY_DENY'.
  • '429 RATE_LIMITED'.

Yanıt, makine tarafından okunabilir 'error _ code've'as _ of' (anahtar/ilke sürümü) içerir.

12) Gözlemlenebilirlik ve denetim

Metrikler:
  • 's2s _ auth _ p95 _ ms', 'verify _ jwt _ p95 _ ms', 'jwks _ skew _ ms',
  • 'invalid _ token _ rate', 'aud _ mismatch _ rate', 'yetersiz _ scope _ rate',
  • 'Çocuk'tarafından tüketim, mTLS'ye bağlı isteklerin oranı.
Günlükler/yollar:
  • 'subject', 'aud', 'tenant', 'region', 'scp', 'kid', 'sid/svid', 'decision', 'policy _ version', 'trace _ id'.
Denetim (değişmez):
  • Token ihracı, anahtar rotasyonu, politika değişiklikleri, reddedilen talepler.

13) Performans

JWT doğrulaması - yerel olarak, arka plan güncellemesi ile JWKS'yi (TTL 30-60 s) önbelleğe alın.
X.509 zincirleri - CA sabitleme ve OCSP/CRL önbellek.
Pahalı doğrulama I/O'sunu ağ geçidine/sidecara getirin.
Prefetch belirteçleri/sertifikaları kullanın (son kullanma tarihinden 10-20 saniye önce).

14) Test etme

Sözleşme/interop: Farklı NP/kütüphaneler, saat eğriliği ± 300 s.
Negatif: süresi dolmuş/sahte belirteç, yanlış 'aud', yanlış bölge/kiracı, kırık sertifika zinciri.
Kaos: ani rotasyon'çocuk ', JWKS'nin olmaması, toplu olarak son kullanma, mTLS kırılması.
Yük: STS'de en yüksek sorun, ağ geçidinde ani artışı doğrulayın.
E2E: mTLS-only, JWT-only, kombine mod, Token Exchange (OBO).

15) Playbook'lar (runbook'lar)

1. İmza anahtarı uzlaşma

Derhal'çocuk'u iptal et, yeni, kısaltılmış TTL jetonlarının serbest bırakılması, denetim, "asılı" müşterileri ara, eski'çocuk "için zorla inkar et.

2. Toplu 'GEÇERSIZ _ TOKEN'

JWKS önbelleğini, saat yanlış hizalamasını, belirteç kökenlerini (TTL çok kısa) kontrol edin, geçici olarak eğrilme toleransını genişletin, JWKS'yi ısıtın.

3. mTLS-reddetmeleri

CA zincirini, SVID tarihlerini, ana bilgisayar saatini kontrol edin; SPIRE/Istio üzerinden acil durum yeniden yayını, yalnızca bölge içindeki geri dönüş yollarını etkinleştirin.

4. 'AUD _ MISMATCH' büyümesi

Kitle politikası sürüklenmesi: STS-politikasını gerçek çağrılarla karşılaştırın, geçici olarak istenen 'aud' ekleyin, çağrı mimarisi ayarlarını zamanlayın.

5. STS Kullanılamıyor/Yavaş

Önceden verilen belirteçlerin (grace) TTL'sini artırın, prefetch/refresh-early, scale-out STS'yi etkinleştirin.

16) Tipik hatalar

Env/kodda uzun ömürlü API anahtarları/sırları.
Genel JWKS/PKI'tüm bölgeler ve tüm zamanlar için ".
Bağlama eksikliği (mTLS/DPoP) - belirtecin alınması kolaydır.
Varsayılan olarak Broad 'aud ='ve "admin" kapsamları.
Çift anahtarlı periyot olmadan dönme - kütle 401.
Belirteçleri yalnızca ağ geçidinde kontrol etme (derinlemesine savunma yok).
"Aptal" hatası ('error _ code've' reason 'yok) - hata ayıklamak ve ekipleri eğitmek zordur.

17) Mini Yapılandırma Şablonları

PEP (ağ geçidi) - kurallar:
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 Politikası (parça):
yaml subjects:
- id: "svc. catalog"
spiffe: "spiffe://core/ns/prod/sa/catalog"
audiences: ["svc. search","svc. wallet"]
scopes: ["catalog:read:"]
ttl: "5m"

18) Satış öncesi kontrol listesi

  • Kısa servis JWT (≤5 dakika), yerel doğrulama, JWKS önbellek.
  • mTLS (veya DPoP) etkin; Öncelik - mTLS'ye bağlı belirteçler.
  • SPIFFE/SPIRE veya sertifikaların otomatik olarak verilmesi/döndürülmesi için eşdeğer.
  • Kitle/kapsam politikaları ile STS; Yalnızca güvenilir kimlikle verilir.
  • Güven alanlarının ve JWKS'nin bölgelere göre ayrılması; kiracı/bölge/ruhsat damgaları kontrol edilir.
  • PDP/PEP entegre, çözüm önbelleği + olaya göre engellilik.
  • Çift anahtarlı pencereler, tüketim'çocuk 'izleme, geçersiz/aud uyumsuzluk uyarıları.
  • Tam günlükler/denetim S2S, performans/hata metrikleri etkin.
  • Anahtar uzlaşma oyun kitapları, STS düşüşü, mTLS hatası.
  • contract/negative/chaos/load/E2E test paketi geçti.

Sonuç

S2S kimlik doğrulaması, merkezi bir STS tarafından yönetilen ve yerel olarak doğrulanan kanal güveni (mTLS), ileti güveni (kısa JWT) ve kalıcı çalışan kimliğinin (SPIFFE) bir birleşimidir. Güven alanı ayrımı, titiz kitle/kapsamlar, otomatik rotasyon ve gözlemlenebilirlik ekleyin - ve platform ve coğrafyası ile birlikte güvenilir, açıklanabilir ve ölçeklenebilir bir taslağa sahip olursunuz.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.