본문 바로가기
보안

인증과 인가의 차이(feat: 가상 시나리오 예시)

by 시니성 2025. 4. 9.

 

웹 개발과 시스템 보안을 논할 때 '인증(Authentication)'과 '인가(Authorization)'라는 용어가 자주 등장합니다.
이 두 개념은 보안 시스템의 핵심 요소이지만, 종종 혼동되거나 같은 의미로 잘못 사용되기도 합니다.
이 포스팅에서는 인증과 인가의 명확한 차이점을 '온라인 학습 플랫폼'이라는 가상 시나리오를 예로들어 살펴보겠습니다.

1. 인증과 인가: 기본 개념

인증(Authentication)

인증은 "당신이 누구인지 확인하는 과정"입니다.
사용자가 자신이 주장하는 사람이 맞는지 검증하는 절차로, 쉽게 말해 "당신이 정말 당신이 맞습니까?"라고 묻는 과정입니다.

인가(Authorization)

인가는 "특정 리소스에 접근할 수 있는 권한을 부여하는 과정"입니다.
인증을 통해 확인된 사용자에게 어떤 리소스에 접근하고, 어떤 작업을 수행할 수 있는지 결정하는 과정입니다.
즉, "당신은 무엇을 할 수 있습니까?"라고 묻는 과정이죠.

2. '에듀허브' 온라인 학습 플랫폼 시나리오

가상의 온라인 학습 플랫폼 '에듀허브'를 통해 인증과 인가가 실제로 어떻게 작동하는지 살펴보겠습니다.

2.1 시나리오 배경

'에듀허브'는 다양한 온라인 강좌를 제공하는 플랫폼으로, 학생, 강사, 관리자 등 여러 유형의 사용자가 있습니다.
각 사용자는 자신의 역할에 따라 플랫폼 내에서 접근할 수 있는 리소스와 수행할 수 있는 작업이 다릅니다.

2.2 인증 과정

신희성 씨는 '에듀허브'에 등록된 프로그래밍 과정 수강생입니다.
그가 플랫폼에 접속할 때 일어나는 인증 과정은 다음과 같습니다.

  1. 로그인 화면 접속: 신희성 씨는 '에듀허브' 웹사이트에 접속하여 로그인 페이지를 엽니다.
  2. 자격 증명 입력: 그는 자신의 아이디 "shin_hui_seong"과 비밀번호를 입력합니다.
  3. 2단계 인증: 추가 보안을 위해 그의 휴대폰으로 전송된 인증코드를 입력합니다.
  4. 신원 확인 완료: 시스템은 제출된 정보를 데이터베이스의 사용자 정보와 비교하여 일치 여부를 확인합니다.
  5. 인증 성공: 모든 정보가 일치하면 시스템은 "신희성 님, 환영합니다!"라는 메시지를 표시하고, 신희성 씨는 플랫폼에 로그인 상태가 됩니다.

여기서 플랫폼은 "이 사용자가 신희성이 맞는가?"라는 질문에 답하기 위해 인증 과정을 수행했습니다.
이 과정은 사용자의 신원만을 확인하며, 아직 어떤 자원에 접근할 수 있는지는 결정하지 않았습니다.

2.3 인가 과정

인증이 완료된 후, 신희성 씨가 플랫폼 내에서 다양한 리소스에 접근하려고 시도할 때, 다음과 같은 인가 과정이 일어납니다.

  1. 수강 중인 강좌 접근
    • 신희성 씨는 자신이 등록한 "러스트 기초"와 "코틀린 고급" 강좌에 접근을 시도합니다.
    • 시스템은 그의 계정과 연결된 권한을 확인하고, 해당 강좌에 대한 접근을 허용합니다.
  2. 미등록 강좌 접근 시도:
    • 신희성 씨는 "데이터 사이언스 고급" 강좌 페이지에 접속을 시도합니다.
    • 시스템은 그의 권한을 확인하고, 등록되지 않은 강좌이므로 "수강 신청이 필요합니다"라는 메시지를 표시하며 접근을 거부합니다.
  3. 강사용 관리 페이지 접근 시도:
    • 호기심에, 신희성 씨는 강사들이 강좌를 관리하는 페이지에 접속을 시도합니다.
    • 시스템은 그가 '학생' 역할을 가지고 있음을 확인하고, "권한이 없습니다"라는 메시지를 표시하며 접근을 차단합니다.
  4. 다른 학생의 성적 확인 시도:
    • 신희성 씨는 다른 학생의 성적 정보를 보려고 시도합니다.
    • 시스템은 그가 자신의 성적만 볼 수 있는 권한을 가지고 있음을 확인하고, "접근 불가" 메시지를 표시합니다.

