Pomerium Edge 요구사항
Pomerium Edge 요구사항
Section titled “Pomerium Edge 요구사항”모든 직원용 솔루션의 단일 인증 경계. 거의 모든 스택의
session_trust_adapter가pomerium또는pomerium_edge_gate다.
- 모든 직원용 솔루션 접근의 단일 인증 경계 제공.
- 서비스별 이중 로그인 최소화.
토폴로지 계약
Section titled “토폴로지 계약”session_trust.pomerium (토폴로지 SSOT):
session_trust: enabled: true adapter: pomerium mode: protected-domain pomerium: runtime: kubernetes namespace: pomerium-system workload: deployment/pomerium public_url: https://auth.yamon.io authenticate_service_url: https://auth.yamon.io issuer: portal.yamon.io jwks_url: http://pomerium.pomerium-system.svc.cluster.local:7443/.well-known/pomerium/jwks.json audience: portal.yamon.io cookie_domain: .yamon.io edge_origin_url: http://10.10.10.47:17443 trusted_proxy_cidrs: - 10.42.0.0/16 - 10.43.0.0/16edge bridge는 10.10.10.47:17443에서 JWKS를 노출한다(leased_endpoint 검증:
curl -fsS http://10.10.10.47:17443/.well-known/pomerium/jwks.json).
보호 호스트
Section titled “보호 호스트”session_trust.pomerium.protected_hosts에 등록된 호스트만 edge 인증을 강제한다. 현재 등록
(요약): portal.yamon.io, portal-preview-{a,b,c}.yamon.io, portal-test.yamon.io,
keycloak.yamon.io, keycloak-admin.yamon.io, daytona.yamon.io, nexus.yamon.io,
penpot.yamon.io, datahub.yamon.io, dokploy.yamon.io, windmill.yamon.io,
redpanda.yamon.io, novu.yamon.io, pve.yamon.io,
armory.yamon.io, temporal.yamon.io, pwmcp.yamon.io, cliproxy.yamon.io,
searxnggrid.yamon.io, agent-memory-archive.yamon.io, glitchtip.yamon.io,
fractalops-live-realtime.yamon.io, argocd.yamon.io, k3s.yamon.io.
sign-in / sign-out 흐름
Section titled “sign-in / sign-out 흐름”edge sign-in/sign-out URL은 코드(session_trust.py의 PomeriumTrustAdapter)에서
다음 형태로 생성된다.
sign_in : {auth_base}/.pomerium/sign_in?pomerium_redirect_uri=<encoded target>sign_out: {origin}/.pomerium/sign_out?pomerium_redirect_uri=<encoded target>flowchart LR
A["보호 호스트 요청"] --> B{Pomerium 세션?}
B -- 없음 --> C["302 -> auth.yamon.io<br/>/.pomerium/sign_in"]
C --> D["Keycloak OIDC"]
D --> E["세션 쿠키 발급<br/>cookie_domain .yamon.io"]
E --> F["원 호스트로 redirect"]
B -- 있음 --> G["요청 통과 +<br/>x-pomerium-jwt-assertion<br/>x-pomerium-claim-email/groups"]
G --> H["FractalOps API<br/>principal 해석"]
- protected host별 sign-in redirect.
- sign-out 체인 제공(포털/솔루션 공통).
- Databroker state는 공유 CloudNativePG의 dedicated
pomeriumdatabase/role에 저장한다.pomerium-databrokerPVC와/var/lib/pomeriumfile databroker는 desired state가 아니다. - JWT/claim 헤더를 FractalOps edge principal 해석기로 전달.
- JWT 헤더 기본값:
x-pomerium-jwt-assertion(RS256/ES256 검증). - claim 헤더:
x-pomerium-claim-email,x-pomerium-claim-groups. - 검증 시
issuer = portal.yamon.io,audience = portal.yamon.io로 대조한다.
- JWT 헤더 기본값:
- JWKS 후보는
jwks_url->{edge_origin}/.well-known/pomerium/jwks.json->{authenticate_service}/.well-known/pomerium/jwks.json순으로 시도한다.
- Cloudflare Access 의존 로직 제거(no alternate auth path). edge 신뢰는 Pomerium JWKS만 본다.
- 허용 도메인/리다이렉트 strict 검증.
trusted_proxy_cidrs(10.42.0.0/16,10.43.0.0/16) 안에서 온 요청의 claim 헤더만 신뢰한다 (trusted_claim_headers_only).
pomerium_edge_gate 변형
Section titled “pomerium_edge_gate 변형”일부 스택은 native SSO가 불가능/enterprise 한정이라 edge에서만 인증을 강제하고 앱은 로컬
세션을 쓴다(session_trust_adapter: pomerium_edge_gate): dokploy, novu,
redpanda. 이 경우 Pomerium은 “출입문”이고, 앱 안 권한은 앱 로컬/native 메커니즘이 담당한다.
- 각 서비스 도메인
302 -> auth host확인. - 로그인 후
portal sessionAPI principal 식별 확인. - JWKS 도달성:
curl -fsS http://10.10.10.47:17443/.well-known/pomerium/jwks.json.