GH GambleHub

S2S-authentication

S2S認証は、どのサービス/ワークフローが要求を行うかを証明し、限られた時間の最小限の必要な権利を与えます。ユーザーストリームとは異なり、ここには人はいません。したがって、資格情報の短い寿命、ワークアウト/チャネルへの暗号化バインディング、明確なオブザビリティが重要です。

1)目標と原則

デフォルトではZero Trust:ネットワークを信頼しないでください。ワークアウトと暗号の認証のみです。
短命クレジット:分、ない日/月。
コンテキストバインディング:テナント/リージョン/ライセンス/オーディエンス/スコープ。
集中発行、分散検証:STS/IdP+ローカル検証。
最小の権限と明示的な委任:必要なスコープと監査のみ。
「痛みのない」回転:デュアルキー/デュアルカートウィンドウとオートメーション。

2)脅威モデル(最小)

長寿の秘密の盗難(APIキー、長寿RT)。
VPC/クラスタ内のサービススプーフィング。
壊れたセグメンテーションの地域間攻撃。
リプレイ/プロキシトラフィック置換。
サプライチェーン/コンテナイメージ置換。
構成エラー(広いファイアウォール/メッシュルール、すべての一般的なJWKS)。

3)基本的なパターンS2S

3.1 mTLS(相互証明書)

あなたは誰ですか:チャンネルによって証明されます。
内部PKIからの短命の証明書(時間日);リリース/回転は、メッシュ/サイドカーまたはSPIREエージェントによって管理されます。
同じトラストドメインの"neighbors'とトークンの結合に適しています。

3.2サービスJWT (STS)

あなたは誰ですか:メッセージで証明します。
ショートアクセスJWT (2-5分)"aud'、" scp"、"テナント"、"region"。
サインKMS/HSM、公開鍵-JWKS経由で「子供」と回転。
ローカルでチェックします(IdPネットワークコールはありません)。

3.3 SPIFFE/SPIRE (SVID)

ワーカーのユニバーサル・アイデンティティ:'spiffe ://trust-domain/ns/< ns >/sa/< sa>'。
自動発行/回転X.509/JWT-SVID、 Istio/Linkerdとの統合。

3.4 OAuth 2。1クライアント資格情報/トークン交換(RFC 8693)

マシンクライアントはSTSからトークンを受け取ります。ユーザーのための「代わりに」アクション-OBO(トークン交換)。

結合:チャネルのmTLS、メッセージのJWT、安定したアイデンティティのSPIFFE。

4)リファレンスアーキテクチャ


[KMS/HSM]       [Policy Store / PDP]

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

発行者(STS/IdP):ショートサービスJWT/CVIDをリリースし、JWKSを発行します。
ゲートウェイ(PEP):ネットワーク用語、mTLS/JWTの検証、コンテキストの強化、PDPの要求。
サービス(PEP)-詳細な防衛、PDPソリューションキャッシュ。
SPIRE/mesh: mTLSの自動証明書とSVID。

5) JWTサービス形式(例)

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、 'kid'はアクティブなキーを示します。
チャネルへの任意結合:フラグ、ハッシュ証明書、SVID。

6)発行方針(STS)と検証

問題:
  • 件名はSVID/クライアント証明書/クライアントレジスタから取得されます。
  • 寿命2-5分、リフレッシュなし-代わりに再びSTSを要求します。
  • スコープ/オーディエンスは、顧客からの要求ではなく、ポリシー・ストア(GitOps)から取得されます。
検証(PEP):

1.mTLS(オプション)とチェーンの有効性を確認します。

2.JWTの署名を確認してください('kid')。

3.'exp/nbf/iss/aud'、テナント/リージョン/ライセンスをチェックします。

4.文脈を豊かにし、PDP (RBAC/ABAC/ReBAC)に尋ねる。

5.キャッシュPDPソリューション(TTL 30-120 s)、イベント障害。

7)マルチテナントと地域(信託ドメイン)

別のtrust-domains's: 'spiffe ://eu。core'、'spiffe ://latam。「コア」

地域別にJWKS/PKIを分離する。interregion-信頼できるゲートウェイを介してのみ。
スタンプに「テナント/リージョン/ライセンス」を含め、リソースのコンプライアンスを確認します。
テナントと地域によるセグメントログ/監査。

8)網/サイドカーおよび網モード無し

Istio/Linkerd: mTLS out of the box、 policy-enforcement at the L4/L7 level、 integration with SPIRE。
メッシュなし:クライアントライブラリ+アプリケーション内の相互TLS;回転を管理することはより困難-代理店によって自動化して下さい。

9)キー、JWKSおよび回転

KMS/HSMのプライベートキーのみ。signature-リモートコール/セットによる。
回転あらゆるN日;デュアルキー:古い+新しいが受け入れられ、発行者はキャッシュをウォームアップした後に新しい署名します。
監視:'子供'による消費の共有は、古いキーの顧客を掛けました。

設定例(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)リンク結合(DPoP/mTLS結合)

mTLS-boundトークン:クライアント証明書ハッシュをJWTに追加します。受付で確認してください。
DPoP: mTLSのないHTTPクライアントの場合-DPoPキーで各リクエストに署名し、ATにDPoPサムプリントを配置します。

11)エラーと返品ポリシー

