엔지니어링

Elasticsearch 서버 침해를 차단하는 방법

기술 분야에 종사하는 분이라면 ‘서버 침해’라는 문구에 관심을 가져보신 적이 있으실 것입니다. 기술 분야와 관계가 없더라도 개인 데이터가 부정 행위자들의 손에 넘어가게 된 서버/데이터 침해 및 보안 허점에 대해 알고 계실 것입니다. 개인 데이터란 신용 정보와 주민등록번호, 그리고 다크웹이 아니라 혼자 간직하고 싶은 기타 정보가 될 수 있습니다.

모든 소프트웨어는 침해 또는 공격 가능성에 대비해야 합니다. 여기에는 Elastic에서 개발한 오픈 소스 소프트웨어 프로젝트인 Elasticsearch가 포함됩니다. Elasticsearch에 안전하게 저장되지 않은 데이터가 유출, 손실 또는 도난된 사례가 있습니다.

Elasticsearch 서버 침해를 차단하는 방법

이 게시물에서는 Elasticsearch의 맥락에서 침해가 어떻게 발생하며 사용자가 침해로부터 가장 효과적으로 보호할 수 있는 방법에 대해 설명합니다. 기본적인 내용부터 시작하겠지만 원하시면 Elasticsearch를 보호하는 방법 섹션으로 바로 이동하실 수 있습니다.

Elasticsearch란?

Elasticsearch는 오픈 소스 검색 및 분석 엔진이자 데이터 저장소로, 수억 번 다운로드되며 엄청난 인기를 누리고 있습니다. Elastic에서는 속도, 확장 및 검색 정확도를 강점으로 내세우지만, 사용 편의성, 모든 유형의 데이터(텍스트, 숫자, 위치 기반 정보 등)를 처리하는 능력, 강력한 기능 세트, 누구나 버그 수정 사항을 제출하거나 개선 사항을 제안할 수 있다는 점(오픈 소스이기에 가능) 또한 광범위한 도입에 크게 기여했습니다.

비기술적 관점에서 설명하자면, 수십억 개의 행이 있는데도 불구하고 순식간에 원하는 것을 찾거나 계산할 수 있는 스프레드시트를 상상해 보세요. Elasticsearch가 바로 이러한 스프레드시트와 같습니다. Elasticsearch는 그 기능이 뛰어나기 때문에 많은 기업이 전자 상거래 사이트에서 검색을 지원하거나 화성 탐사 로봇이 보내온 데이터를 분석하거나 공유 차량이 제시간에 나타나도록 하는 등 각종 작업에 Elasticsearch를 사용합니다.

Elastic이란? 내 데이터를 가지고 있나요?

Elastic은 Elastic Stack의 다른 제품(Kibana, Beats, Logstash 등)과 더불어 Elasticsearch를 개발한 회사입니다. Elasticsearch는 Search, Observability, Security 등을 비롯하여 다양한 솔루션의 중추 역할을 합니다.

간단한 답변은 “아니요”입니다. Elastic은 고객의 데이터를 가지고 있지 않습니다. Elastic은 다른 기업이 로컬로 실행하거나 클라우드 인프라 내에서 실행하는 Elasticsearch를 개발합니다. 

조금 더 긴 답변은 “아마도”입니다. 일부 기업은 관리형 Elasticsearch 제품인 Elastic Cloud를 사용합니다. Elastic에는 고객이 Elastic Cloud에 저장하는 데이터를 유지 관리할 책임이 있으며 여기에는 데이터를 안전하게 유지하는 것도 포함됩니다. 이것이 당사의 모든 Elasticsearch Service 배포에서 기본적으로 보안을 제공하는 이유입니다.

Elasticsearch는 데이터를 어디에 보관하나요?

Elasticsearch는 오픈 소스이므로(즉, 누구나 무료로 다운로드하여 설치할 수 있음) 거의 모든 곳에 설치할 수 있습니다. 일부 기업은 사내 서버에 다운로드하여 설치하고 다른 기업은 원하는 서비스 제공자의 클라우드에 다운로드하여 설치합니다. 또한 Elasticsearch의 관리형 버전을 제공하는 클라우드 서비스 제공자도 있습니다. 다시 말해 이러한 제공자는 고객을 위해 Elasticsearch 클러스터(Elastic에서 부르는 명칭)를 호스팅하고 관리합니다. 

사실 Elastic에서도 Elastic Cloud의 관리형 Elasticsearch Service를 제공합니다. 관리형 Elasticsearch Service에서는 기본적으로 보안을 비롯하여 포괄적인 관리 서비스를 제공하며 고객은 여러 클라우드 서비스 제공자 중에서 인프라를 선택할 수 있습니다.

Elasticsearch 서버는 어떻게 침해를 당하나요?

데이터 저장소 침해는 비밀번호 도난부터 해커, 불만을 품은 직원까지 다양한 방식으로 이루어집니다. Elasticsearch의 경우 가장 흔한 유형의 침해는 보안이 적용되지 않은 상태로 클러스터가 인터넷에 노출될 때 발생합니다. 즉, 사용자 이름이나 비밀번호 없이 누구나 연결하여 데이터에 액세스할 수 있을 때 발생합니다. 이러한 개방형 클러스터는 보안 연구원들이 발견하여 ‘세상이 인터넷에 남겨진 데이터를 알아내는 방법’에 대한 연구 결과로 발표하는 경우가 많습니다.

