Authorization
- 인가의 개념
- 인증과 인가의 차이
- 인가가 필요한 이유와 그 역할
- 인증 이후 인가가 어떤 프로세스로 이어지는가
- 보안 시스템에서 인증과 인가가 어떻게 맞물려 동작하는가
인가(Authorization)
인증된 사용자가 어떤 자원(Resource)에 접근할 수 있는지 결정하는 과정임
- 인증(Authentication) : 사용자가 누구인지 확인하는 절차
- 인가(Authorization) : 인증된 사용자가 무엇을 할 수 있는지 결정하는 절차
인증은 건물 현관에서 신분증을 보여주고 본인 확인을 하는 절차
인가는 건물 안에서 특정 방에 들어갈 수 있는 권한이 있는지 확인하는 과정임
1. 인증과 인가의 차이점
| 구분 | 인증(Authentication) | 인가(Authorization) |
| 목적 | 사용자가 누구인지 확인함 | 사용자가 무엇을 할 수 있는지 결정함 |
| 예시 | 로그인시 아이디와 비밀번호를 검증함 | 관리자만 게시글 삭제 가능 |
| 시점 | 항상 먼저 수행됨 | 인증 후에 수행됨 |
| 결과 | 사용자의 신원 확인 | 권한에 따른 접근 제어 |
2. 인가의 필요성과 역할
- 보안 강화 : 인증만으로는 보안이 충분치 않으며, 각 사용자마다 허용된 범위를 제한해야만 한다
- 자원 보호 : 중요 데이터나 관리자 기능은 권한이 있는 사용자만 접근할 수 있어야한다
- 사용자 경험 : 불필요한 접근을 막아 사용자가 본인 권한 범위 내에서만 기능을 이용하도록 도와야한다
영화관에서 티켓을 구매(인증)했더라도, 1관 티켓이면 1관(인가)에만 입장할 수 있어야한다
회사에서 사원증으로 출입(인증)하지만, 부서별 권한(인가)에 따라 특정 층이나 회의실만 출입할 수 있어야한다
3. 이걸 왜 분리해야 하는가?
- 보안의 경계를 명확하게 : 인증은 신원 확인, 인가는 행위 허용 여부가 된다. 섞이면 신원 미확정 상태에서 권한을 부여하는 오류가 생길 수 있다.
- 책임 분리(SRP) : 인증 모듈은 크리덴결 검증에 집중하고, 인가 모듈은 정책(규칙) 판단에 집중한다. 따라서 코드가 단순해지고 테스트가 용이해지며, 유지보수가 수월해진다
- 정책 진화, 확장 용이 : 비즈니스가 커질수록 권한 규칙은 잦은 변경이 필요하다. 인증과 분리하면 정책만 바꿔도 된다
- 감사, 추적(Audit) 품질 향상 : 누가(인증) 무엇을 시도했고(행위), 외 허용 / 거부되었는지(정책) 에 대한 부분을 분리해서 로깅하면 사고 분석이 수월해진다.
- 취약점 예방 : 섞이게 되면 대표적으로 IDOR(수평 권한 상승), 권한 누락 체크 같은 문제가 자주 발생할 수 있다.
4. 인증 후 인가 프로세스 워크플로우
PEP(Policy Enforcement Point) : 검사 적용 지점
PDP(Policy Decision Point) : 정책 판단 지점
규모가 작으면 둘을 하나의 프로세스에서 구현하는 방법도 있다
인증 이후
API 서버에서 PDP에 권한에 대해 물어봄 - > PDP가 DB 저장소에서 정책 / 속성을 조회하고 반환해줌
- > 이에 대해 PDP가 API 서버로 허용 / 거부를 결정하고 근거와 함께 보내준다
- > 이걸 API서버가 클라이언트에게 반환해줌
5. 왜 인가는 항상 인증 이후여야 하는가?
- 신원 미확정 상태에서는 권한 판단 불가 : 권한은 주체(사용자 / 시스템)에 귀속된다. 주체가 확정되기 전에는 정책을 적용할 대상이 없다.
- 토큰 / 세션 위조 방지 : 먼저 신원(토큰 / 세션) 유효성, 무결성을 검증해야 이후 권한 검사 의미가 생긴다.
- 오류시 안전한 기본값(Fail-close) : 인증 실패는 즉시 401로 닫아야 하며, 인증 성공 이후에만 인가로 세분화(403)한다.
* 401 Unauthorized(인증 실패 / 누락) : 누군지 확인되지 않음 -> 먼저 로그인 / 자격 제시 필요
* 403 Forbidden(인가 실패) : 누군지는 알지만 해당 작업에 대한 권한이 없음
팁
* 인증과 인가를 항상 구분해서 설계해야함. 로그인 성공이 곧 모든 권한 허용을 의미하진 않는다
* 인가는 보통 역할(Role)이나 권한(Permission) 체계를 통해 관리된다
* 보안 사고 예방을 위해 최소 권한 원칙(Principle of Least Privilege)을 적용하는게 좋다
'Spring Boot > 유저 관리 기능' 카테고리의 다른 글
| 인가와 권한 관리 : Spring Security와 권한 검증 플로우 (0) | 2026.03.17 |
|---|---|
| 인가와 권한 관리 : 권한 기반 접근 제어 (0) | 2026.03.17 |
| Authorization 헤더, 토큰 기반 인증 : Refresh 토큰 (0) | 2026.03.15 |
| Authorization 헤더, 토큰 기반 인증 : JWT의 이해 (0) | 2026.03.14 |
| Authorization 헤더, 토큰 기반 인증 : Authorization 헤더 (1) | 2026.03.13 |