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

정보 보안의 핵심 개념, 권한 부여(Authorization)란 무엇일까?

권한 부여(Authorization)의 기본 개념

권한 부여(Authorization)는 특정 사용자가 어떤 작업을 수행할 수 있도록 허용하는 절차를 의미합니다. 쉽게 말해, 사용자가 특정 리소스에 접근할 권한이 있는지 확인하는 과정이며, 한 명의 사용자가 어떤 데이터와 정보에 접근할 수 있는지를 결정합니다.

권한 부여는 'AuthZ'라고도 불립니다. 일반적으로 인증(Authentication)과 함께 작동하여 시스템이 누가 정보에 접근하는지 파악할 수 있도록 돕습니다. 권한 부여는 컴퓨터 프로그램, 파일, 서비스, 데이터, 애플리케이션 기능과 같은 시스템 리소스와 관련된 사용자 또는 클라이언트의 권한과 접근 수준을 결정하는 보안 구조입니다.

인증과 권한 부여의 관계

권한 부여는 일반적으로 고객 신원 검증을 위한 인증 이후에 이루어집니다. 시스템 관리자(System Administrator, SA)는 일부 시스템 및 고객 리소스를 포괄하는 권한 수준을 할당받는 경우가 많습니다.

권한 부여 과정에서 시스템은 인증된 사용자의 접근 규칙을 확인한 뒤, 리소스 접근을 승인하거나 거부합니다. 현대적인 멀티유저 운영체제는 효율적으로 설계된 권한 부여 프로세스를 기반으로 애플리케이션 배포와 관리를 원활하게 지원합니다.

권한 부여 설계 시 고려해야 할 주요 요소

권한 부여를 설계할 때는 사용자 유형, 사용자 수, 검증이 필요한 자격 증명, 관련 작업 및 역할과 같은 핵심 요소들을 종합적으로 고려해야 합니다. 예를 들어, 역할 기반(role-based) 권한 부여는 특정 사용자 리소스 추적 권한이 필요한 사용자 그룹에 지정할 수 있습니다.

또한 권한 부여는 액티브 디렉터리(Active Directory, AD)와 같은 엔터프라이즈 인증 구조를 기반으로 구축되어 보안 정책을 원활하게 통합할 수도 있습니다. 예를 들어, ASP.NET은 IIS(Internet Information Server) 및 마이크로소프트 윈도우와 연동하여 인터넷 기반 .NET 애플리케이션을 위한 인증 및 권한 부여 서비스를 지원합니다.

NTFS와 ACL을 통한 접근 제어

윈도우는 NTFS(New Technology File System)를 활용하여 특정 리소스에 대한 ACL(Access Control List, 접근 제어 목록)을 지원합니다. ACL은 리소스 접근 여부를 최종적으로 결정하는 권위자 역할을 합니다. 아울러 .NET 프레임워크는 권한 부여를 지원하기 위한 대안으로 역할 기반 보안 방식도 함께 제공합니다.

역할 기반 보안은 서버 애플리케이션에 적합한 동적인 접근 방식으로, 코드 액세스 보안 검사와 유사하게 승인된 애플리케이션 사용자를 역할에 따라 판별합니다.

권한 부여 정책의 실제 사례

권한 부여 정책은 해당 신원(identity)이 무엇을 할 수 있는지를 명확히 규정합니다. 예를 들어, 은행의 모든 고객은 신원 정보(예: 사용자 이름)를 만들어 해당 은행의 온라인 서비스에 로그인할 수 있지만, 은행의 권한 부여 정책은 신원이 검증된 후 반드시 본인의 계좌만 온라인으로 접근할 수 있도록 보장해야 합니다.

권한 부여는 단순히 웹사이트나 회사 인트라넷 수준을 넘어 훨씬 더 세분화된 단계까지 적용될 수 있습니다. 개별 신원은 공통된 권한 부여 정책을 공유하는 신원 집합에 포함될 수 있습니다.

데이터베이스 권한 부여 예시

고객 구매 내역과 고객의 개인 정보 및 신용카드 정보를 모두 포함하는 데이터베이스가 있다고 가정해 봅시다. 판매자는 이 데이터베이스에 대한 권한 부여 정책을 수립하여, 마케팅 팀이 전체 고객 구매 내역에는 접근할 수 있지만 고객의 개인 정보와 신용카드 정보에는 접근하지 못하도록 설정할 수 있습니다. 이를 통해 마케팅 팀은 홍보하거나 할인 판매할 인기 상품을 안전하게 분석하고 선정할 수 있습니다.