통합계정권한관리(IAM)
요즘들어 통합 계정관리 시스템을 재(?)구축 하는 사업이 심심치 않게 발주되고 있다. 매우 오래 전 부터 대기업과 금융기관들을 중심으로 구축된 통합계정관리시스템은 IT거버넌스 측면에서 수 많은 IT시스템을 개발하고 운영하는 와중에 발생하는 사용자 계정의 라이프사이클 관리의 어려움을 극복하기 위해 필히 갖추어야 하는 효과적인 계정 및 권한 관리 체계다.
통합계정관리시스템은 조직 내부에서 운영되는 시스템에 존재하는 모든 계정에 대한 라이프사이클과 계정을 통해 서비스 및 자원에 접근하는 행위를 적절하게 통제하여 보안성을 높이고 생산성을 관리할 수 있도록 해준다.
말은 참 쉽다.
하지만 대부분의 조직에서 기 구축된 통합계정관리 시스템을 효과적으로 사용하는 예는 매우 드물다. 통합계정관리 시스템을 통해 편의성과 보안성을 모두 얻어야 하지만 그렇지 못한 경우가 대부분 이다. 그 이유에 대해 이야기하자면 우리나라의 조직문화와 관리자의 마인드, 그리고 프로젝트관리에 대한 격한(?) 토론이 되기 때문에 왜 제대로 운영되지 못하는가는 이야기하지 않기로 한다.
두 종류의 통합 계정관리시스템
통합계정관리시스템은 크게 두가지로 구분된다.
먼저 IT부서가 아닌 일반 부서의 사용자들에게 부여되는 서비스 시스템의 계정에 대한 계정통합관리시스템이 있다.
이 통합계정관리시스템은 조직은 전 구성원이 사용하게 되며 인사시스템에 존재하는 모든 사용자와 1대N의 관계를 갖는다. 즉 한사람이 최소 하나 이상의 서비스애플리케이션에 계정을 갖고 있는 것이다. 최근에는 대부분 웹 애플리케이션이며 그룹웨어, ERP, CRM, Email 등의 서비스에 접속하기 위해 사용되는 계정을 통합관리하는 시스템이다. 당연이 싱글사인온(SSO)과 연동이 되어야 하며 대부분 AD(액티브디렉토리) 혹은 기타의 LDAP과 연계되어야 하는 시스템이다.
이 포스트에서 언급할 통합계정관리는 이 수준의 통합계정관리가 아닌 IT부서에서 운영중인 서버에 존재하는 서버 계정에 대한 통합계정관리다.
서버에 존재하는 계정을 통합관리해야하는 이슈는 몇년 전 발생한 농협의 보안사고로 다시 한번 크게 부각되었다. 당시 농협의 허술한 서버 계정에 대한 관리 그리고 270여대의 서버에서 일시에 삭제되기 시작한 파일에 대한 접근 권한 통제 미흡이 사고가 발생하는데 큰 기여(?)를 하였으며 겉으로는 “북한의 테러”로 결론을 내렸(?)지만 구체적으로 말하자면 “계정권한관리의 실패”로 귀결되었다.
당시 삭제된 파일들은 대부분 root 권한이나 DB관리자, 응용프로그램 관리자 계정의 권한이 있어야만 삭제할 수 있다. 결론적으로 말하자면 서버의 Super User 계정인 root의 권한으로 270여대의 서버에서 파일시스템을 “밀어~”버리는 명령을 실행하여 발생한 사고 였다.
이렇듯 적게는 수십대에서 많케는 일천대가 넘는 서버에 존재하는 특별한 권한을 가진 계정들에 대해 어떻게 보안을 강화하고 체계적인 권한관리를 하여야 하는가에 대한 고민이 최근(2012) 불기 시작한 제대로된 IAM(Identity and Access Management) 을 구축하려는 움직임으로 이어지고 있는 것이다.
IAM 구축에 필요한 것은?
이전까지 통합계정관리의 범위는 계정에 대한 라이프사이클의 범주를 벗어나지 않았다. 그 이유는 지금도 마찬가지지만 대부분의 IT 기획과 운영부서에서는 서버에 계정이 생성되고 해당 계정에 대한 패스워드 관리를 넘어서는 “서버내 계정의 서버 내부 활동에 대한 감시와 통제”에 대한 방법론을 알지 못하기 때문이다.
그래서 대부분의 보안 감사를 수행하는 감사인력들은 서버의 경우 “패스워드 통제”에 주요 포커스를 두고 감사를 수행한다. 서버 내의 운영체제 계정에 대해 패스워드의 복잡성을 제대로 적용하는지, 주기적인 패스워 변경을 하고 있는지, 관리자 계정의 비밀번호를 여러 사람이 공유하지는 않는지 등을 검사한다. (최근에 들어서야 서버 내에서 작업한 내용에 대한 상세한 작업 기록을 보관하는지를 검사하기 시작했다.)
그리고 아직까지 통제하지 못하는 것이 바로 서버에 생성된 계정에 대한 “서버 내부에서의 행위”에 대한 실시간 통제다. 이는 SecureOS를 설치하면 가능하다. 즉 IM솔루션과 서버보안SW가 연동되면 제대로된 IAM을 구축할 수있게 된다. 물론 IM솔루션과 서버보안SW를 제대로 연동하자면 솔루션의 설치만으로는 불가능하다.
제대로된 IAM을 구축하자면 최소한 IM솔루션과 서버보안SW가 필요하다. 그리고 추가적으로 필요한 것은 바로 “계정에 대한 관리 정책”이다.
IM솔루션과 서버보안SW가 있다 하더라도 서버에 root계정으로 직접 로그온한다던가 시스템관리자와 DB관리자 그리고 웹 관리자 및 응용프로그램관리자, 개발자 등의 역할을 명확하게 정의하고 구분하여 운영하지 못하고 시스템운영자와 개발자간의 파워게임이 심하거나 개발자가 root 계정, DBA계정을 마구 사용하는 등 권한분리가 되어 있지 않다면 제대로된 IAM 구축은 거의 불가능하다고 보는 것이 옳다.
즉 IAM을 구축하려면 먼저 내부 조직의 역할분리와 개인계정 사용의 생활화가 먼저 정착되어야 한다.
IAM 구축의 범위와 핵심
최근의 IAM 구축 사례를 보면 그 범위가 이전의 IM 구축 사례와는 차원이 다르다.
간단하게 그림으로 표시하면 다음과 같다.
전통적인 IM의 구축범위에 단점은 많지만 최근 유행하고 있는 서버접근제어 솔루션과 서버보안SW를 연계하여 IAM을 구축하는 형태가 주를 이루고 있다. (여기에는 많은 함정이 기다리고 있긴 하다.)
가장 중요한 것은 IM에 의해 서버에 계정이 만들어질 때 생성되는 계정에 대하여 서버내의 어떠한 자원에 대한 접근권한을 부여하거나 혹은 접근을 차단하도록 서버보안 정책을 설계하고 수립할 것인가 하는 점이다. 이 단계의 작업이 IAM 구축의 성패를 좌우한다고 해도 과언이 아니다.
계정에 대한 생성과 삭제까지의 라이프사이클을 관리하는 것은 지금까지 구축한 수많은 IM의 구현범위와 다를 바가 없는 것이다. 기존 IM의 범주에 서버보안SW의 파일접근 및 명령실행 통제 기능을 이용하여 계정 생성 시 자동으로 서버내의 파일에 대한 접근(읽기/수정/삭제/생성 등) 권한을 어떻게 자동화하여 적용할 것인가가 가장 중요한 포인트라 할 수 있다.
과연 제대로된 IAM의 구축에 성공하는 기업은 얼마나 될지..자못 궁금하다.