BACKEND/JWT

[서버 구축] - 인증/인가/계정관리

Ch's Lee 2025. 12. 20. 12:20

1. 인증 및 계정 관리 (Authentication & Identity)

사용자가 누구인지 확인하고, 안전하게 관리하는 단계입니다.

  • 기본 인증: 아이디와 비밀번호를 기반으로 식별합니다.
  • 비밀번호 암호화:
    • 해시(Hash) 암호화: 비밀번호를 그대로 저장하지 않고 복호화가 불가능한 문자열로 변환하여 저장합니다.
    • BCryptPasswordEncoder: 스프링 시큐리티 등에서 주로 사용하는 강력한 비밀번호 해시 알고리즘입니다.
  • 비밀번호 정책:
    • 이력 관리 (Password History): 이전에 사용했던 비밀번호를 기억하여, 재사용을 방지합니다. (보안 강화)
  • 강화된 인증:
    • 이중 인증 (2FA): 비밀번호 외에 OTP, 문자, 생체 인증 등을 추가하여 보안성을 높입니다.
    • SSO (Single Sign-On): 한 번의 로그인으로 여러 서비스에 접속할 수 있게 합니다.
  • 계정 권한 관리 (RBAC): 사용자를 관리자 / 개발자 / 일반 사용자로 구분하여 접근 권한을 차등 부여합니다.

2. 인가 (Authorization)

검증된 사용자에게 적절한 권한을 부여하는 단계입니다.

  • 권한 부여: 인증된 사용자가 접근할 수 있는 리소스(페이지, 데이터)를 결정합니다.
  • JWT (JSON Web Token): 토큰 기반의 인증 방식을 사용하여, 서버 부하를 줄이고 무상태(Stateless) 통신 환경에서 권한을 검증합니다.

3. 백엔드 및 서버 보안 (Infrastructure Security)

시스템 내부와 네트워크를 보호하는 기술적 조치입니다.

  • 데이터 보호:
    • 암호화된 파일 시스템: 서버 저장소 자체를 암호화하여 물리적 탈취 시에도 데이터 유출을 방지합니다.
  • 네트워크 방어:
    • 패킷 필터링 (Packet Filtering): 방화벽 수준에서 비정상적인 데이터 패킷의 유입을 차단합니다.
    • 애플리케이션 게이트웨이: 트래픽을 중계하며 애플리케이션 레벨(L7)에서 보안 검사를 수행합니다.
    • 포트 보안: SSH 기본 포트(22번) 등 널리 알려진 포트 번호를 변경하여 무차별 대입 공격이나 스캔을 회피합니다.
  • 운영체제(OS) 보안:
    • 하드닝 (Hardening): 불필요한 서비스 제거, 패치 적용 등 시스템의 보안 취약점을 최소화하여 단단하게 만드는 과정입니다.
    • 리눅스 보안 모듈:
      • SELinux (Security-Enhanced Linux): 강제 접근 제어(MAC)를 통해 프로세스의 권한을 정교하게 제어합니다.
      • TOMOYO Linux: 프로그램 실행 경로 기반의 강제 접근 제어를 제공합니다.

4. 운영 및 아키텍처 (Operations & Architecture)

  • 보안 관제 (SIEM): 보안 정보 및 이벤트 관리 시스템을 통해 로그를 수집·분석하여 위협을 탐지합니다.
  • 클라이언트 환경 (Thin Client): 클라이언트(PC)는 입출력만 담당하고, 실제 데이터 처리는 모두 서버에서 수행하여 단말기 보안 위협을 원천 차단하는 방식입니다.

한 줄 요약: 시스템은 강력한 암호화(BCrypt)와 이중 인증으로 사용자를 식별하고, JWT와 권한 분리로 접근을 제어하며, 포트 변경 및 SELinux 등으로 서버를 요새화(Hardening)하여 보호해야 합니다.