13. 보안 연결 설정

아이펀 디플로이 는 서버와의 통신 중 고객 정보를 보호하기 위한 보안 연결 설정을 지원합니다. 이 페이지에서는 아이펀 디플로이 와 고객 서버 간 보안 연결 설정법을 소개합니다.

아이펀 디플로이 는 다음 두 가지 채널로 고객 서버와 통신합니다.

API 엔드포인트(HTTP/HTTPS 프로토콜)
아이펀 디플로이 가 고객의 API 엔드포인트로 ‘디플로이 연동 API’ 호출 시 사용합니다. 게임 유저 관리, 이벤트 관리, 사용자 정의 기능 등의 기능을 구현할 때 필요합니다.
게임 로그 MongoDB(MongoDB 프로토콜)
아이펀 디플로이 가 게임 로그 MongoDB 에 쿼리를 요청할 때 사용합니다. 게임 로그 검색, 통계 수치를 추출하기 위한 raw 데이터 확보를 위해 필요합니다.

안전한 아이펀 디플로이 연동을 위해서는 위에서 언급한 두 가지 프로토콜 모두에 대한 보안 설정을 해 주셔야 합니다. 아이펀 디플로이 는 두 프로토콜에 대해 널리 알려진 표준적인 방법으로 보안 연결을 지원합니다.

13.1. API 엔드포인트 보안 연결 설정

API 엔드포인트 보안 연결 설정을 위해서는 다음 설정이 필요합니다.

  • 대시보드에서 디플로이먼트 생성 또는 설정 시 API 엔드포인트 URL을 https://... 로 지정 및 ID, 암호 입력
  • 고객 서버가 HTTPS 연결을 지원하도록 설정하고 ID, 패스워드 를 검사하도록 설정

아이펀 디플로이 대시보드 디플로이먼트 생성 및 설정에 대해서는 디플로이먼트 생성 항목과 디플로이먼트 설정 항목에서 자세하게 언급하였습니다. 여기서는 고객 서버가 보안 연결을 지원하기 위한 방안을 살펴보겠습니다.

13.1.1. 고객 서버 보안 연결 설정

고객 서버가 HTTP 의 보안 버전인 HTTPS 를 지원하는 방법은 크게 두 가지로 나눌 수 있습니다.

  • ‘디플로이 연동 API’ 서버가 HTTPS 및 basic auth 를 지원하도록 구현
  • HTTPS -> HTTP 프록싱 기능 및 basic auth 를 지원하는 프록시 서버를 설정한 후 고객사 서버와 연동

이미 HTTPS 와 basic auth 를 지원하도록 서버를 개발하셨다면, 별다른 추가작업 없이 바로 보안 연결을 사용하실 수 있습니다. 그러나 일반적으로 HTTPS 자체 구현은 HTTP 를 구현하는 것보다 복잡합니다. API 서버는 HTTP 로 구현하고, 앞 단에 HTTPS 를 지원하는 프록시를 추가 설정하는 경우가 일반적입니다.

13.1.2. 프록시 서버 선택

프록시 서버는 운영 환경에 따라 다양합니다. 아래 두 가지 기능만 지원한다면, 이미 사용 중인 상용 솔루션이나 익숙하신 오픈 소스 솔루션을 사용하실 수 있습니다.

  • HTTPS -> HTTP 프록싱 기능
  • HTTP basic auth 기능

여러 환경에서 널리 사용 중인 오픈 소스 솔루션에는 Nginx, HAProxy, sTunnel, Apache HTTP server 등이 있습니다. RHEL, Centos, Ubuntu 같은 주류 Linux 배포본에서는 쉽게 설치해서 사용하실 수 있습니다.

13.1.3. 프록시 서버 설치

