Files
MyDoc/바론 SSO와 Ory Stack 연동 설명.md

4.4 KiB

바론 SSO와 Ory Stack 연동 설명


요약

바론(Baron) SSO는 내부 서비스의 인증·인가를 통합하기 위해 Ory 생태계(예: Kratos, Hydra, Oathkeeper, Keto)를 활용합니다. 이 문서는 각 컴포넌트의 역할과 바론 SSO 내에서의 연관성, 통합 시 고려사항과 참조 파일 위치를 설명합니다.


핵심 컴포넌트와 역할

  • Kratos: 사용자 계정·인증(로그인, 비밀번호, 복구, 세션) 관리. 사용자 프로필과 인증 수단을 중앙에서 관리합니다.
  • Hydra: OAuth2/OIDC 인증 서버로서 클라이언트(서비스)에 대해 토큰 발급, 클라이언트 등록, 동의(Consent) 처리를 담당합니다.
  • Oathkeeper: 인증·인가 프록시(Edge)로서 요청을 검증하고 정책에 따라 서비스 접근을 허용/차단합니다.
  • Keto (선택적): 권한 모델(ACL/정책) 저장소로서 세밀한 권한 결정을 지원합니다.

바론 SSO에서의 구성 및 흐름(요약)

  1. 사용자가 userfront/adminfront 같은 서비스에 접속하면 서비스는 Hydra로 OIDC 인증 요청을 보냅니다.
  2. 사용자 인증은 Kratos(또는 외부 IdP)에서 수행됩니다. 인증 후 Kratos는 세션을 생성하고 필요한 ID 토큰/코드를 반환합니다.
  3. Hydra가 토큰을 발급하면 서비스는 해당 토큰으로 사용자 세션을 구성합니다.
  4. 서비스 앞단에 Oathkeeper를 배치하면, 토큰 검증·권한 확인·정책 시행을 중앙화할 수 있습니다.
  5. 세부 권한 판단이 필요하면 Keto를 사용해 정책 기반 권한결정을 외부화합니다.

바론 SSO와의 연계 포인트

  • 사용자 저장소: Kratos의 사용자 스키마를 바론의 사용자 모델에 맞춰 매핑(동기화 또는 온디맨드 매핑).
  • 클라이언트 등록: 각 프론트엔드/백엔드 서비스는 Hydra에 client_id/redirect_uri를 등록해야 합니다.
  • 토큰 검증: 서비스는 액세스 토큰 또는 ID 토큰을 검증해야 하며, Oathkeeper 사용 시 서비스 내 검증 로직을 단순화할 수 있습니다.
  • 세션 정책: Kratos와 Hydra의 세션/토큰 수명 정책을 조직 정책에 맞게 조정합니다.

통합 시 권장 설정과 고려사항

  • 프로토콜: OIDC(OAuth2) 권장. SAML이 필요하면 별도 연동 고려.
  • TLS: 모든 통신은 TLS(HTTPS)로 보호.
  • 클라이언트 시크릿 관리: 시크릿은 시크릿 매니저(예: Vault) 또는 Docker/Kubernetes 시크릿으로 관리.
  • 감사 로그: 로그인/토큰발급/권한변경 이벤트를 중앙 로그로 수집(ELK/Promtail 등).
  • 환경 분리: 스테이징과 프로덕션에서 별도의 Ory 인스턴스와 클라이언트 등록을 유지.

레포지토리 내 참조 파일(예)

  • Ory 관련 Compose 예시: docker/compose.ory.yaml
  • 루트의 Compose(또는 배포 템플릿): compose.ory.yaml
  • 서비스 디렉터리 예: userfront, adminfront(각 서비스는 Hydra 클라이언트로 등록 필요)

통합 단계(개발팀 가이드)

  1. 로컬/스테이징에서 Ory 스택(kratos, hydra, oathkeeper 등)을 기동합니다. 예: docker compose -f docker/compose.ory.yaml up.
  2. Kratos 사용자 스키마·마이그레이션을 검토하고 바론의 사용자 모델에 맞게 조정합니다.
  3. Hydra에 서비스(클라이언트)를 등록(redirect URI, grant types, scopes).
  4. 서비스 쪽에 OIDC 라이브러리 설정(로그인 리디렉션, 콜백 핸들링, 토큰 저장/검증).
  5. Oathkeeper 정책을 만들어 서비스 앞단에서 인증·인가를 시행하도록 구성.
  6. 통합 테스트: 로그인 → 리디렉션 → 토큰 발급 → 리소스 접근 플로우 검증.

데모/점검 체크리스트

  • 로컬에서 SSO 로그인 흐름 시연 가능 여부 확인.
  • 클라이언트 등록 정보와 리다이렉트 URI 일치 여부 확인.
  • 토큰(액세스·ID)의 클레임(iss, aud, exp 등) 검증.
  • 로그/감사 이벤트가 중앙에 수집되는지 확인.

참고 및 추가 자료


작성자 노트: 필요하시면 이 문서에 실제 docker compose 예시, 환경변수 목록, 각 컴포넌트의 포트/엔드포인트 예시, 또는 서비스별 샘플 설정을 추가하겠습니다.