GH GambleHub

Autenticação S2S

A autenticação S2S prova que tipo de serviço/worcload faz a solicitação e dá-lhe os direitos mínimos necessários por um tempo limitado. Ao contrário dos fluxos do usuário, não há pessoas aqui - por isso, a vida curta das credenciais, a ligação criptográfica ao voorcload/canal e a observabilidade clara são críticas.

1) Objetivos e princípios

Zero Trust padrão: Desconfiar da rede, apenas a avaliação de worcload e criptografia.
Empréstimos curtos, minutos, não dias/meses.
Referência ao contexto: tenant/region/licence/audiência/scopes.
Emissão centralizada, verificação descentralizada: STS/IdP + verificação local.
Os privilégios mínimos e a delegação explícita são apenas os escopos e auditorias desejados.
Rotação «sem dor»: dual-key/dual-cert janela e automação.

2) Modelo de ameaça (mínimo)

Roubo de segredos duráveis (API-keys, long-lived RT).
Troca de serviço dentro do VPC/cluster.
Ataques interregionais com segmentação quebrada.
Replay/troca de tráfego para proxy.
Suply-chain/troca de imagem do contêiner.
Erros de configuração (amplas regras firewall/mesh, JWKS compartilhado para todos).

3) Pattern S2S básico

3. 1 mTLS (certificados mútuos)

Quem você é, prova o canal.
Certificados de curta duração (hora/dia) do PKI interno; O lançamento/rotação controla mesh/sidecar ou agente SPIRE.
Bom para «vizinhos» em um domínio trust e para binding tokens.

3. 2 JWT de serviço (STS)

Quem você é, prova com uma mensagem.
O Acess JWT curto (2-5 min) com 'aud', 'scp', 'tenant', 'region'.
Assina KMS/HSM, chaves públicas com JWKS com 'kid' e rotação.
Verificação local (sem chamada de rede IdP).

3. 3 SPIFFE/SPIRE (SVID)

A identidade universal dos worcloades é 'spiffe ://trust-domain/ns/< ns >/sa/< sa>'.
Issuance automático/rotation X.509/JWT-SVID, integração com Istio/Linkerd.

3. 4 OAuth 2. 1 Client Credentials / Token Exchange (RFC 8693)

Os clientes de máquinas recebem o token do STS; para ações «em nome» do usuário - OBO (token exchange).

Combinamos mTLS para canal, JWT para mensagem, SPIFFE para identidades sustentáveis.

4) Arquitetura de arbitragem


[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): lança JWT/CVID de serviço curto e publica JWKS.
Gateway (PEP): termo de rede, valida mTLS/JWT, enriquece contexto, pede PDP.
Serviços (PEP): reexaminação (defense in depth), dinheiro de soluções PDP.
SPIRE/mesh: certificados automáticos e SVID para mTLS.

5) Formato de JWT de serviço (exemplo)

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

Assinado por ES256/EdDSA, 'kid' indica a chave ativa.
Binding opcional para o canal: bandeira, hash cert, SVID.

6) Políticas de emissão (STS) e verificação

Emissão:
  • O subject é extraído de SVID/certificado de cliente/registro do cliente.
  • Tempo de vida de 2-5 min, refresh não - em vez disso, pedir novamente STS.
  • Os escopos/plateia são obtidos da Policy Store (GitOps) e não do pedido do cliente.
Verificação (PEP):

1. Verificar mTLS (opcional) e validade da cadeia.

2. Verificar a assinatura JWT em JWKS ('kid').

3. Cruze 'exp/nbf/iss/aud', tenant/region/licence.

4. Enriquecer o contexto e perguntar PDP (RBAC/ABAC/ReBAC).

5. Armazenar solução PDP (TTL 30-120 c) com deficiência de evento.

7) Multi-tenante e regiões (trust domins)

Divida o trust-domain's: 'spiffe ://eu. core`, `spiffe://latam. core`.
JWKS/PKI separados por região; A interregião é apenas através de passarelas de confiança.
Inclua a marca 'tenant/region/licence' e verifique se o recurso está em conformidade.
O logi/auditoria segmenta por tenentes e regiões.

8) Mesh/sidecar e modo sem-mesh

Istio/Linkerd: mTLS «de caixa», policy-enforcement em L4/L7, integração com SPIRE.
Sem mesh: biblioteca-cliente + mutual TLS no aplicativo; mais difícil de gerenciar - automatize através do agente.

9) Chaves, JWKS e rotação

Chaves privadas apenas em KMS/HSM; a assinatura é uma chamada remota/máquina.
Rotation a cada N dias; dual-key: antigo + novo aceito, issuer assina novo após aquecimento de cajas.
Monitoramento: proporção de consumo por 'kid', clientes dependentes na chave antiga.

Exemplo de configuração (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) Vinculação ao canal (DPoP/mTLS-bound)

mTLS-bound tocens: no JWT, adicionar um certificado de cliente hash; na recepção para fazer a verificação.
DPoP: para clientes HTTP sem mTLS - assinar cada solicitação de chave DPoP, no AT colocar thumbprint DPoP.

