Hadoop 보안 시스템
다량의 데이터를 저장/처리 하기 위해 다양한 주변 생태계 시스템이 잘 되어 있는것은 아마도 Hadoop이라고 생각한다. 단순히 HDFS를 사용하는 MapReduce만 가지고도 너무나 매력적이지만 여기에 HBase, Hive, Impala 등은 분석에 다양하게 활용 가능하다. 최근에 하둡의 생태계는 너무나 다양해서 그 수를 열거하기 보다는 간단하게 그림으로 한장 대신한다. (Hadoop과 연결하여 사용가능한 시스템들까지 범위에 일부 들어가 있는 그림이다. 실제로 Hadoop의 메인 컴포넌트와 연결되어 동작하는 솔루션까지 범위를 확장하면 엄청나게 많다.)
이렇게 멋진 데이터 플렛폼이지만 설치 해서 사용하다 보면 여러가지 보안적인 문제에 부딫히게 된다. 가령 예를 들어 사용자 인증 없이 전체 HDFS 파일에 접근이 가능하다거나 이로인해 보여지지 말아야 하는 정보에 타인이 접근하거나 하는 문제가 발생한다.
Hadoop에서 데이터에 대한 보안을 하는 방법은 주로 Kerberos를 이용한 방법이 많이 사용되고 있었고 아래와 같은 자료에서 찾아 볼수 있다.
https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SecureMode.html
다만 실제 데이터 노드에 대한 보안은 어떻게 할것인지, 마스터 노드와 Zookeeper는 어떻게 보호할 것인지에 대한 부분은 계정과 접근 제어를 하더라도 쉽게 풀리지 않는다. 실제로 데이터 노드에 데이터가 저장된다고 하더라도 이를 관리하는 마스터 노드와 Zookeeper는 가장 중요한 요소이므로 이를 잘 보호하고 구분 할수 있는 방법이 필요하고 데이터 노드 자체가 노출되었을 경우에는 전체를 다 본다는 가정하에 또한 위험 요소가 될 수 있다.
우선 Hadoop의 보안을 챙기면서 중요한 포인트를 알아 보자.. 일반적인 보안의 적용 포인트로 보아도 무방하다.
1 데이터의 보호 : 정확하게 인증과 권한이 설정되지 않을 경우 외부에 허가되지 않은 사용자가 데이터를 열람
2 감사 : 누가 언제 어떻게 데이터를 읽고 썼는지
3 인가 : 적절한 권한이 부여된 사용자에게만 연관된 데이터가 보여주어야함
4 인증 : 허가된 사용자만이 하둡의 데이터에 접근하고 하둡의 기능을 실행 할수 있는지.
5 관리 : 다양한 Hadoop의 요소들에 대한 관리
% 그렇다면 Apache Hadoop에서 위의 보안을 구현할 수 있는 방법에 대해서 알아 보겠다.
Hadoop의 여러가지 보안을 향상 시키면서 경계선의 개념을 도입하여 외부로 부터 하둡 인프라를 보호하고 인증, 액세스 단순화, 노출 제어 등을 할수 있게 해주는 오픈소스 인프라인 Apache Knox가 있다. 게이트웨이 방식으로 구축된다.
Apache Knox 게이트웨이는 클러스터의 Apache Hadoop 서비스에 대한 단일 인증 지점 및 액세스를 제공하는 시스템이다. 목표는 사용자 (즉, 클러스터 데이터에 액세스하고 작업을 실행하는 사람)와 운영자 (즉, 액세스를 제어하고 클러스터를 관리하는 사람) 모두에 대해 Hadoop 보안을 단순화하는 것이다. 게이트웨이는 하나 이상의 Hadoop 클러스터에 대한 중앙 집중식 액세스를 제공하는 서버 (또는 서버 클러스터)로 실행된다.
일반적인 Knox의 목표는 아래와 같다.
Hadoop REST API에 대한 경계 보안을 제공하여 Hadoop 보안을보다 쉽게 설정하고 사용할 수 있게함
경계선에서 인증 및 토큰 확인 제공
엔터프라이즈 및 클라우드 ID 관리 시스템과 인증 통합 가능
경계선에서 서비스 수준 인증 제공
Hadoop 클러스터의 REST API를 집계하는 단일 URL 계층 노출
Hadoop 클러스터에 액세스하는 데 필요한 네트워크 엔드 포인트 (따라서 방화벽 구멍) 제한
잠재적 인 공격자로부터 내부 Hadoop 클러스터 토폴로지 숨기기
위의 목표에 따른 구성도는 아래와 같이 구성이 된다.
또한 AWS의 아마존에서도 쉽게 구축이 가능하며 아래의 자료에서 찾을수 있다.
금번 글에서는 Knox가 어떠한 건지에 대한 개요만을 정리하였고 앞으로 직접 설치해 보고 정말 보안성을 높여주는지에 대해서 적어 보도록 하겠다.
% 테스트중.. ^^
https://aws.amazon.com/ko/blogs/korea/implement-perimeter-security-in-emr-using-apache-knox/
https://docs.cloudera.com/HDPDocuments/HDP2/HDP-2.6.1/bk_security/content/knox-gateway-overview.html
http://hortonworks.com/wp-content/uploads/2015/07/Security_White_Paper.pdf