본문 바로가기
Java/SpringBoot

인증과 인가

by wooksss 2025. 1. 30.

인증 (Authentication)

정의

  • 인증은 사용자의 신원을 시스템에 증명하는 과정
  • 인증의 목표는 "이 사람이 자신이 주장하는 신분이 맞는가?"를 확인하는 것

프로세스

  1. 사용자 입력:
    • 사용자는 로그인 화면에서 (ID와 비밀번호 / 생체 인식 / 인증 토큰)을 제출
  2. 시스템 확인:
    • 시스템은 데이터베이스나 인증 서버에 저장된 정보와 사용자가 제출한 정보를 비교
  3. 결과:
    • 사용자를 확인하면 "인증 성공" 상태가 되고, 그렇지 않으면 "인증 실패" 메시지 반환

인증 방법

  1. 지식 기반 인증 (사용자가 아는 것):
    • 비밀번호, PIN 코드, 보안 질문 등
  2. 소유 기반 인증 (사용자가 소유한 것):
    • OTP(일회용 비밀번호) 기기, 보안 토큰, 이메일 인증 링크 등
  3. 본질 기반 인증 (사용자 고유의 특징):
    • 생체 정보(지문, 홍채, 얼굴 인식 등)나 행동 패턴(타이핑 속도, 마우스 움직임) 등
  4. 다중 요소 인증(Multi-Factor Authentication, MFA):
    • 위의 두 가지 이상의 인증 방식을 결합한 것. 예를 들어, 비밀번호 입력 후 휴대전화 OTP 입력.

인증의 활용 예시

  • 은행 계좌 로그인
  • 회사 네트워크 접근
  • 스마트폰 잠금 해제
  • 이메일 서비스 로그인

인가 (Authorization)

정의

  • 인가는 사용자가 특정 리소스나 데이터를 접근하거나 특정 작업을 수행할 권한이 있는지 확인하는 과정
  • 인증이 신원을 확인하는 것이라면, 인가는 "이 사용자가 무엇을 할 수 있는지"를 결정

프로세스

  1. 인증된 사용자 확인:
    • 먼저 사용자가 인증을 통해 본인임을 증명
  2. 권한 확인:
    • 시스템은 해당 사용자가 요청한 리소스에 대해 접근 권한이 있는지, 또는 요청한 작업을 수행할 수 있는지 확인
  3. 결과:
    • 권한이 있으면 접근이 허용되고, 권한이 없으면 "접근 거부" 메시지 반환

인가 방식

  1. RBAC (Role-Based Access Control):
    • 사용자에게 역할(Role)을 부여하고, 역할에 따라 권한을 설정
    • 예: 관리자(Admin), 일반 사용자(User), 게스트(Guest) 등
  2. ABAC (Attribute-Based Access Control):
    • 사용자의 속성, 환경, 요청 조건에 따라 접근 권한을 결정합니다.
    • 예: "근무 시간(09:00-18:00) 내에만 리소스 접근 가능"
  3. ACL (Access Control List):
    • 각 리소스별로 접근 권한을 명시적으로 설정
    • 예: 파일 시스템에서 파일별로 읽기/쓰기 권한을 지정
  4. 정책 기반 접근 제어:
    • 특정 비즈니스 규칙이나 정책에 따라 접근 권한을 관리

인가의 활용 예시

  • 관리자는 모든 데이터를 볼 수 있지만, 일반 사용자는 자신과 관련된 데이터만 볼 수 있음.
  • 고객 정보는 특정 부서(예: 고객 지원팀)만 접근할 수 있음.
  • VIP 사용자는 특정 서비스나 리소스를 추가로 사용할 수 있음.

인증과 인가의 관계

순서와 의존성

  • 인증이 선행되어야 인가를 수행할 수 있음
    • 인증되지 않은 사용자는 권한 확인 자체가 불가능
  • 예를 들어, 로그인 화면에서 인증이 실패하면 사용자는 그 뒤의 시스템 리소스에 접근 불가

분리된 책임

  • 인증은 "사용자가 누구인지"를 확인하는 데 초점
  • 인가는 "해당 사용자가 어떤 권한을 가지고 있는지"를 확인
  • 이를 통해 시스템은 두 단계를 분리하여 보안 강화를 도모

구체적인 예시: 은행 시스템

  1. 인증:
    • 사용자가 인터넷 뱅킹에 접속하여 계정 ID와 비밀번호를 입력하고 OTP를 입력하여 본인임을 증명.
  2. 인가:
    • 사용자가 계좌 이체를 요청하면, 시스템은 해당 사용자가 계좌 이체 권한이 있는지 확인.
    • 예를 들어, 일반 사용자 계정은 이체 한도가 있지만, 관리자는 한도 없이 작업 가능.

보안 위협 및 해결 방법

인증 관련 위협

  • 비밀번호 유출, 피싱, 브루트포스 공격
  • 해결 방법:
    • 비밀번호 정책 강화(복잡한 조합 요구)
    • 다중 요소 인증(MFA) 사용
    • 비밀번호 관리 프로그램 사용

인가 관련 위협

  • 권한 상승 공격(Privilege Escalation)
  • 부적절한 권한 설정
  • 해결 방법:
    • 최소 권한 원칙(Principle of Least Privilege) 적용
    • 정기적인 권한 리뷰 및 감사
    • 정책 기반 접근 제어(PBAC) 도입

'Java > SpringBoot' 카테고리의 다른 글

Security Filter Chain  (0) 2025.01.31
자바의 Filter에 대해서  (0) 2025.01.31
JWT 로그인 테스트-4  (0) 2025.01.22
JWT 로그인 테스트-3  (0) 2025.01.21
JWT 로그인 테스트-2  (0) 2025.01.19