운영 환경에 맞게 프록시 서버를 설치해 주세요. 고객 서버의 사양이 넉넉하다면 같은 서버에 리버스 프록시 서버를 설치하셔도 무방합니다. 만약 고객 서버와 프록시 서버를 서로 다른 서버에 운영하실 예정이라면, 두 서버 간 통신은 반드시 내부 네트워크를 통해야 합니다. 프록시 서버를 통과한 이후의 트래픽은 평문 텍스트이기 때문에 제 3자가 내용을 쉽게 알아볼 수 있습니다.

Note

리버스 프록시 설치에 대한 자세한 과정 및 내용은 해당 페이지 외 리버스 프록시 공식 문서 및 가이드를 참고해 주세요.

13.1.4. 프록시 서버 HTTPS 설정

HTTPS 설정을 위해서는 아래의 과정이 필요합니다.

  1. SSL/TLS 인증서 발급
  2. 발급한 인증서로 프록시 서버 HTTPS 설정

공식적인 SSL/TLS 인증서는 SSL/TLS 인증을 대행하는 공인 인증 기관으로부터 특정 공개 도메인 이름에 대한 소유권을 확인받은 후, 인증서 파일을 유료로 발급받습니다. 이런 과정을 통해 인증서를 발급받기 위해서는 특정 공개 도메인에 대한 소유권이 필요합니다.

그러나 이러한 과정을 통해 공식 SSL 인증서를 발급받는 것은 번거롭습니다. 실제 고객에게 제공하는 서비스가 아닌, 내부 운영을 위해 필요한 경우 더욱 그렇습니다.

아이펀 디플로이 는 이러한 번거로움을 줄이고, 사용자 편의를 제공하기 위해 공식적인 SSL/TLS 인증서뿐만 아니라, self-signed SSL/TLS 인증서도 허용합니다. self-signed SSL/TLS 인증서는 공개된 도구를 통해 누구나 쉽게 생성가능하므로 보안 연결을 구성하는데 부담을 감소시켜 줍니다.

Caution

self-signed 인증서는 일반적으로는 보안상 문제가 될 수 있으므로 실제 운영 사이트에는 사용을 권장하지 않습니다. 그러나 iFun Deploy 는 SSL 을 암호화 용도로만 사용하고, 상호 인증을 위해서는 사용하지 않습니다. 또한, 인증을 위해서는 ID와 패스워드를 별개로 요구하기 때문에 self-signed 인증서가 보안을 저해하지 않습니다.

아이펀 디플로이 보안 채널을 위한 SSL 인증서는 공인 인증 기관으로부터 직접 구매하시거나, self-signed 인증서를 스스로 생성하셔도 무방합니다.

Note

SSL 인증서를 구매하는 법 또는 self-signed 인증서 생성법에 대한 내용은 해당 페이지 외 외부 자료를 참고해 주세요.

생성한 인증서를 이용해서 HTTPS 엔드포인트를 설정합니다. 아이펀 디플로이 가 외부 네트워크를 통해 해당 엔드포인트로 접속 가능해야 합니다. 해당 엔드포인트로 받은 요청을 HTTP 로 변경해서 고객님께서 직접 구현한 디플로이 연동 API 서버로 중개하도록 설정합니다.

Note

해당 설정은 소위 SSL termination proxy 로 불리는 방식으로 일반적으로 널리 알려져 있습니다. 특정 솔루션으로 설정하는 방법은 해당 페이지 외 솔루션 문서 및 기술 지원을 참고해 주세요.

13.1.5. 프록시 서버 HTTP basic auth 설정

아이펀 디플로이 는 HTTPS 로 설정한 경우 ID 와 암호 설정을 강제합니다. 그리고 고객 디플로이 연동 API 서버로 요청할 때 항상 ID 와 암호 인증 정보를 첨가해서 전송합니다. 디플로이 연동 API 서버는 대시보드를 통해 설정한 ID와 암호를 확인하도록 설정해야 합니다. 잘못된 인증 정보를 보내거나 인증 정보가 없는 경우 보안을 위해 요청을 거부해야 합니다. 인증 정보가 정확하지 않은 경우 해당 요청을 아이펀 디플로이 에서 보낸 것이 아니기 때문입니다.