제대로 보호한다면 Elasticsearch 클러스터가 다른 데이터베이스보다 침해 위험이 높을 이유는 없습니다. 따라서 Elastic에서는 Elastic Stack을 다운로드하여 사용하는 모든 사용자가 Elasticsearch 클러스터를 보호하는 데 필요한 기능을 무료로 기본 제공합니다. 그렇다면 Elasticsearch 사용자가 이러한 기능을 사용하고 클러스터를 안전하게 유지하기 위해 수행할 수 있는 몇 가지 항목을 살펴보겠습니다.

Elasticsearch를 어떻게 보호하나요?

Elastic에서는 Elasticsearch 보안 기능을 무료 기본 배포(기본 플랜)에 포함하여 제공합니다. 즉, 누구나 Elasticsearch 클러스터에 대한 보안을 구성하고 실수로 인한 데이터 유출을 방지할 수 있습니다. 이러한 기능을 사용하는 방법을 살펴보기 전에 먼저 클러스터에 이미 보안이 적용되었는지 확인하는 방법을 살펴보겠습니다.

보안이 적용되지 않은 Elasticsearch 클러스터가 있는지 확인하려면 어떻게 해야 하나요?

Elasticsearch 사용자 또는 관리자라면 보안이 활성화되어 작동 중인지 확인할 수 있는 몇 가지 간단한 방법이 있습니다. 

보안이 활성화되어 작동 중인지 확인하는 가장 좋은 방법은 설정 API를 쿼리하는 것입니다. 다음 쿼리를 실행하면,

GET _xpack/usage?filter_path=security

보안이 비활성화된 경우 다음과 같은 결과를 표시됩니다.

{ 
  "security" : { 
    "available" : true, 
    "enabled" : false, // 보안이 비활성화된 경우 “false”로 설정됨 
    "ssl" : { 
      "http" : { 
        "enabled" : false 
      }, 
      "transport" : { 
        "enabled" : false 
      } 
    } 
  } 
}

보안이 예상대로 작동 중인 경우 다음과 같이 표시됩니다.

{ 
  "security" : { 
    "available" : true, 
    "enabled" : true, // 보안이 활성화된 경우 “true”로 설정됨
    "realms" : { ... }, 
    "roles" : { ... }, 
    "role_mapping" : { ... }, 
    "ssl" : { 
      "http" : { 
        "enabled" : true 
      }, 
      "transport" : { 
        "enabled" : true 
      } 
  }, 
  "token_service" : { ... }, 
  "api_key_service" : { ... }, 
  "audit" : { ... }, 
  "ipfilter" : { ... }, 
  "anonymous" : { ... } 
  } 
}

두 결과가 상당히 다르다는 것을 알 수 있습니다. 배포한 버전과 라이선스 수준에 따라 결과가 약간 다를 수도 있습니다.

Elasticsearch 클러스터가 안전한지 확인하려면 어떻게 해야 하나요?

외부인이 Elasticsearch 클러스터에 액세스할 수 없도록 하는 가장 쉬운 방법 두 가지는 다음과 같습니다.

  1. 인증을 활성화하여 Elasticsearch에 로그인하지 않고는 누구도 액세스할 수 없도록 합니다.
  2. TLS를 활성화하여 고객의 네트워크를 통해 이동하는 Elasticsearch 데이터를 누구도 도청하지 못하게 합니다.

위의 두 가지 권장 사항을 손쉽게 구현하는 방법을 비롯하여 Elasticsearch를 보호하는 방법을 설명하는 유용한 리소스들이 아래 나열되어 있습니다. 하지만 가장 빠른 보안 방법은 Elasticsearch 보안 시작하기(TLS 및 RBAC) 블로그와 7분 만에 Elasticsearch 보호라는 관련 동영상을 확인하는 것입니다.

또한 Elastic Cloud의 Elasticsearch Service에는 이 모든 기능을 사용할 수 있는 간단한 버튼이 있습니다. Elasticsearch Service를 사용하면 모든 클러스터에 보안이 자동으로 구성되어 제공됩니다.

보안에는 팀워크가 필요

질문이 있으시다면 언제든 문의해 주세요. 포럼, 현지 이벤트, 수많은 설명서(위의 링크보다 훨씬 더 많음) 등 Elastic 커뮤니티에 참여할 수 있는 여러 가지 방법이 있습니다. 또한 Elastic에서는 Elasticsearch 보안을 그 어느 때보다 더 쉽게 구현할 수 있도록 항상 노력하고 있습니다. 블로그를 통해 보안과 관련한 새로운 소식이나 Elastic에서 진행하는 일들을 계속 확인하시기 바랍니다. 스파이더맨의 팬이라면 “큰 힘에는 큰 책임도 따른다”는 말을 기억하실 것입니다. 이는 Elastic과 더불어 Elasticsearch를 사용하여 데이터를 저장하는 모든 사용자에게 적용됩니다.

Elasticsearch 보안 유지를 위한 추가 리소스

블로그

동영상

설명서

교육