コードの標準化:
  • '401 INVALID_TOKEN'/'EXPIRED_TOKEN'/'AUD_MISMATCH'。
  • '401 MTLS_REQUIRED'/'MTLS_CERT_INVALID'。
  • '403 INSUFFICIENT_SCOPE'/'POLICY_DENY'。
  • '429 RATE_LIMITED'。

レスポンスには、機械読み取り可能な'error_code'と'as_of' (key/policy version)が含まれています。

12)可視性と監査

メトリクス:
  • 's2s_auth_p95_ms'、' verify_jwt_p95_ms'、 'jwks_skew_ms'、
  • 'invalid_token_rate'、 'aud_mismatch_rate'、 'insufficient_scope_rate'、
  • 'kid'による消費、mTLSバインド要求の割合。
ログ/トレイル:
  • 'subject'、 'aud'、 'tenant'、 'region'、 'scp'、 'kid'、 'sid/svid'、 'decision'、 'policy_version'、 'trace_id'。
監査(不変):
  • トークン発行、キーローテーション、ポリシー変更、拒否リクエスト。

13)パフォーマンス

JWT検証-ローカルでは、バックグラウンドアップデートでJWKS (TTL 30-60 s)をキャッシュします。
X。509チェーン-CAピン留めとOCSP/CRLキャッシュ。
ゲートウェイ/サイドカーに高価な検証I/Oをもたらします。
プリフェッチトークン/証明書(有効期限の10〜20秒前)を使用します。

14)テスト

Contract/Interop:異なるNP/ライブラリ、クロックスキュー± 300秒。
負:期限切れ/偽トークン、間違った'aud'、間違った領域/テナント、壊れたcert-chain。
カオス:突然の回転「キッド」、JWKSの利用不可、満了、mTLS破損。
ロード:STSのピーク問題、ゲートウェイのスパイクを確認します。
E2E: mTLSのみ、JWTのみ、結合モード、トークン交換(OBO)。

15)プレイブック(ランブック)

1.シグネチャーキーの妥協

すぐに「子供」を取り消し、新しい、短縮されたTTLトークンのリリース、監査、「ハング」クライアントの検索、古い「子供」の拒否を強制。

2.マス'INVALID_TOKEN'

JWKSキャッシュ、クロックのずれ、トークンの起源(TTLが短すぎる)をチェックし、一時的にスキュー公差を拡大し、JWKSをウォームアップします。

3.mTLS拒否

CAチェーン、SVID日付、ホスト時間を確認します。SPIRE/Istio経由で緊急再発行し、地域内でのみフォールバックルートを有効にします。

4.'AUD_MISMATCH'の生成

オーディエンスポリシーのドリフト:STSポリシーと実際のコールを比較し、一時的に目的の"aud'を追加し、コールアーキテクチャの調整をスケジュールします。

5.STS利用不可/遅い

すでに発行されているトークン(grace)のTTLを増やし、prefetch/refresh-areast、 scale-out STSを有効にします。

16)典型的なエラー

env/codeの長寿命のAPIキー/シークレット。
一般的なJWKS/PKI「すべての地域と常に」。
結合の欠如(mTLS/DPoP)→トークンは簡単に取り除くことができます。
デフォルトでは'aud='と「admin」スコープが広い。
デュアルキー周期のない回転→質量401。
ゲートウェイでのみトークンをチェックします(詳細な防御はありません)。
「ダム」失敗('error_code'と'reason'はありません)-チームのデバッグとトレーニングは困難です。

17)ミニコンフィギュレーションテンプレート

PEP(ゲートウェイ)-ルール:
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ポリシー(フラグメント):
yaml subjects:
- id: "svc. catalog"
spiffe: "spiffe://core/ns/prod/sa/catalog"
audiences: ["svc. search","svc. wallet"]
scopes: ["catalog:read:"]
ttl: "5m"

18)売り上げ前のチェックリスト

  • ショートサービスJWT (≤ 5分)、ローカル検証、JWKSキャッシュ。
  • mTLS(またはDPoP)有効;priority-mTLSバインドトークン。
  • SPIFFE/SPIREまたは証明書の自動発行/回転のための同等。
  • オーディエンス/スコープポリシーを持つSTS;信頼されたアイデンティティによる発行のみ。
  • 地域別のトラストドメインとJWKSの分離;テナント/リージョン/ライセンススタンプがチェックされています。
  • PDP/PEP統合、ソリューションキャッシュ+イベントによる障害。
  • デュアルキーウィンドウ、監視消費'kid'、 無効/audミスマッチへのアラート。
  • 完全なログ/監査S2S、パフォーマンス/エラーメトリックが有効になっています。
  • 主な妥協プレイブック、STSドロップ、mTLS障害。
  • テストスイートcontract/negative/chaos/load/E2E合格しました。

結論

S2S認証は、channel-trust (mTLS)、 message-trust (short JWT)、 persistent worker identity (SPIFE)を組み合わせたもので、集中型STSによって管理され、ローカルで検証されます。信頼ドメインの分離、厳格なオーディエンス/スコープ、自動回転とオブザビリティを追加し、プラットフォームとその地理とともに信頼性が高く、説明可能でスケーラブルなアウトラインを備えています。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

Telegram
@Gamble_GC
統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。