Danger

아이펀 디플로이가 전송한 인증 정보를 무시해도 시스템은 동작합니다. 그러나 이 경우 보안상 심각한 문제가 발생할 수 있습니다.

아이펀 디플로이 가 사용하는 인증 방식은 가장 기본적인 HTTP basic auth 방식입니다. 해당 방식의 인증을 프록시 서버에 설정하고 ID, 패스워드를 설정해 주어 기본적인 API 엔드포인트 보안 설정을 마무리합니다.

Note

특정 솔루션으로 HTTP basic auth 를 설정하는 것은 해당 페이지 외 솔루션 문서 및 기술 지원을 참고해 주세요.

13.2. 게임 로그 MongoDB 보안 연결 설정

아이펀 디플로이 는 게임 유저 로그 및 통계용 로그 검색을 위해 MongoDB 를 사용합니다. 아이펀 디플로이 와 고객 로그 MongoDB 간 통신에서 외부 네트워크를 사용하기 때문에 해당 연결의 보안 설정이 필요합니다.

MongoDB 보안 연결 설정은 다음과 같은 작업이 필요합니다.

  • SSL/TLS 인증서 발급
  • MongoDB SSL/TLS 설정 활성화
  • MongoDB ID, 패스워드 인증 활성화
  • 로그 DB 용 유저 생성 및 권한 부여

13.2.1. SSL/TLS 인증서 발급

SSL/TLS 설정을 활성화 하기 위해서 API 엔드포인트와 마찬가지로 SSL/TLS 인증서를 발급 받아야 합니다. 발급 방식은 API 엔드포인트와 같으므로 프록시 서버 HTTPS 설정 항목을 참고해 주세요.

Caution

API 엔드포인트 보안 설정과 같은 이유로 self-signed 인증서도 허용합니다. 자세한 내용은 프록시 서버 HTTPS 설정 항목을 참고해 주세요.

13.2.2. MongoDB SSL/TLS 설정 활성화

발급받은 SSL/TLS 인증서를 이용해 MongoDB SSL/TLS 설정을 활성화합니다.

Note

자세한 설정법은 해당 페이지 외 MongoDB 공식 문서 https://docs.mongodb.com/manual/tutorial/configure-ssl/ 를 참고해서 설정해 주세요.

13.2.3. MongoDB 인증 활성화

기본 설정에서 MongoDB 는 인증 기능이 비활성화되어 있습니다. 우선 인증 기능을 활성화해야 합니다.

Note

자세한 설정법은 해당 페이지 외 MongoDB 공식 문서 https://docs.mongodb.com/manual/tutorial/enable-authentication/#procedure 를 참고해서 설정해 주세요.

13.2.4. 로그 DB 용 유저 생성 및 권한 부여

디플로이 생성 시 설정한 ID, 암호를 이용해 MongoDB 사용자를 생성합니다. 해당 MongoDB 사용자가 로그 디비에 접근할 수 있도록 권한을 부여합니다.

Note

자세한 설정법은 해당 페이지 외 MongoDB 공식 문서 https://docs.mongodb.com/manual/tutorial/enable-authentication/#create-additional-users-as-needed-for-your-deployment 를 참고해 주세요. 해당 문서에 나온 방법으로 유저 생성 및 권한 부여를 진행하시면 됩니다.

13.3. ACL 설정에 필요한 IP 정보

아이펀 디플로이에서는 다음 IP 에서 API Endpoint 및 게임 로그 MongoDB 에 접근합니다. 보안 등의 이유로 ACL을 설정하실 때 참고하시기 바랍니다.

  • API Endpoint로 접근하는 IP 목록
    • 13.124.93.74
    • 13.124.146.40
    • 52.78.214.222
  • 게임 로그 MongoDB로 접근하는 IP 목록
    • 13.124.93.74
    • 13.124.146.40
    • 13.125.148.159
    • 13.125.108.238