자체 관리형 배포를 위한 보안 체크리스트
이 문서에서는 MongoDB 설치를 보호하기 위해 구현해야 하는 보안 조치 목록을 제공합니다. 이 목록은 포괄적인 의미로 작성되었습니다.
사전 제작 체크리스트/고려 사항
➤ 액세스 제어 활성화 및 인증 적용
➤ 역할 기반 액세스 제어 구성
가장 먼저 사용자 관리자를 생성한 다음 사용자를 추가로 생성합니다. 시스템에 액세스하는 각 개인/애플리케이션에 대해 고유한 MongoDB 사용자를 생성합니다.
최소 권한 원칙을 따릅니다. 사용자에게 필요한 정확한 액세스 권한을 정의하는 역할을 만듭니다. 그런 다음 사용자를 생성하고 작업을 수행하는 데 필요한 역할만 할당합니다. 사용자는 개인일 수도 있고, 클라이언트 애플리케이션일 수도 있습니다.
참고
사용자는 다양한 데이터베이스에 대한 권한을 가질 수 있습니다. 사용자에게 여러 데이터베이스에 대한 권한이 필요한 경우 다양한 데이터베이스에서 사용자를 여러 번 생성하는 대신 해당 데이터베이스 권한을 부여하는 역할을 가진 단일 사용자를 생성하세요.
➤ 통신 암호화(TLS/SSL)
➤ 데이터 암호화 및 보호
WiredTiger 스토리지 엔진의 네이티브 미사용 데이터 암호화를 사용하여 스토리지 계층의 데이터를 암호화할 수 있습니다.
WiredTiger의 미사용 데이터 암호화를 사용하지 않는 경우, 파일 시스템, 장치 또는 물리적 암호화(예시: dm-crypt)를 사용하여 각 호스트에서 MongoDB 데이터를 암호화해야 합니다. 또한 파일 시스템 권한을 사용하여 MongoDB 데이터를 보호해야 합니다. MongoDB 데이터에는 데이터 파일, 구성 파일, 감사 로그, 키 파일이 포함됩니다.
Queryable Encryption 또는 클라이언트 측 필드 레벨 암호화를 사용하여 유선을 통해 서버로 데이터를 전송하기 전에 문서 애플리케이션 측의 필드를 암호화할 수 있습니다.
중앙 로그 저장소에 로그를 수집합니다. 이러한 로그에는 소스 IP 주소를 포함한 데이터베이스 인증 시도가 포함되어 있습니다.
➤ 네트워크 노출 제한
MongoDB가 신뢰할 수 있는 네트워크 환경에서 실행되는지 확인하고 MongoDB 인스턴스의 인바운드 및 아웃바운드 트래픽을 제어하도록 방화벽 또는 보안 그룹을 구성합니다.
다이렉트 SSH 루트 액세스를 비활성화합니다.
신뢰할 수 있는 클라이언트만 MongoDB 인스턴스를 사용할 수 있는 네트워크 인터페이스 및 포트에 액세스할 수 있도록 허용합니다.
팁
다음도 참조하세요.
net.bindIp
구성 설정사용자별 IP 허용 목록을 지정하는
db.createUser()
명령에 대한 authenticationRestrictions 필드
➤ 감사 시스템 활동
데이터베이스 구성과 데이터에 대한 액세스 및 변경 사항을 추적합니다. MongoDB Enterprise에는 MongoDB 인스턴스에서 시스템 이벤트(사용자 작업 및 연결 이벤트 포함)를 기록할 수 있는 시스템 감사 기능이 포함되어 있습니다. 이러한 감사 기록을 통해 포렌식 분석이 가능하고 관리자가 적절한 제어를 수행할 수 있습니다. 인증 이벤트와 같은 특정 이벤트만 기록하도록 필터를 설정할 수 있습니다.
➤ 전용 사용자로 MongoDB 실행
전용 시스템 사용자 계정으로 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 path
및 database log path
를 검사에서 제외하도록 스캐너를 구성하세요.
database storage path
의 데이터 파일이 압축됩니다. 또한 암호화된 스토리지 엔진을 사용하는 경우 데이터 파일도 암호화됩니다. 이러한 파일을 스캔하는 데 드는 I/O 및 CPU 비용은 보안상의 이점 없이 성능을 크게 저하시킬 수 있습니다.
database storage path
및 database log path
에서 디렉토리를 제외하지 않으면 스캐너가 중요한 파일을 격리하거나 삭제할 수 있습니다. 파일이 누락되거나 격리되면 데이터베이스가 손상되고 MongoDB 인스턴스가 충돌할 수 있습니다.
정기적/지속적 프로덕션 점검
주기적으로 MongoDB 제품 CVE를 확인하고 제품을 업그레이드하세요.
MongoDB 사용 기한 만료 날짜를 참조하여 필요에 따라 MongoDB 설치를 업그레이드하세요. 일반적으로 최신 버전을 유지하는 것이 좋습니다.
다음을 수행하는 것을 포함하여 정보 보안 관리 시스템 정책 및 절차가 MongoDB 설치까지 적용이 확장되는지 확인하세요.
머신에 주기적으로 패치를 적용하세요.
정책/절차 변경, 특히 네트워크 규칙의 변경 사항을 검토하여 MongoDB가 실수로 인터넷에 노출되는 것을 방지하세요.
MongoDB database 사용자를 검토하고 주기적으로 교체합니다.
의심스러운 보안 버그 신고
MongoDB 제품에서 보안 버그를 발견한 것으로 의심되는 경우, MongoDB 버그 제출 양식을 통해 문제를 신고해 주세요.