認証の欠如、ファイアウォールのポートの制限なし、または送信中のデータの保護の失敗は、データ侵害につながる可能性があります。このブログでは、本番環境でMongoDBデータベースを準備して保護する方法について説明します。
認証と承認は2つの異なるものですが、相互に関連しています。認証とは、ユーザーがMongoDBデータベースにアクセスできることを意味し、承認によってユーザーはデータベース内のリソースにアクセスできます。
MongoDBでの認証のデフォルトのインストールは無効になっています。 MongoDBは、複数の認証をサポートしています。例:SCRAM、x.509証明書認証。 MongoDBのデフォルトはSCRAM(Salted Challenge Response Authentication Mechanism)で、ユーザー名、パスワード、認証データベースを使用して、提供された資格情報へのアクセスを検証します。
認証を有効にする前に、ユーザーAdminAnyDatabaseの役割を持つスーパーユーザーをMongoDBに作成してください。完了したら、/ etc / mongod.confファイルを開いて、セキュリティに関するセクションを見つける必要があります。デフォルトでは無効になっています。有効にする必要があります。
security:
authorization: "disabled"
MongoDBサービスを再起動して、構成の変更を適用します。また、MongoDBデータベース内でRBAC(ロールベースのアクセス制御)を構成して、ユーザーに関連するセキュリティを強化することもできます。そのため、ユーザーと権限に基づいてデータベースへのアクセスを分離します。
ネットワークセグメンテーションは、データベースアーキテクチャを設計する際の重要な側面であり、MongoDBだけでなく、すべてのデータベースに適用されます。データベースのネットワークを分離することをお勧めします。データベースサーバーは、インターネットからアクセスできないプライベートネットワークに設置しました。
データベースへの通信はプライベートネットワーク上で行われ、ユーザーがデータベースにアクセスしたい場合は、VPNまたはジャンプホストを使用できます。ネットワークのセグメンテーションに加えて、ポートの制限も重要な役割を果たします。セグメント化されたネットワークに固有のデータベースポートを開いて、インバウンドおよびアウトバウンドのネットワークトラフィックを制御します。したがって、着信トラフィックは信頼できる送信元アドレスからのものであることがわかります。
注意が必要なもう1つの領域は、データの暗号化です。データ暗号化は、情報が送信中に別の形式にエンコードされ、データベースに保存される方法です。
データ暗号化の対象:
-
転送中のデータ:送信状態のデータ
-
保存データ:ディスクに保存されているデータ。保管中のデータ暗号化にはさまざまな種類があり、データベースレベルで暗号化を使用することも、ストレージレイヤーで暗号化を使用することもできます。
たとえば、保存データの暗号化にはさまざまな暗号化ツールと機能があります。 AWSは、ストレージ上でKMS(Key Management Service)と組み合わせたEBSディスク暗号化を提供しますが、データベースレイヤーでは、MongoDBのEnterpriseエディションが保存時のデータベース暗号化を提供します。
MongoDBの監査データベースを実装すると、データベース内で実行されているものを可視化できます。例:どのユーザーから、どのコマンドを実行したか、IPアドレスの送信元。これらのログを組み合わせて、承認アクセスに基づいてルールを作成できます。 MongoDBでスクリプトを実行している意図しないユーザーがいないかどうかを検出できます。セクションauditLogを見ることができます。
auditLog:
destination: syslog
MongoDB監査ログをsyslogファイルに送信し、ログをログ管理にプッシュできます。 MongoDBを保護するためのヒントがもっと必要ですか?このビデオを見て、MongoDBデータベースを保護するためのベストプラクティスをよりよく理解してください
MongoDBのセキュリティ標準を実装することは、特に実稼働環境では必須です。データベースに保存されているデータのすべての損失と違反を受け入れることはできません。