요즘 어쩌다보니 토큰으로 인가처리를 하는 로직을 많이 짜게 되었다.
자바할 때 토큰으로 게시판 등 권한 처리를 몇번 했었지만 완전히 내가 짠 코드가 아니기도 하고
시간에 밀려서 대충? 짜다보니 토큰의 자세한 처리방법 등에 대해 많이 미숙했던 것 같다.
그런의미에서 토큰에 대해 정리를 해보려다가 기왕 하는거 웹 보안관련해서 카테고리를 하나 만들었다.
첫 글은 역시 기초 개념부터 시작해야 제 맛인지라 인증과 인가. 웹 보안에 가장 기본적인 개념부터 정리를 좀 해볼까한다.
인증과 인가
인증과 인가는 보안 및 접근 제어 관점에서 중요한 개념으로, 처음 접할 땐 비슷한 두 단어의 차이가 명확하지 않을 거라고 생각한다.
두 개념의 차이를 한 문장으로 정리하자면 로그인 기능 자체는 인증이고, 회원/비회원 여부에 따라 다른 권한이 주어지는 것이 인가이다.
인증(Authentication)
사용자 또는 시스템이 주장하는 신원이 실제인지를 확인하는 개념 또는 프로세스이다.
즉, "누구인가?"를 확인하는 과정으로 주로 아이디나 패스워드, 생체 인식, 보안 토큰 등의 방법을 사용하고
2FA, MFA 등 여러 단계의 인증으로 보안을 강화하기도 한다.
인가(Authorization)
이미 인증이 된 사용자 또는 시스템이 특정 리소스에 접근할 수 있는 권한이 있는지 여부를 결정하는 개념 또는 프로세스이다.
즉, "무엇을 할 수 있는가?"를 확인하는 과정으로 주로 액세스 권한의 여부를 결정하기 위해 사용되며
역할 기반 권한 관리(RBAC)나 속성 기반 접근 제어(ABAC) 등의 접근 제어 모델에 따라 관리가 된다.
이 두가지 개념은 보안 시스템에서 함께 사용되어 사용자의 신원을 확인하고 특정 리소스에 대한 접근 권한을
부여하는 역할로, 정보 시스템의 무단 액세스를 방지하고 데이터 무단 변경이나 손상 등을 방지하는데 도움이 된다.
인증의 방식
1. 아이디와 패스워드
가장 일반적인 인증 방법 중 하나로 사용자는 등록된 아이디와 패스워드를 입력하여 본인을 증명한다.
이 방법은 제일 간단하지만서도 보안에 가장 취약한 인증 방식이다.
2. 생체 인식
최근에 많이 사용되는 인증 방식으로 주로 지문이나 안면, 홍채와 정맥 등을 사용한 사용자 인증을한다.
생체인식은 패스워드같은 정보를 보관 할 필요가 없기 때문에 높은 보안 수준을 제공하낟.
3. 보안 토큰
금융권에서 자주 사용되는 OTP나 스마트 카드 등으로 인증을 하는 방법으로,
어떠한 물리적인 장치를 통해 인증을 진행한다.
4. 다단계 인증
여러 단계의 인증을 요구하는 방식으로 주로 문자나 이메일을 통해 인증번호를 입력받아서 인증을 하는 방식이다.
이중인증(2FA)
Two-Factor Authentication의 약어로 사용자가 로그인 시 패스워드 외 추가적인 인증 요소가 필요한 보안 절차를 의미한다.
1) 무언가를 아는 요소 : 패스워드/PIN 번호
2) 무언가를 가지고 있는 요소 : SMS로 전송된 인증 코드, 보안 토큰, 스마트 카드 등
3) 무언가를 신체나 생체적으로 확인이 되는 요소 : 지문, 안면, 홍채 스캔 등
다중인(MFA)
Multi-Factor Authentication"의 약어로 2FA의 개념을 확장하여 두 개 이상의 인증 요소를 사용하여 접근을 보호하는 것을 의미한다.
MFA는 더욱 높은 보안 수준을 제공하며, 사용자의 신원을 더욱 강력하게 확인할 수 있다는 장점이 있다.
인가의 방식
1. 역할 기반 접근 제어 (RBAC)
이 방식은 사용자가 그룹 또는 역할에 할당된 권한을 기반으로 자원에 대한 액세스를 제어하는 방식으로
사용자는 특정 역할을 가짐으로써 해당 역할에 할당된 모든 권한을 상속하게 된다.
2. 속성 기반 접근 제어 (ABAC)
이 방식은 사용자의 속성과 환경을 기반으로 액세스 결정을 내리는데
사용자의 특성, 자원의 특성, 액세스 요청 시의 상황 등을 고려하여 접근을 허용 또는 거부한다.
3. 사용자 기반 접근 제어 (UBAC)
이 방식은 사용자의 행위 기록, 승인된 작업 등을 기반으로 액세스를 제어하는 방식으로
사용자가 이전에 수행한 작업 및 행동 패턴을 고려하여 액세스 권한을 결정한다.
4. 정책 기반 접근 제어 (PBAC)
이 방식은 사전에 정의된 정책을 기반으로 액세스를 제어한다.
예를 들어, 특정 조직의 보안 정책에 따라 특정 자원에 대한 액세스 권한을 설정할 수 있게 된다.
이러한 인가 방식은 보안 요구 사항, 시스템의 복잡성, 사용자 그룹의 다양성 등을 고려하여 선택될 수 있다.
'💻BackEnd > ⚫Web Security' 카테고리의 다른 글
[쿠키와 세션] 쿠키/세션 특징 및 사용방법 (0) | 2024.05.05 |
---|