인증 (Authentication)
정의
- 인증은 사용자의 신원을 시스템에 증명하는 과정
- 인증의 목표는 "이 사람이 자신이 주장하는 신분이 맞는가?"를 확인하는 것
프로세스
- 사용자 입력:
- 사용자는 로그인 화면에서 (ID와 비밀번호 / 생체 인식 / 인증 토큰)을 제출
- 시스템 확인:
- 시스템은 데이터베이스나 인증 서버에 저장된 정보와 사용자가 제출한 정보를 비교
- 결과:
- 사용자를 확인하면 "인증 성공" 상태가 되고, 그렇지 않으면 "인증 실패" 메시지 반환
인증 방법
- 지식 기반 인증 (사용자가 아는 것):
- 비밀번호, PIN 코드, 보안 질문 등
- 소유 기반 인증 (사용자가 소유한 것):
- OTP(일회용 비밀번호) 기기, 보안 토큰, 이메일 인증 링크 등
- 본질 기반 인증 (사용자 고유의 특징):
- 생체 정보(지문, 홍채, 얼굴 인식 등)나 행동 패턴(타이핑 속도, 마우스 움직임) 등
- 다중 요소 인증(Multi-Factor Authentication, MFA):
- 위의 두 가지 이상의 인증 방식을 결합한 것. 예를 들어, 비밀번호 입력 후 휴대전화 OTP 입력.
인증의 활용 예시
- 은행 계좌 로그인
- 회사 네트워크 접근
- 스마트폰 잠금 해제
- 이메일 서비스 로그인
인가 (Authorization)
정의
- 인가는 사용자가 특정 리소스나 데이터를 접근하거나 특정 작업을 수행할 권한이 있는지 확인하는 과정
- 인증이 신원을 확인하는 것이라면, 인가는 "이 사용자가 무엇을 할 수 있는지"를 결정
프로세스
- 인증된 사용자 확인:
- 먼저 사용자가 인증을 통해 본인임을 증명
- 권한 확인:
- 시스템은 해당 사용자가 요청한 리소스에 대해 접근 권한이 있는지, 또는 요청한 작업을 수행할 수 있는지 확인
- 결과:
- 권한이 있으면 접근이 허용되고, 권한이 없으면 "접근 거부" 메시지 반환
인가 방식
- RBAC (Role-Based Access Control):
- 사용자에게 역할(Role)을 부여하고, 역할에 따라 권한을 설정
- 예: 관리자(Admin), 일반 사용자(User), 게스트(Guest) 등
- ABAC (Attribute-Based Access Control):
- 사용자의 속성, 환경, 요청 조건에 따라 접근 권한을 결정합니다.
- 예: "근무 시간(09:00-18:00) 내에만 리소스 접근 가능"
- ACL (Access Control List):
- 각 리소스별로 접근 권한을 명시적으로 설정
- 예: 파일 시스템에서 파일별로 읽기/쓰기 권한을 지정
- 정책 기반 접근 제어:
- 특정 비즈니스 규칙이나 정책에 따라 접근 권한을 관리
인가의 활용 예시
- 관리자는 모든 데이터를 볼 수 있지만, 일반 사용자는 자신과 관련된 데이터만 볼 수 있음.
- 고객 정보는 특정 부서(예: 고객 지원팀)만 접근할 수 있음.
- VIP 사용자는 특정 서비스나 리소스를 추가로 사용할 수 있음.
인증과 인가의 관계
순서와 의존성
- 인증이 선행되어야 인가를 수행할 수 있음
- 인증되지 않은 사용자는 권한 확인 자체가 불가능
- 예를 들어, 로그인 화면에서 인증이 실패하면 사용자는 그 뒤의 시스템 리소스에 접근 불가
분리된 책임
- 인증은 "사용자가 누구인지"를 확인하는 데 초점
- 인가는 "해당 사용자가 어떤 권한을 가지고 있는지"를 확인
- 이를 통해 시스템은 두 단계를 분리하여 보안 강화를 도모
구체적인 예시: 은행 시스템
- 인증:
- 사용자가 인터넷 뱅킹에 접속하여 계정 ID와 비밀번호를 입력하고 OTP를 입력하여 본인임을 증명.
- 인가:
- 사용자가 계좌 이체를 요청하면, 시스템은 해당 사용자가 계좌 이체 권한이 있는지 확인.
- 예를 들어, 일반 사용자 계정은 이체 한도가 있지만, 관리자는 한도 없이 작업 가능.
보안 위협 및 해결 방법
인증 관련 위협
- 비밀번호 유출, 피싱, 브루트포스 공격
- 해결 방법:
- 비밀번호 정책 강화(복잡한 조합 요구)
- 다중 요소 인증(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 |