Skip to content

[Refactor] SUPER_ADMIN 레거시 초기화 로직 제거 #36

Description

@LEE-HYUN-JE

대상 코드 영역

auth 서비스

현재 문제점

현재 인증 및 관리자 권한 관리는 Keycloak을 기준으로 동작하고 있습니다.

관리자 여부는 KEYCLOAK_ADMIN_GROUP_PATH에 해당하는 Keycloak 그룹 포함 여부로 판단하며, 로그인 시 해당 값을 기반으로 ACC DB의 isAdmin 값을 동기화합니다.

하지만 기존 Google 인증 기반 BFF 구조에서 사용하던 SUPER_ADMIN_* 환경변수와 초기화 로직이 남아 있습니다. 이 로직은 애플리케이션 기동 시 user_detail, user_auth_detail에 기본 관리자 계정을 직접 생성/보정합니다.

현재 구조에서는 관리자 계정의 source of truth가 Keycloak이어야 하므로, ACC 서버가 별도의 SUPER_ADMIN 계정을 환경변수로 받아 DB에 시딩하는 흐름은 인증 모델과 맞지 않습니다.

또한 SUPER_ADMIN_KEYCLOAK_USER_ID, SUPER_ADMIN_KEYSTONE_USERNAME, SUPER_ADMIN_KEYSTONE_PASSWORD 등 여러 환경변수가 남아 있어 실제 필요한 설정인지 혼동을 만들고, 운영 환경 설정 복잡도를 높이고 있습니다.

리팩토링 제안

SUPER_ADMIN 관련 레거시 초기화 로직을 제거합니다.

작업 범위는 다음과 같습니다.

  • SUPER_ADMIN_* 환경변수 제거
  • SuperAdminProperties 제거
  • SuperAdminInitializer 제거
  • application.ymlsuper-admin 설정 제거
  • BaseProjectInitializer에서 superAdminProperties.getUserId() 의존 제거 또는 적절한 값으로 대체
  • 문서 및 Swagger 예시에서 SUPER_ADMIN_* 참조 제거
  • 테스트 코드에서 SUPER_ADMIN 의존이 있다면 제거

기대 효과

  • 인증/권한 관리 기준을 Keycloak으로 일원화할 수 있습니다.
  • 불필요한 SUPER_ADMIN_* 환경변수를 제거하여 운영 설정 복잡도를 줄일 수 있습니다.
  • ACC DB에 관리자 계정을 직접 시딩하는 흐름을 제거하여 인증 모델의 책임 경계를 명확히 할 수 있습니다.
  • 신규 개발자가 OPENSTACK_BFF_*, KEYCLOAK_ADMIN_GROUP_PATH, SUPER_ADMIN_*의 역할을 혼동할 가능성을 줄일 수 있습니다.
  • 관리자 계정 생성/관리 정책을 Keycloak 기준으로 유지할 수 있어 유지보수성이 개선됩니다.

리팩토링 범위

  • 코드 가독성 개선
  • 복잡도 감소
  • 성능 개선
  • 테스트 용이성 개선

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions