문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

보안 체크리스트

이 문서에서는 MongoDB 설치를 보호하기 위해 구현해야 하는 보안 조치 목록을 제공합니다. 이 목록은 포괄적인 의미로 작성되었습니다.

  • Access Control(액세스 제어)을 활성화하고 인증 메커니즘을 지정합니다.

    MongoDB 커뮤니티는 클라이언트가 자신의 신원을 확인하는 데 사용할 수 있는 다양한 인증 메커니즘을 지원합니다.

    위의 메커니즘 외에도 MongoDB Atlas 및 MongoDB Enterprise는 다음 메커니즘을 지원합니다.

    이러한 메커니즘을 통해 MongoDB를 귀하의 기존 인증 시스템에 통합할 수 있습니다.

다음도 참조하세요.

  • 가장 먼저 사용자 관리자를 생성한 다음 사용자를 추가로 생성합니다. 시스템에 액세스하는 각 개인/애플리케이션에 대해 고유한 MongoDB 사용자를 생성합니다.

  • 최소 권한 원칙을 따릅니다. 사용자에게 필요한 정확한 액세스 권한을 정의하는 역할을 만듭니다. 그런 다음 사용자를 생성하고 작업을 수행하는 데 필요한 역할만 할당합니다. 사용자는 개인일 수도 있고, 클라이언트 애플리케이션일 수도 있습니다.

    참고

    사용자는 다양한 데이터베이스에 대한 권한을 가질 수 있습니다. 사용자에게 여러 데이터베이스에 대한 권한이 필요한 경우 다양한 데이터베이스에서 사용자를 여러 번 생성하는 대신 해당 데이터베이스 권한을 부여하는 역할을 가진 단일 사용자를 생성하세요.

  • 모든 수신 및 발신 연결에 TLS/SSL을 사용하도록 MongoDB를 구성합니다. MongoDB deployment의 mongodmongos 구성 요소 간의 통신은 물론, 모든 애플리케이션과 MongoDB 간의 통신을 TLS/SSL을 사용하여 암호화합니다.

    MongoDB는 네이티브 TLS/SSL OS 라이브러리를 사용합니다.

    플랫폼
    TLS/SSL 라이브러리
    Windows
    보안 채널(Schannel)
    Linux/BSD
    OpenSSL
    macOS
    보안 전송
  • WiredTiger 스토리지 엔진의 네이티브 미사용 데이터 암호화를 사용하여 스토리지 계층의 데이터를 암호화할 수 있습니다.

  • WiredTiger의 미사용 데이터 암호화를 사용하지 않는 경우, 파일 시스템, 장치 또는 물리적 암호화(예: dm-crypt)를 사용하여 각 호스트에서 MongoDB 데이터를 암호화해야 합니다. 또한 파일 시스템 권한을 사용하여 MongoDB 데이터를 보호해야 합니다. MongoDB 데이터에는 데이터 파일, 구성 파일, 감사 로그, 키 파일이 포함됩니다.

  • Queryable Encryption 또는 클라이언트 측 필드 수준 암호화를 사용하여 유선을 통해 서버로 데이터를 전송하기 전에 문서 애플리케이션 측의 필드를 암호화할 수 있습니다.

  • 중앙 로그 저장소에 로그를 수집합니다. 이러한 로그에는 소스 IP 주소를 포함한 데이터베이스 인증 시도가 포함되어 있습니다.

  • MongoDB가 신뢰할 수 있는 네트워크 환경에서 실행되는지 확인하고 MongoDB 인스턴스의 인바운드 및 아웃바운드 트래픽을 제어하도록 방화벽 또는 보안 그룹을 구성합니다.

  • 다이렉트 SSH 루트 액세스를 비활성화합니다.

  • 신뢰할 수 있는 클라이언트만 MongoDB 인스턴스를 사용할 수 있는 네트워크 인터페이스 및 포트에 액세스할 수 있도록 허용합니다.

