보안을 공부하다보면 인증과 인가라는 단어를 자연스럽게 접하게 됩니다.
두 개념은 항상 함께 등장하고 실제 시스템에서도 거의 동시에 사용되기 때문에 처음에는 하나의 흐름처럼 느껴지기 쉽습니다.
하지만 이 둘은 역할과 목적이 명확히 구분되는 핵심 개념이기 때문에, 이를 제대로 이해하지 못하면 보안 구조를 잘못 설계할 위험이 있습니다.
여기에 더해, 현대 보안에서 절대 빠질 수 없는 요소가 하나 더 있습니다. 바로 "누가 무엇을 했는가"를 기록하는 감사(Accounting)입니다. 이번 포스팅에서는 보안의 3대 요소인 AAA 모델을 중심으로 인증과 인가의 개념을 명확히 대조하고, 실제 시스템 환경에서 이들이 어떻게 유기적으로 동작하며 보안을 완성하는지 정리해 보겠습니다.
AAA 보안 모델이란?
네트워크 및 시스템 보안을 강화하는 필수적인 개념입니다.
다음의 세 단계를 통해 리소스를 보호합니다.
- Authentication (인증): 사용자의 신원 확인
- Authorization (인가): 접근 권한 부여
- Accounting (감사): 활동 기록 및 추적
이 세 요소는 독립적인 개념이지만, 실제 환경에서는 하나의 흐름으로 결합되어 보안을 구성합니다.
인증(Authentication)
인증은 간단히 말해서 사용자의 신원을 확인하는 과정입니다.
사용자가 본인임을 증명하기 위해 제시하는 비밀번호나 생체 인증과 같은 자격 증명에 의존합니다.
사용자가 시스템에 처음 등록할 때, 일련의 인증 요소를 설정합니다. 사용자는 설정한 인증 요소를 로그인할 때 제시합니다.
시스템은 제시된 요소를 시스템에 저장된 요소와 대조하여 두 요소가 일치하면 시스템은 사용자가 주장하는 본인임을 신뢰할 수 있게 됩니다.
- 주요 수단: 아이디/패스워드, OTP(One-Time Password), 생체 인식 등
- MFA (Multi-Factor Authentication): 비밀번호가 유출되어도 소유(스마트폰)나 존재(지문)를 추가로 확인하여 보안을 강화합니다.
- SSO (Single Sign-On): 한 번의 인증으로 연결된 여러 시스템에 접근할 수 있게 하여 사용자 편의와 인증 관리의 일관성을 확보합니다.
인가(Authorization)
인가는 사용자에게 시스템 리소스에 대한 적절한 수준의 접근 권한을 부여하는 과정입니다.
사용자 권한을 사용하여 각 사용자가 특정 리소스 또는 네트워크 내에서 수행할 수 있는 작업을 수행합니다.
인증만으로는 사용자의 신원만 확인될 뿐, 시스템에서의 행위를 제한할 수 없기 때문에 시스템 보안을 유지할 수 없습니다.
따라서 각 사용자에게 허용된 행동 범위를 정의하고 통제하기 위한 권한이 반드시 필요합니다.
역할 기반 접근 제어(RBAC)
이는 인가를 효율적으로 처리하기 위한 대표적인 방법입니다.
사용자에게 직접 권한을 부여하는 대신 '관리자', '일반 사용자', '운영자'와 같은 역할에 권한을 묶어두고 각 사용자에게 할당하는 방식입니다. 이를 통해 권한 관리의 복잡도를 줄일 수 있습니다.
HTTP 에러 코드의 차이
- 401 Unauthorized: 사실 'Unauthenticated'의 의미로, 인증이 되지 않았을 때 발생합니다.
- 403 Forbidden: 인증은 되었으나, 해당 리소스에 접근할 '권한'이 없을 때 발생합니다.
감사(Accounting)
사용자가 네트워크에 로그인해 있는 동안 로그인 시간, 주고받은 데이터, 인터넷 프로토콜(IP) 주소, 사용한 통합 자원 식별자(URI) 및 액세스한 다양한 서비스와 같은 정보를 추적하여 사용자 활동을 관리합니다.
- 책임 추적성 (Accountability): 보안 사고 발생 시 원인을 파악하고 책임 소재를 명확히 할 수 있는 근거가 됩니다.
- 사후 분석: 비정상적인 접근 패턴을 분석하여 향후 보안 정책을 강화하는 기초 자료로 활용됩니다.
인증 vs 인가 vs 감사
이는 하나의 흐름처럼 동작하지만, 역할과 처리 시점에서 명확한 차이가 있습니다.
- 인증 -> 사용자의 신원을 확인
- 인가 -> 해당 사용자의 권한을 부여
- 감사 -> 사용자의 활동을 기록
실제 로그인 흐름으로 살펴보자면
- 사용자가 아이디, 비밀번호를 입력해 로그인 요청
- 서버는 아이디, 비밀번호(자격증명)을 검증하여 인증 수행
- 인증 성공 시 사용자 정보 생성(세션 또는 토큰)
- 이후 요청마다 해당 사용자의 권한을 확인하여 인가 수행
- 모든 행위는 로그로 기록하며 감사 수행
인증은 입장 여부를 결정하고
인가는 행동 범위를 제한하며
감사는 모든 과정을 기록합니다.
학습용으로 작성한 포스팅이므로 오류가 있을 수 있습니다.
잘못된 내용이나 보완이 필요한 부분이 있다면 댓글로 알려주세요!
출처
https://www.fortinet.com/resources/cyberglossary/aaa-security
https://www.ibm.com/think/topics/authentication-vs-authorization
'SECURITY' 카테고리의 다른 글
| 내부 시스템은 어떻게 보호되는가?: Access Control (0) | 2026.04.30 |
|---|---|
| IDS(침입 탐지)와 IPS(침입 차단)의 차이 (0) | 2026.04.22 |
| 공개 키 기반 구조(PKI) 이해하기: 원리와 구성 요소 (0) | 2026.04.01 |