11) Erros e políticas de retorno

Normalize os códigos:
  • `401 INVALID_TOKEN`/`EXPIRED_TOKEN`/`AUD_MISMATCH`.
  • `401 MTLS_REQUIRED`/`MTLS_CERT_INVALID`.
  • `403 INSUFFICIENT_SCOPE`/`POLICY_DENY`.
  • `429 RATE_LIMITED`.

A resposta contém machine-readable 'error _ código' e 'as _ of' (versão da chave/política).

12) Observação e auditoria

Métricas:
  • `s2s_auth_p95_ms`, `verify_jwt_p95_ms`, `jwks_skew_ms`,
  • `invalid_token_rate`, `aud_mismatch_rate`, `insufficient_scope_rate`,
  • consumo por 'kid', proporção de solicitações mTLS-bound.
Logs/trailers:
  • `subject`, `aud`, `tenant`, `region`, `scp`, `kid`, `sid/svid`, `decision`, `policy_version`, `trace_id`.
Auditoria (inalterável):
  • Emissão de tokens, rotação de chaves, alterações de políticas, pedidos rejeitados.

13) Desempenho

A verificação do JWT é local, JWKS cate (TTL 30-60 s) com atualização de fundo.
Cadeias X.509 - pinning CA e dinheiro OCSP/CRL.
Leve o validador caro I/O para gateway/sidecar.
Use prefetch tokens/certificados (10 a 20 c antes de expirar).

14) Testes

Contract/interop: Diferentes IP/bibliotecas, clock skew £300 s.
Negative: token vencido/falso, errado 'aud', região/tenante errado, cert-chain quebrado.
Chaos: rotação repentina 'kid', indisponibilidade JWKS, exportação em massa, penhasco mTLS.
Load: pico de emissão para STS, sobe verify para gateway.
E2E: mTLS-only, JWT-only, modo combinado, Token Exchange (OBO).

15) Playbooks (runbooks)

1. Comprometer chave de assinatura

Revoke 'kid' imediato, lançamento novo, TTL TTen reduzido, auditoria, pesquisa de clientes «dependentes», deny forçado para o antigo 'kid'.

2. Massa 'INVALID _ TOKYO'

Verificar JWKS kesh, Rashinhron relógio, origens de tokens (TTL é muito curto), expandir temporariamente a tolerância skew, aquecer JWKS.

3. falhas mTLS

Verificar a cadeia CA, o prazo SVID, o tempo do hóspede; emergency-transfer através do SPIRE/Istio, incluir rotas fallback apenas dentro da região.

4. Crescimento de 'AUD _ MISMATCH'

Política de audiência à deriva: comparar STS-policy com chamadas reais, adicionar temporariamente o 'aud' desejado, programar a correção da arquitetura de chamadas.

5. O STS não está disponível/lento

Aumentar TTL (grace) já emitidos, ativar prefetch/refresh-mais cedo, scale-out STS.

16) Erros típicos

Chaves API/segredos de longa duração em end/código.
JWKS/PKI compartilhado «para todas as regiões e todos os tempos».
A falta de binding (mTLS/DPoP) → é fácil de afastar.
Amplo 'aud =' e 'Admin' scopes padrão.
Rotação sem período dual-key → 401 em massa.
Verificar os tokens apenas em gateway (sem defense in depth).
Não «mudo» (sem «error _ código» e «reason») - É difícil debelar e treinar comandos.

17) Mini-modelos de configuração

PEP (gateway) - regras:
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 Policy (fatia):
yaml subjects:
- id: "svc. catalog"
spiffe: "spiffe://core/ns/prod/sa/catalog"
audiences: ["svc. search","svc. wallet"]
scopes: ["catalog:read:"]
ttl: "5m"

18) Folha de cheque antes de vender

  • JWT de serviço curto (≤5 min), verificação local, dinheiro JWKS.
  • mTLS (ou DPoP) está incluído; prioridade - mTLS-bound tocens.
  • SPIFFE/SPIRE ou o equivalente para a emissão/rotação automática de certificados.
  • STS com políticas de audiência/scope; a extradição é apenas por identidade de confiança.
  • Divisão de trust-domins e JWKS por região; as marcas de tenant/region/licence são verificadas.
  • PDP/PEP estão integrados, o dinheiro de soluções + deficiência por evento.
  • Janela dual-key, monitoramento do consumo 'kid', alertas para invalid/aud mismatch.
  • Logs completos/auditoria S2S, incluídas métricas de desempenho/erro.
  • Playbooks de comprometimento de chave, queda de STS, falha de mTLS.
  • O conjunto de testes contracto/negativo/chaos/load/E2E foi concluído.

Conclusão

A autenticação S2S é uma combinação de canal de confiança (mTLS), mensagem de confiança (JWT curtos) e identidade de voorcload sustentável (SPIFE), controlada por STS centralizado e verificável localmente. Adicione a divisão de domínios trust, audiências rigorosas/scopes, rotação automática e observabilidade - e obtenha um circuito que seja confiável, explicado e escalado com a plataforma e sua geografia.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.