-
인증과 인가, 어딘가 비슷한 말 같지만 둘은 서로 다른 개념을 뜻한다.
둘 다 시스템 보안과 데이터 보호에 필수적인 개념이지만 자칫하면 혼동될 수 있는 부분이다.
인증
인증은 "누구인가"를 확인하는 과정이다.
예를 들어, 로그인을 할 때 우리는 ID를 입력한 후에 계정의 주인이 맞는지 확인받을 수 있게 비밀번호를 입력한다.
또는 지문과 같은 생체 인식을 통하여 우리가 해당 계정의 주인임을 확인하는 과정을 거치는데, 이것이 바로 인증이다.
쉽게 정리하면, 신원 확인을 하는 것이다.
인증 요소
사용자의 신원을 확인하는 데 사용되는 방법 또는 증거를 인증 요소라고 한다.
인증 요소는 다음과 같이 3가지 유형으로 분류할 수 있다.
유형 설명 예시 지식 기반 요소 사용자가 알고 있는 정보를 기반으로 인증하는 요소이다. 비밀번호, 보안 질문, PIN 번호 소유 기반 요소 사용자가 가지고 있는 것을 기반으로 인증하는 요소이다. 보안 토큰, 스마트 카드, 생체 인식 속성 기반 요소 사용자의 고유한 특징을 기반으로 하는 인증 요소이다. 행동 분석, 음성 인식, 심박수 인식 보안성을 높이기 위해서는 이러한 인증 요소를 여러 개 조합하여 사용하는 것이 좋다.
예를 들어, 비밀번호와 보안 토큰을 함께 사용하거나, 지문 인식과 PIN 번호를 함께 사용하는 것이다.
어떠한 인증 요소를 사용할지는 시스템의 요구 사항, 보안 수준, 사용자 편의성 등을 고려하여 결정해야 한다.
주의사항
하지만 이러한 인증 요소를 사용할 때도 주의해야할 점이 있다. 이는 다음과 같다.
- 모든 인증 요소는 취약점을 가지고 있기에, 다양한 인증 요소를 조합하고, 정기적인 업데이트가 필요하며, 강력한 보안 정책을 유지해야 한다.
- 사용자에게 복잡한 비밀번호 설정을 권장하고, 보안 토큰 또는 바이오메트릭 인증 등의 보다 안전한 인증 방법을 제공하는 것이 좋다.
- 사용자 인증 로그를 기록하고 분석하여 의심스러운 활동 감지 시스템을 구축하는 것 또한 중요하다.
위에서 언급한 바이오메트릭 인증이란, 지문과 얼굴, 홍채 등의 신체적인 특징을 이용하는 방식이다.
즉, 인증에서 가장 중요한 것은 인증 요소를 시스템과 공유하고 신원을 증명하는 것이 핵심이다.
인가
인가는 "무엇을 할 수 있는가"를 확인하는 과정이다.
여기서 "무엇을 할 수 있는가"라는 의미가 확실하게 와닿지는 않을 수 있다.
이 말은 즉, 인증된 사용자가 어떤 시스템이나 리소스에 액세스할 수 있는지를 결정하는 것이라고 할 수 있다.
예를 들어, 어떠한 특정 웹사이트의 관리자 페이지를 접근할 때, 접근 권한이 있는지 확인한다.
또는 특정 파일을 액세스할 때 액세스 권한이 있는지를 확인한다. 이것이 바로 인가다.
쉽게 정리하면, 권한을 부여하는 것을 말한다.
인가 모델
시스템에서 사용자가 수행할 수 있는 작업을 제어하는 방법을 정의하는 프레임워크를 인가 모델이라고 한다.
이러한 인가 모델의 종류는 다음과 같다.
종류 설명 실제 활용 사례 RBAC(Role-Based Access Control) 가장 일반적인 인가 모델로, 사용자의 역할에 따라 권한 부여하는 방식이다. 관리 효율성이 높고 보안성을 강화하지만, 사용자의 역할이 명확하게 정의되어 있어야 하며, 역할 변경에 따른 권한 조정이 번거롭다. 쇼핑몰: 일반 회원, VIP 회원, 프리미엄 회원 등 회원 등급에 따라 구매 가능한 상품, 할인 혜택, 배송 옵션 등을 차별화하여 제공한다. ABAC(Attribute-Based Access Control) 사용자, 리소스, 환경 등의 속성을 기반으로 권한 부여하는 방식이다. RBAC보다 더 세밀하고 유연한 권한 관리가 가능하지만, 시스템 구현이 복잡하고 관리 비용이 많이 든다. 의료: 환자 정보에 대한 액세스를 제어하기 위해 사용한다. 의사는 환자의 모든 의료 기록을 볼 수 있지만, 간호사는 특정 진료 기록만 볼 수 있다. MAC(Mandatory Access Control) 보안 정책에 따라 권한을 부여하는 방식이다. 정부기관이나 군사 시스템에서 주로 사용한다. 높은 보안성을 제공하지만 유연성이 떨어지고 관리가 어렵다. 정부: 고위 관리만이 국가 안보 정보에 액세스할 수 있다. 위 표에서 나타난 인가 결정 요소들의 예시는 다음과 같다.
- 사용자: 사용자 ID, 역할, 속성 등
- 리소스: 파일, 데이터페이스, 시스템 등
- 환경: 시간, 위치, 네트워크 등
- 보안 정책: 조직에서 정의한 규칙 및 제한 사항
여기서 내가 가장 헷갈렸던 것은 RBAC와 ABAC가 정확히 어떤 상황에서 사용되는지였는데, 이는 다음과 같이 정리할 수 있다.
RBAC를 사용하기 가장 적합한 시점
- 변화가 잦은 환경
- 간편한 구현 및 관리
- 명확한 책임 구분
- 효율적인 액세스 제어
ABAC를 사용하기 가장 적합한 시점
- 높은 보안 수준이 요구되는 경우
- 기존 RBAC 시스템의 한계를 극복해야 하는 경우
- 다양한 속성을 기반으로 액세스 제어해야 할 경우
- 규제 준수가 요구되는 경우
인가 모델을 선택할 때는 시스템의 요구 사항과 관리 용이성, 확장성, 비용 등을 고려하여 선택해야 한다.
주의사항
- 사용자에게 필요한 권한만 부여하고, 불필요한 권한은 부여하지 않는 것이 중요하다.
- 사용자 역할, 리소스, 보안 정책 등의 변경에 따라 권한을 정기적으로 검토하고 업데이트 해야 한다.
- 사용자 활동을 기록하고 감시하여 의심스러운 활동을 감지해야 한다.
즉, 인가는 시스템과 데이터 보안을 위해 매우 중요한 개념이다.
적절한 인가 모델을 선택하고, 정교한 인가 시스템을 구축하여 시스템에 대한 부적절한 액세스를 차단한다.
또한, 정보 유출 및 악용을 방지해야 한다.
인증과 인가의 관계
위에서 인증과 인가가 무엇인지 개념을 보고나면 둘의 관계를 어느정도 추측해볼 수 있다.
인증은 일반적으로 인가보다 먼저 이루어져야 한다.
보통 사용자의 신원을 확인한 후에, 해당 사용자에게 어떠한 권한을 부여할지 결정하기 때문이다.
하지만, 때로는 인증 과정을 거치지 않는다.
예를 들어, 특정 웹사이트에서는 로그인 없이도 일부 페이지를 볼 수 있도록 권한을 설정할 수 있다.
이 경우, 로그인을 하지 않기에 인증 과정은 없지만, 일부 리소스에 대한 제한적인 인가가 존재하는 것이라고 할 수 있다.
여기서 중요한 것은 인증에서 인가로 이어질 수는 있지만, 인가에서 인증으로는 이어질 수 없다.
이러한 인증과 인가의 관계에 대해서 정리하자면 다음과 같다.
- 인증은 권한 부여 결정의 요소로 사용될 수 있다.
- 권한 부여는 인증을 하기에 유용하지 않다.
결론
인증과 인가는 시스템 보안을 강화하고 사용자의 액세스를 제어하는 데 필수적인 요소로,
시스템의 요구 사항, 보안 수준, 예산 등을 종합적으로 고려하여 적합한 인증 및 인가 모델을 선택해야 한다.
또한 정기적으로 시스템을 검토하고 업데이트하여 보안 취약점을 방지해야할 필요가 있다.
'CS' 카테고리의 다른 글
CI/CD(Continuous Integration/Continuous Deployment) (1) 2024.06.02 Docker? (0) 2024.05.30 JWT(JSON Web Token)? (0) 2024.05.11 OAuth란? (0) 2024.05.11 node.js 환경 vs 브라우저 환경 (1) 2024.01.10