Hadoop Eco 보안 사례
YARN은 Hadoop 시스템의 통일된 자원 관리 플랫폼으로, Hadoop 내 작업 스케줄링, 클러스터 리소스 관리를 위한 프레임워크입니다. YARN은 REST API를 호출하여 작업 실행 시, YARN의 기본 포트인 8088
포트를 오픈합니다. 이때 User는 dr.who로 설정되어 기본 작업이 실행됩니다.
이 과정에서 ACL은 확인하지 않으며, 따라서 외부 공격자는 공개된 8088
포트를 사용하여 서버에 실행 명령을 수행하고 악성 스크립트를 다운로드하는 등 악의적인 공격 을 할 수 있습니다.
User: dr.who로 기본 작업 실행
퍼블릭 클라우드에서 이용되는 모든 Hadoop Eco는 악의적인 외부 공격을 받을 수 있습니다.
따라서 REST API 호출을 아예 제한하거나, 또는 REST API 사용 시 적절한 보안 조치를 취해야 합니다.
Rest API 호출 제한하기
악의적인 외부 공격에 대응하기 위해 Rest API를 이용한 작업 실행을 제한할 수 있습니다. Hadoop Eco 2.10.1 버전부터 Rest API를 이용한 작업 제출을 제한하는 기능을 제공합니다. Hadoop Eco는 기본적으로 이 옵션을 true(기본값, REST API 호출을 허용)로 사용하고 있습니다.
-
Rest API 호출을 허용하지 않도록 설정하기 위해서는 /etc/hadoop/conf/yarn-site.xml 파일에서 yarn.webapp.enable-rest-app-submissions의 설정을 false로 수정 후 리소스 매니저를 재부팅해야 합니다.
Rest API 작업 실행 제한<property>
<name>yarn.webapp.enable-rest-app-submissions</name>
<value>false</value>
</property>파라미터 설명 yarn.webapp.enable-rest-app-submissions REST API 호출 허용 여부
-true
(기본값): 호출을 허용
-false
: 호출을 허용하지 않음 -
해당 옵션을 이용하여 작업 실행이 제한되면 Rest API를 이용하여 작업을 실행할 때 다음과 같은 메시지가 출력됩니다.
작업 실행 제한 옵션
REST API 사용 시, 보안 조치
REST API를 사용해야 하는 성황이라면, 보안 취약점이 발생하지 않도록 아래와 같이 대응하시기 바랍니다. 사용자가 작업 실행을 목적으로 REST API를 이용한 작업 실행을 사용해야 한다면 다음과 같은 대응 방법을 생각할 수 있습니다.
대응 방법 1. 8088 포트 비공개
첫 번째로 8088 포트를 외부로 오픈하지 않는 것입니다. Hadoop Eco는 기본적으로 퍼블릭 IP를 사용하지 않기 때문에 VM에 퍼블릭 IP를 지정하지 않으면 외부에서 접근할 방법이 없습니다. 다음과 같이 퍼블릭 IP를 지정하지 않으면 외부에서 접근할 수 없습니다.
-
카카오클라우드 콘솔 > Analytics > Hadoop Eco 메뉴로 이동합니다.
-
클러스터 목록에서 노드 목록을 작업 실행할 클러스터를 선택합니다.
-
노드 목록 탭을 클릭한 후, 해당 클러스터의 노드 목록을 확인합니다.
-
노드 목록에서 퍼블릭 IP가 비어 있는지 확인합니다.
노드 목록에서 퍼블릭 IP 확인