4.4 KiB
4.4 KiB
바론 SSO와 Ory Stack 연동 설명
요약
바론(Baron) SSO는 내부 서비스의 인증·인가를 통합하기 위해 Ory 생태계(예: Kratos, Hydra, Oathkeeper, Keto)를 활용합니다. 이 문서는 각 컴포넌트의 역할과 바론 SSO 내에서의 연관성, 통합 시 고려사항과 참조 파일 위치를 설명합니다.
핵심 컴포넌트와 역할
- Kratos: 사용자 계정·인증(로그인, 비밀번호, 복구, 세션) 관리. 사용자 프로필과 인증 수단을 중앙에서 관리합니다.
- Hydra: OAuth2/OIDC 인증 서버로서 클라이언트(서비스)에 대해 토큰 발급, 클라이언트 등록, 동의(Consent) 처리를 담당합니다.
- Oathkeeper: 인증·인가 프록시(Edge)로서 요청을 검증하고 정책에 따라 서비스 접근을 허용/차단합니다.
- Keto (선택적): 권한 모델(ACL/정책) 저장소로서 세밀한 권한 결정을 지원합니다.
바론 SSO에서의 구성 및 흐름(요약)
- 사용자가
userfront/adminfront같은 서비스에 접속하면 서비스는 Hydra로 OIDC 인증 요청을 보냅니다. - 사용자 인증은 Kratos(또는 외부 IdP)에서 수행됩니다. 인증 후 Kratos는 세션을 생성하고 필요한 ID 토큰/코드를 반환합니다.
- Hydra가 토큰을 발급하면 서비스는 해당 토큰으로 사용자 세션을 구성합니다.
- 서비스 앞단에 Oathkeeper를 배치하면, 토큰 검증·권한 확인·정책 시행을 중앙화할 수 있습니다.
- 세부 권한 판단이 필요하면 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 클라이언트로 등록 필요)
통합 단계(개발팀 가이드)
- 로컬/스테이징에서 Ory 스택(kratos, hydra, oathkeeper 등)을 기동합니다. 예:
docker compose -f docker/compose.ory.yaml up. - Kratos 사용자 스키마·마이그레이션을 검토하고 바론의 사용자 모델에 맞게 조정합니다.
- Hydra에 서비스(클라이언트)를 등록(redirect URI, grant types, scopes).
- 서비스 쪽에 OIDC 라이브러리 설정(로그인 리디렉션, 콜백 핸들링, 토큰 저장/검증).
- Oathkeeper 정책을 만들어 서비스 앞단에서 인증·인가를 시행하도록 구성.
- 통합 테스트: 로그인 → 리디렉션 → 토큰 발급 → 리소스 접근 플로우 검증.
데모/점검 체크리스트
- 로컬에서 SSO 로그인 흐름 시연 가능 여부 확인.
- 클라이언트 등록 정보와 리다이렉트 URI 일치 여부 확인.
- 토큰(액세스·ID)의 클레임(iss, aud, exp 등) 검증.
- 로그/감사 이벤트가 중앙에 수집되는지 확인.
참고 및 추가 자료
- Ory 공식 문서: https://www.ory.sh/docs
- 리포지토리: 프로젝트 루트의 README.md 및 docker/ 디렉터리
작성자 노트: 필요하시면 이 문서에 실제 docker compose 예시, 환경변수 목록, 각 컴포넌트의 포트/엔드포인트 예시, 또는 서비스별 샘플 설정을 추가하겠습니다.