Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

정보 보안 필수 개념: 인증(Authentication)과 권한 부여(Authorization) 완벽 비교


인증(Authentication)이란?

인증은 어떤 개인이 스스로 주장하는 신원이 실제 본인인지 확인하는 절차입니다. 이 과정에서는 신분증이나 고유 ID 번호와 같은 자격 증명(credential)을 통해 주장된 신원을, 해당 자격 증명에 연결된 하나 이상의 인증 요소(authentication factor)와 대조하여 검증합니다.

쉽게 말해 인증은 사용자 이름(User Name/User ID)과 비밀번호 같은 자격 증명을 검증하여 신원을 확인하는 작업입니다. 시스템은 제출된 자격 증명을 바탕으로 사용자가 실제로 주장하는 그 사람인지 판단합니다.

공용 네트워크든 사설 네트워크든, 시스템은 로그인 비밀번호를 통해 사용자의 신원을 인증합니다. 인증은 일반적으로 사용자 이름과 비밀번호 조합으로 이루어지며, 경우에 따라 생체 인식이나 OTP(일회용 비밀번호) 같은 추가적인 인증 요소와 함께 적용되기도 합니다.

인증 요소는 시스템이 사용자의 신원을 확인하기 위해 활용하는 요소들을 의미합니다. 단순한 문서 열람부터 은행 거래 요청까지, 어떤 형태의 접근이 허용되기 전에 반드시 거쳐야 하는 절차라고 할 수 있습니다.

권한 부여(Authorization)란?

권한 부여는 사용자 또는 클라이언트가 시스템 리소스에 대해 가지는 권한이나 접근 수준을 결정하는 보안 체계입니다. 여기서 시스템 리소스에는 컴퓨터 프로그램, 파일, 서비스, 정보, 애플리케이션 기능 등이 포함됩니다.

권한 부여 정책(authorization policy)은 특정 신원이 무엇을 할 수 있는지를 명시합니다. 예를 들어, 은행의 모든 고객은 사용자 이름과 같은 신원(identity)을 만들어 온라인 뱅킹 서비스에 로그인할 수 있습니다. 하지만 은행의 권한 부여 정책은 신원이 검증된 고객이라도 오직 자신의 계좌에만 온라인으로 접근할 수 있도록 제한해야 합니다.

권한 부여는 웹사이트나 사내 인트라넷 수준보다 훨씬 세분화된 방식으로 적용할 수 있습니다. 하나의 개별 신원은 동일한 권한 부여 정책을 공유하는 신원 집합에 속할 수도 있습니다.

예를 들어, 고객의 구매 내역과 고객의 개인 정보 및 신용카드 정보를 모두 담고 있는 데이터베이스가 있다고 가정해 보겠습니다.

마케팅팀은 인기 상품을 파악해 프로모션이나 할인 행사를 기획해야 하므로, 마케터는 고객 구매 데이터에는 접근할 수 있지만 고객의 개인 정보와 신용카드 정보에는 접근할 수 없도록 권한 부여 정책을 설계할 수 있습니다.

인증 vs 권한 부여 비교

인증(Authentication)권한 부여(Authorization)
사용자를 식별하여 시스템 접근을 가능하게 하는 절차입니다.
리소스에 대한 접근 권한을 부여하는 절차입니다.
사용자가 주장하는 신원이 실제 본인인지 판단합니다.
사용자가 무엇에 접근할 수 있고 없는지 판단합니다.
인증 자격 증명(비밀번호 등)은 사용자가 필요에 따라 일부 수정할 수 있습니다.
권한은 사용자가 임의로 수정할 수 없습니다. 권한은 시스템 소유자나 관리자가 부여하며, 오직 관리자만 변경할 수 있습니다.
일반적으로 사용자 이름과 비밀번호가 필요합니다.
필요한 인증 요소는 요구되는 보안 수준에 따라 달라집니다.
데이터는 토큰 ID(Token ID)를 통해 처리됩니다.
데이터는 액세스 토큰(access token)을 통해 처리됩니다.

마무리

요약하면, 인증은 "당신이 누구인가?"라는 질문에 답하고, 권한 부여는 "당신이 무엇을 할 수 있는가?"라는 질문에 답합니다. 두 개념은 서로 다르지만 밀접하게 연관되어 있으며, 안전한 시스템을 구축하기 위해서는 반드시 함께 고려되어야 합니다.