自己管理型配置のセキュリティ チェックリスト
このドキュメントでは、MongoDB インストールを保護するために実装する必要があるセキュリティ対策の一覧を提供します。このリストは網羅的なものではありません。
本番稼働前のチェックリストと考慮事項
➤アクセス制御を有効にし、認証を強制する
➤ ロールベースアクセス制御の設定
ユーザー管理者を最初に作成し、その後で他のユーザーを追加します。システムにアクセスする各ユーザーまたはアプリケーションごとに、ユニークな MongoDB ユーザーを作成します。
最小権限の原則に従います。各ユーザーに必要なアクセス権のみを厳密に定義するロールを作成します。その後ユーザーを作成し、各自の業務に必要なロールのみを割り当てます。ユーザーは、人の場合とクライアント アプリケーションの場合があります。
注意
ユーザーは複数の異なるデータベースにわたって権限を持つことができます。あるユーザーが複数のデータベースに対する権限を必要とする場合は、別個のデータベースでユーザーを何度も作成するのではなく、ユーザーを1件だけ作成し、該当するデータベースの権限を付与する複数のロールを割り当てます。
➤ 通信の暗号化 (TLS/SSL)
➤ データの暗号化と保護
WiredTiger ストレージ エンジンに標準搭載されている保管時の暗号化で、ストレージ層のデータを暗号化することができます。
WiredTiger で保存時の暗号化を使用しない場合、ファイルシステム、デバイス、または物理的な暗号化(dm-crypt など)を使用して、それぞれのホスト上で MongoDB のデータを暗号化する必要があります。また、ファイルシステムの権限を使用した MongoDB データの保護も必要です。MongoDB データには、データファイル、構成ファイル、監査ログ、鍵ファイルが含まれます。
Queryable Encryption またはクライアント側のフィールドレベル暗号化使用すると、データをネットワーク経由でサーバーに送信する前に、ドキュメント内のフィールドをアプリケーション側で暗号化できます。
ログを収集し中央ログストアに保管します。これらのログには、送信元 IP アドレスを含むデータベース認証の試行記録が含まれます。
➤ネットワークへの露出の制限
MongoDB は確実に信頼できるネットワーク環境で実行し、MongoDB インスタンスの受信トラフィックと送信トラフィックを制御できるようにファイアウォールまたはセキュリティグループを設定します。
SSH ルートへのダイレクトアクセスは無効にします。
MongoDB インスタンスが利用できるネットワークインターフェイスとポートへのアクセスは、信頼できるクライアントのみに許可します。
Tip
以下も参照してください。
net.bindIp
構成設定db.createUser()
コマンドの authenticationRestrictions フィールドで、ユーザーごとの IP 許可リストを指定します。
➤ システム活動の監査
データベースの構成とデータへのアクセスと変更を追跡します。 MongoDB Enterprise には、MongoDB インスタンス上のシステム イベント(ユーザー操作や接続イベントなど)を記録できるシステム監査機能が備わっています。これらの監査記録によって、フォレンジック分析が可能になり、管理者は適切な管理を行うことができます。認証イベントなど、特定のイベントのみを記録するようにフィルターを設定できます。
➤ MongoDB を専用ユーザーで実行
専用のオペレーティングシステム ユーザーアカウントを使用して MongoDB プロセスを実行します。このアカウントにはデータへのアクセス権限を付与し、不要な権限は与えないようにします。
➤セキュアな構成オプションで MongoDB を実行
MongoDB では、次のとおり一部のサーバーサイドでの操作で JavaScript コードの実行をサポートしています。
mapReduce
、$where
、$accumulator
、および$function
。これらの操作を使用しない場合は--noscripting
オプションを使用してサーバーサイドのスクリプトを無効にします。入力検証は有効にしておきます。MongoDB では
net.wireObjectCheck
設定を通じてデフォルトで入力検証が有効にされています。これによりmongod
インスタンスによって保存されるすべてのドキュメントが、確実に有効な BSON となるようにします。
➤ セキュリティ技術実装ガイドのリクエスト(該当する場合)
STIG(Security Technical Implementation Guide、セキュリティ技術実装ガイド)には、米国国防総省内でのデプロイに関するセキュリティ ガイドラインが含まれています。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 のデータベースユーザーを検討し、定期的に入れ替えること。
セキュリティ バグの疑いの報告
MongoDB 製品のセキュリティ バグを特定したと思われる場合には、MongoDB バグ送信フォームから問題の報告をお願いします。