다음도 참조하세요.

  • 데이터베이스 구성 및 데이터에 대한 액세스 및 변경 사항을 추적합니다. MongoDB Enterprise 에는 MongoDB 인스턴스에서 시스템 이벤트(사용자 작업 및 연결 이벤트 포함)를 기록할 수 있는 시스템 감사 기능이 포함되어 있습니다. 이러한 감사 기록을 통해 포렌식 분석이 가능하고 관리자가 적절한 제어를 수행할 수 있습니다. 인증 이벤트와 같은 특정 이벤트만 기록하도록 필터를 설정할 수 있습니다.

다음도 참조하세요.

  • 전용 시스템 사용자 계정으로 MongoDB 프로세스를 실행합니다. 계정에 데이터에 액세스할 수 있는 권한이 있지만 불필요한 권한은 없는지 확인합니다.

다음도 참조하세요.

  • MongoDB는 mapReduce, $where, $accumulator$function 등 특정 서버 측 작업에 대한 JavaScript 코드 실행을 지원합니다. 이러한 작업을 사용하지 않는 경우 --noscripting 옵션을 사용하여 서버 측 스크립팅을 비활성화합니다.

  • 입력 유효성 검사를 활성화된 상태로 유지합니다. MongoDB는 net.wireObjectCheck 설정을 통해 기본적으로 입력 유효성 검사를 활성화합니다. 이렇게 하면 mongod 인스턴스에 저장된 모든 문서가 유효한 BSON이 됩니다.

  • STIG(보안 기술 구현 가이드)에는 미국 국방부 내 배포에 대한 보안 지침이 포함되어 있습니다. MongoDB Inc.는 요청 시 STIG를 제공합니다.

  • HIPAA 또는 PCI-DSS 규정 준수가 필요한 애플리케이션의 경우, MongoDB의 주요 보안 기능을 사용하여 규정 준수 애플리케이션 인프라를 구축하는 방법에 대해 자세히 알아보려면 MongoDB 보안 참조 아키텍처 를 참조하세요.

바이러스 백신(AV) 스캐너 또는 엔드포인트 탐지 및 대응(EDR) 스캐너를 사용하는 경우 database storage pathdatabase log path를 검사에서 제외하도록 스캐너를 구성하세요.

database storage path의 데이터 파일이 압축됩니다. 또한 암호화된 스토리지 엔진을 사용하는 경우 데이터 파일도 암호화됩니다. 이러한 파일을 스캔하는 데 드는 I/O 및 CPU 비용은 보안상의 이점 없이 성능을 크게 저하시킬 수 있습니다.

database storage pathdatabase log path에서 디렉토리를 제외하지 않으면 스캐너가 중요한 파일을 격리하거나 삭제할 수 있습니다. 파일이 누락되거나 격리되면 데이터베이스가 손상되고 MongoDB 인스턴스가 충돌할 수 있습니다.

  • 주기적으로 MongoDB 제품 CVE 를 확인하고 제품을 업그레이드합니다.

  • MongoDB 수명 종료 날짜 를 참조하고 필요에 따라 MongoDB 설치를 업그레이드합니다. 일반적으로 최신 버전을 유지하는 것이 좋습니다.

  • 다음을 수행하는 것을 포함하여 정보 보안 관리 시스템 정책 및 절차가 MongoDB 설치까지 적용이 확장되는지 확인하세요.

    • 머신에 주기적으로 패치를 적용하세요.

    • 정책/절차 변경, 특히 네트워크 규칙의 변경 사항을 검토하여 MongoDB가 실수로 인터넷에 노출되는 것을 방지하세요.

    • MongoDB database 사용자를 검토하고 주기적으로 교체합니다.

MongoDB 제품에서 보안 버그를 발견했다고 의심되는 경우 MongoDB 버그 제출 양식 을 통해 문제를 신고해 주세요.

← 보안