MongoDB セキュリティ、監視、バックアップ (Mongodump)
重要な概念の1つは MongoDB データベースの管理です。セキュリティ、バックアップ、データベースへのアクセスなどの重要な側面はすべて、データベース管理における重要な概念です。
MongoDB セキュリティ概要
MongoDB データベースにセキュリティ メカニズムを定義する機能があります。デフォルトでは、誰もがすべてのデータベースにオープンアクセスできるようにすることは望ましくありません。 MongoDBしたがって、何らかのセキュリティメカニズムが必要になります。 MongoDB は重要。
データベースにセキュリティを実装する際のベストプラクティスは次のとおりです。
- アクセス制御を有効にする – ユーザーを作成して、すべてのアプリケーションとユーザーがデータベースにアクセスするときに何らかの認証メカニズムを持つように強制します。 MongoDB.
- ロールベースのアクセス制御を構成する – 場合によっては、必要となる権限を論理的にグループ化し、ロールに分類することができます。 その後、ユーザーをこれらのロールに割り当てることができます。
- 設定してみる MongoDB TLS や SSL などの何らかの暗号化プロトコルを使用します。これらのプロトコルは、クライアントと mongo DB 環境の間を流れるトラフィックを暗号化するために使用できます。
- 監査の設定 – 管理者は通常、誰が何をしているかを把握する必要があります。これは、後で問題を分析するのに役立ちます。最善の方法は、監査を有効にすることです。 MongoDB.
- サーバー環境上の必要なリソースにアクセスできる別のユーザー ID を使用して MongDB サーバー インスタンスを実行します。
Mongodb バックアップ手順 – mongodump
MongDB を使用する場合は、MongDB 内のデータが失われてしまう場合に備えて、常にバックアップ手順を実行することが重要です。 MongoDB 何らかの理由で破損します。
以下は内部から利用可能なバックアップメカニズムです。 MongoDB
- 基礎となるデータ ファイルのコピーによるバックアップ – これはおそらく最も簡単なメカニズムです。必要なのは、データ ファイルをコピーすることだけです。 MongoDB が存在し、それを別の場所 (理想的には別のサーバー) にコピーします。
- mongodump を使用してデータベースをバックアップする – mongodump ツールは、 MongoDB データベースを作成し、忠実度の高い BSON ファイルを作成します。考慮する必要があるのは、データ セットのボリュームが大きい場合、mongodump はリソースを非常に大量に消費する可能性があるため、この問題を軽減するにはユーティリティをセカンダリ サーバーで実行する必要があることです。
- MongoDB クラウドマネージャーのバックアップ – MongoDB Cloud Manager は継続的にバックアップします MongoDB レプリカセットとシャードクラスタを、 MongoDB 環境。 MongoDB Cloud Manager は、oplog データを保存することでポイントインタイムリカバリを作成し、特定のレプリカ セットまたはシャード クラスターの任意の時点で復元を作成できます。
Mongodb モニタリング
モニタリングは、最も重要な管理活動の 1 つです。 MongoDB。これは、発生する可能性のある問題について環境を監視することで、より積極的に対応できるためです。
以下はモニタリングの実装例の一部です。
- モンゴスタット 挿入、クエリ、更新、削除などのデータベース操作がサーバー上で実際に何回発生したかがわかります。これにより、サーバーが処理している負荷の量がわかり、サーバーに追加のリソースが必要かどうか、または負荷を分散するために追加のサーバーが必要かどうかがわかります。
- モンゴトップ の現在の読み取りおよび書き込みアクティビティを追跡し、レポートします。 MongoDB インスタンスを作成し、これらの統計をコレクションごとにレポートします。
- MongoDB シンプルな Web ページで診断および監視情報を公開する Web インターフェイスを提供します。ローカルサーバー上の以下の URL を参照して、Web 管理ユーティリティを開くことができます。
http://localhost:28017
- serverStatusコマンド、またはシェルからのdb.serverStatus()は、ディスク使用量、メモリ使用量、データベースへの接続確立状況など、データベースのステータスの概要を返します。 MongoDB 環境など
MongoDB インデックス作成とパフォーマンスの考慮事項
- インデックスはどのデータベースでも非常に重要であり、検索クエリの効率を向上させるために使用できます。 MongoDB。ドキュメント内で継続的に検索を実行する場合は、検索条件で使用されるドキュメントのフィールドにインデックスを追加することをお勧めします。
- 返されるクエリ結果の数を常に制限するようにしてください。 ドキュメント内に 2 つのフィールド名があるが、ドキュメントから 2 つのフィールドだけを表示したいとします。 次に、クエリがすべてのフィールドではなく、必要な 2 つのフィールドのみを表示することをターゲットにしていることを確認します。
- 特定のフィールド値を表示する場合は、クエリではそれらのフィールドのみを使用します。 コレクション内のすべてのフィールドが必要でない場合は、クエリを実行しないでください。
構成 MongoDB Kerberos認証あり
認可ではクライアントがシステムにアクセスできるようにすることが検討されますが、認証ではクライアントがどのような種類のアクセス権を持っているかがチェックされます。 MongoDB、システムへのアクセスが許可されると。
さまざまな認証メカニズムがありますが、以下にその一部を示します。
MongoDB x.509 証明書を使用した認証
x.509 証明書を使用してクライアントを認証する – 証明書は基本的に、クライアントとクライアント間の信頼できる署名です。 MongoDB サーバー。
したがって、サーバーに接続するためにユーザー名とパスワードを入力する代わりに、クライアントとサーバーの間で証明書が受け渡されます。 MongoDB サーバ。クライアントは基本的に、サーバーへの認証のためにサーバーに渡されるクライアント証明書を持っています。各クライアント証明書は単一の証明書に対応します。 MongoDB ユーザー。したがって、各ユーザーは MongoDB に認証されるためには独自の証明書が必要です。 MongoDB サーバー。
これが機能することを保証するには、次の手順に従う必要があります。
- 有効な証明書は、有効な第三者機関から購入し、 MongoDB サーバー。
- クライアント証明書には、次のプロパティが必要です (単一の証明機関 (CA) がクライアントとサーバーの両方の証明書を発行する必要があります)。クライアント証明書には、keyUsage および ExtendedKeyUsage フィールドが含まれている必要があります。
- MongDB サーバーに接続する各ユーザーは、個別の証明書を持っている必要があります。
設定方法 MongoDB Kerberos認証あり
以下に設定手順を示します MongoDB Kerberos認証がオンの場合 Windows:
ステップ1) 構成 MongoDB Kerberos認証がオンの場合 Windows
Kerberos は、大規模なクライアント/サーバー環境で使用される認証メカニズムです。
これは非常に安全なメカニズムであり、パスワードが暗号化されている場合にのみ許可されます。良い、 MongoDB には、既存の Kerberos ベースのシステムに対して認証する機能があります。
ステップ2) mongod.exeサーバープロセス
次に、mongod.exe サーバー プロセスを開始します。
ステップ3) mongo.exe クライアントのプロセスと接続
次に、mongo.exe クライアント プロセスを開始し、 MongoDB サーバー。
ステップ4) ユーザーを追加します MongoDB
これは基本的に、$external データベースに対する Kerberos プリンシパル名です。 $external データベースは、次のことを伝える特別なデータベースです。 MongoDB このユーザーを独自の内部システムではなく Kerberos システムに対して認証します。
use $external db.createUser( { user: "user1@example.NET", roles:[ { role: "read" , db:"Marketing"} } ] }
ステップ5) コマンドの使用を開始する
次のコマンドを使用して、Kerberosサポート付きのmongod.exeを起動します。
mongod.exe –auth –setParameter authenticationMechanisms=GSSAPI
これで、Kerberos ユーザーと Kerberos 認証を使用してデータベースに接続できるようになります。
まとめ
- データベース内のデータが確実に安全に保たれるように、データベースにセキュリティを実装することは非常に重要です。
- createUser コマンドを使用してデータベースにユーザーを作成できます。 ユーザーに特定のロールを割り当てて、データベース自体に対する特定の権限を与えることができます。
- 管理者は、すべてのデータベースに対して追加することも、特定のデータベースに対してのみ追加することもできます。 これは、userAdmin または userAdminAnyDatabase ロールを付与することで実現されます。
- 常にバックアップを行ってください MongoDB 災害が発生した場合でもデータを簡単に回復できる環境を構築します。
- 常に監視する MongoDB よりプロアクティブに行動し、問題が発生する前に問題を確認できる環境。
- データベースのセキュリティを強化するためのさまざまな認証メカニズムがあります。 一例として、ユーザー名とパスワードを使用する代わりに証明書を使用してユーザーを認証することが挙げられます。