sql >> データベース >  >> NoSQL >> MongoDB

セキュリティのためのアーキテクチャ:MongoDBのガイド

    データ侵害の蔓延はもはや驚くべきことではありません。発表されたばかりのFBIサイバー犯罪レポートに基づくと、サイバー犯罪の被害者は2020年に累積で42億ドルを失い、2019年に報告された損失よりも7億ドル多くなっています。特に、安全でないMongoDBデータベースは、重大なデータ侵害につながる問題の一部となっています。 。 2019年2月、電子メール検証サービス会社がMongoDBデータベースを侵害し、電子メールアドレス、電話番号、IPアドレス、生年月日などの7億6,300万件のレコードが公開されました。その理由は、パスワードのない公開されているMongoDBインスタンスです。

    認証の欠如、ファイアウォールのポートの制限なし、または送信中のデータの保護の失敗は、データ侵害につながる可能性があります。このブログでは、本番環境で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つの領域は、データの暗号化です。データ暗号化は、情報が送信中に別の形式にエンコードされ、データベースに保存される方法です。

    データ暗号化の対象:

    • 転送中のデータ:送信状態のデータ

    • 保存データ:ディスクに保存されているデータ。保管中のデータ暗号化にはさまざまな種類があり、データベースレベルで暗号化を使用することも、ストレージレイヤーで暗号化を使用することもできます。

    クライアントとMongoDBサーバーおよびMongoDBノード間(レプリカセットとシャードクラスターアーキテクチャー)でSSL / TLSを有効にすると、転送中のデータが保護されます。データ転送はプレーンテキストではありません。

    たとえば、保存データの暗号化にはさまざまな暗号化ツールと機能があります。 AWSは、ストレージ上でKMS(Key Management Service)と組み合わせたEBSディスク暗号化を提供しますが、データベースレイヤーでは、MongoDBのEnterpriseエディションが保存時のデータベース暗号化を提供します。

    データベース監査

    MongoDBの監査データベースを実装すると、データベース内で実行されているものを可視化できます。例:どのユーザーから、どのコマンドを実行したか、IPアドレスの送信元。これらのログを組み合わせて、承認アクセスに基づいてルールを作成できます。 MongoDBでスクリプトを実行している意図しないユーザーがいないかどうかを検出できます。セクションauditLogを見ることができます。

    auditLog:
       destination: syslog

    MongoDB監査ログをsyslogファイルに送信し、ログをログ管理にプッシュできます。 MongoDBを保護するためのヒントがもっと必要ですか?このビデオを見て、MongoDBデータベースを保護するためのベストプラクティスをよりよく理解してください

    結論

    MongoDBのセキュリティ標準を実装することは、特に実稼働環境では必須です。データベースに保存されているデータのすべての損失と違反を受け入れることはできません。


    1. BLPOPを使用したredisのジョブキュー

    2. Mongoを使用した配列要素のクエリ

    3. nodejsでredisPUBLISH/ SUBSCRIBEを使用して、データ値が変更されたときにクライアントに通知するにはどうすればよいですか?

    4. mongoimportを使用して、csvデータをmongodbの配列としてインポートします