이 모든 과정에서 시스템은 신희성 씨의 권한을 확인하고 있습니다. 시스템 내부적으로는 "사용자 '신희성'는 수강생 권한이며, 등록된 강좌 ID_123, ID_456만 접근 가능"이라는 정보를 사용하여 각 리소스에 대한 접근 여부를 결정합니다.

3. 인증과 인가의 핵심 차이점

위 시나리오와 코드 예시를 통해 인증과 인가의 차이점을 정리해보면 아래의 표와 같습니다.

구분 인증(Authentication) 인가(Authorization)
목적 사용자 신원 확인 리소스 접근 권한 부여
질문 "당신은 누구인가?" "당신은 무엇을 할 수 있는가?"
시점 시스템 접근 시 최초 수행 인증 후 자원 접근 시마다 수행
결과 신원 증명 (보통 토큰/세션 형태) 권한 부여 (접근 허용/거부)
실패 시 응답 "로그인 실패" (401 Unauthorized) "접근 권한 없음" (403 Forbidden)

5. 현대적인 인증/인가 접근 방식

현대 웹 애플리케이션에서는 다양한 인증 및 인가 방식이 사용됩니다.

5.1 인증 방식

  1. 암호 기반 인증: 전통적인 아이디/비밀번호 방식
  2. 다중 인증(MFA): 비밀번호 + 추가 인증 요소 (SMS, 이메일, 앱)
  3. OAuth/소셜 로그인: 구글, 페이스북 등 외부 서비스를 통한 인증
  4. 생체 인증: 지문, 얼굴 인식 등을 활용한 인증
  5. JWT(JSON Web Token): 클레임 기반의 토큰 인증 방식
  6. SSO(Single Sign-On): 한 번의 인증으로 여러 서비스 접근

5.2 인가 방식

  1. 역할 기반 접근 제어(RBAC): 사용자 역할에 따라 권한 부여
  2. 속성 기반 접근 제어(ABAC): 사용자, 리소스, 환경 속성에 따라 권한 부여
  3. 정책 기반 접근 제어: 중앙화된 정책에 따라 권한 부여
  4. 관계 기반 접근 제어: 객체 간의 관계에 따라 권한 부여 (소셜 미디어에서 활용)

6. 보안 모범 사례

인증과 인가를 효과적으로 구현하기 위한 몇 가지 모범 사례를 소개합니다.

6.1 인증 모범 사례

  • 강력한 비밀번호 정책 적용
  • 다중 인증(MFA) 구현
  • 계정 잠금 정책 설정 (연속 로그인 실패 시)
  • 안전한 인증 토큰 관리 (HTTPS 사용, 적절한 만료 시간 설정)
  • 암호화된 세션/쿠키 사용

6.2 인가 모범 사례

  • 최소 권한의 원칙 적용 (필요한 최소한의 권한만 부여)
  • 권한 변경 로깅과 감사 구현
  • 세분화된 권한 모델 설계
  • 정기적인 권한 검토 및 갱신 수행
  • 중요 작업에 대한 추가 확인 절차 적용

7. 결론

인증과 인가는 보안 시스템의 두 가지 핵심 요소로, 명확하게 구분되는 개념입니다.
인증은 "사용자가 누구인지" 확인하는 과정이고, 인가는 "확인된 사용자에게 어떤 권한을 부여할지" 결정하는 과정입니다.

온라인 학습 플랫폼 시나리오에서 본 것처럼, 신희성 씨는 먼저 인증 과정을 통해 자신이 신희성임을 증명했고, 그 후에 인가 과정을 통해 등록한 강좌에만 접근할 수 있는 권한을 부여받았습니다.

이 두 개념을 명확히 이해하고 적절히 구현하는 것은 안전하고 효율적인 시스템을 구축하는 데 필수적입니다.

728x90