データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

MongoDBのセキュリティのヒント

MongoDB®の使用を開始するのは簡単です。ただし、継続的に出現する新機能でいくつかの問題に遭遇する可能性があります。そのような懸念事項の1つは、このブログの焦点であるセキュリティです。

はじめに

MongoDBアプリケーションでセキュリティを維持することは、データベースアプリケーションにとって非常に重要です。データベースを脅威から保護するために、抜け穴を特定し、データベースまたはアプリケーションのセキュリティの種類と方法を知る必要があります。 セキュリティ技術実装ガイドを厳守する (STIG)は、MongoDBを大幅に保護するのに役立ちます。時々監査することは、システムまたはデータベースの主要な欠陥を特定するのにも役立ち、システムまたはデータベースをさまざまな脅威から保護することができます。

このブログでは、MongoDBを保護して安全に保つための10のヒントについて説明します。

ヒント1:常に認証を有効にする

認証を有効にすることは、MongoDBを保護するための優れた方法であり、最も簡単な方法です。有効にする最も簡単なセキュリティ機能によって、システムを最大限に保護し、数百万ドルの費用がかかる可能性のあるデータ侵害から組織を保護できる場合があります。

次の行をmongod.confに追加します MongoDBで認証を有効にするための構成ファイル:

Security:
        Authentication: on

次の画像は、DBレベルのセキュリティを示しています。

MongoDBのセキュリティのヒント

画像ソース:https://www.slideshare.net

ヒント2:複雑なパスワードを使用する

このヒントは常識です。ほとんどの場合、アプリケーションやデータベースに使用される最も基本的で単純なパスワードは12345です。 またはABC123 。ただし、これらのsimplepasswordsは、システムを解読して貴重なデータを盗むための最適な武器です。

MongoDBはパスワードのロックアウトオプションを提供していないため、ハッカーは最も単純なパスワードを試して、データベースやアプリケーションを数分で解読して侵入するのは簡単です。

ヒント3:役割ごとにユーザーを承認する

MongoDBは、デフォルトではアクセス制御を有効にしません。キーワード--authを使用して認証を有効にできます MongoDBシェルを初期化するとき。

誰もがデータベースを管理する必要はありません。データベースで認証が有効になっている場合でも、すべてのユーザーに管理者権限を付与しないでください。代わりに、ベストプラクティスとして、ユーザーを承認するために常にいくつかの役割を作成します。

特定のユーザーの役割を設定すると、各ユーザーの複雑さが軽減され、後で災害を引き起こすアカウント侵害のリスクが大幅に軽減されます。

ロールを持つユーザーを作成するには、次のコマンドを実行します。

db.createUser({user:"admin", pwd:"X1eL#pM0C12", roles:[{role:"userAdminAnyDatabase", db:"admin"]})

ヒント4:レプリケーションキーファイルを追加する

レプリケーションキーファイルを有効にすると、MongoDBでの認証が自動的に有効になります。この機能を有効にすると、このファイルがインストールされているホストのみがレプリカセットに参加できます。

有効なレプリケーションキーファイルは、MongoDBでのデータ暗号化も保証します。これにより、保護の追加レイヤーが提供されます。選択した任意の方法を使用してキーファイルを生成し、キーファイルをレプリカセットのメンバーにコピーしてから、アクセス制御を有効にしてレプリカセットを起動できます。

次の行をmongod.confに追加します レプリケーションキーファイルを有効にするには:

Security:
    KeyFile: <Path to KeyFile>

次の画像は、キーファイル認証を示しています。

MongoDBのセキュリティのヒント

画像ソース:https://www.slideshare.net

ヒント5:デフォルトのポートを使用しないでください

MongoDBインスタンスへの接続にデフォルトのポートを使用しないでください。ほとんどの場合、ハッカーは攻撃する前にデフォルトまたは標準のポート番号のみをスキャンします。MongoDBが使用するデフォルトのポートの一部は27017です。 、27018270192700X 、など。

mongod.confでデフォルトのポート番号を簡単に変更できます 。

ヒント6:適切なバックアップアプローチをとる

攻撃が発生した瞬間からオペレーションログ(oplog)がポイントインタイム(PIT)リカバリの準備ができていることを確認するために、常に最新のデータコピーがあることを確認してください。

あらゆる種類の攻撃に備えて、誰にでもできるディザスタリカバリを準備してください。

ヒント7:データベースへのパブリックアクセスを無効にする

アプリケーションをレビューして、データベースへの外部アカウントアクセスが必要かどうかを確認します。そのようなアカウントが設定されている場合は、認証と暗号化を使用するようにアカウントを設定します。

mongod.confでホストのインターネットプロトコル(IP)アドレスをバインドすることにより、パブリックアクセスを無効にすることもできます。 。

ヒント8:オペレーティングシステムレベルでファイアウォールルールを有効にし、VPNを使用する

ファイアウォールは、ネットワークを介したシステムへのアクセスをフィルタリングおよび制御するための追加のセキュリティ層を提供します。 MongoDBサーバーで、クラウドホスティングのホストまたはセキュリティグループでファイアウォールルールを有効にします。

信頼できるソースにのみmongodインスタンスへのアクセスを許可するようにしてください。サーバーのIPアドレスまたはポート範囲をブロックして、クラウドホスティングをより安全にします。

VPNを使用して、さまざまなレベルの暗号化、複数レベルの認証、およびすべてのクライアントの承認のために、データベースシステムへの認証済みアクセスを提供します。

ヒント9:データベースシステムのセキュリティ問題を定期的に監査します

データベースまたはホストシステムを定期的に監査して、違反がないか、またはいずれかのユーザーアカウントが、役割と特権に基づいて、必要な特権以外の昇格された特権を付与しているかどうかを確認します。

テスト目的で昇格された特権が付与された場合は、それらを取り消してシステムを再保護してください。

ヒント10:外部からのデータベースアクセスを検証およびテストします

あなたまたはあなたのチームは、侵入テストまたはSQLインジェクションを使用してデータベースシステムのセキュリティ問題をテストし、システムを悪用していないかどうかを確認する必要があります。外界からデータベースに何も公開されていないことを確認してください。

nmap、telnetなど、そのテストには多くのツールを使用できます。

結論

このブログは、dailyMongoDB管理の基本的なセキュリティプラクティスを構成するのに役立ちます。これらのヒントと説明されているツールを使用して、MongoDBデータベースアプリケーションを保護します。

mongoシェルを使用する代わりに、MongoDB Monitoring Service(MMS)を使用して、セキュリティ関連の機能のほとんどを監視および構成することもできます。

[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。

認定されたデータベース管理者とデータベースサービスの詳細をご覧ください。


  1. MongoDBのヒント:パート2

    Tricoreが最初に公開したもの:2017年8月24日 このシリーズのパート1では、MongoDBを使用するためのヒントをいくつか共有しました。パート2では、最適化、パフォーマンス、速度、インデックス作成、スキーマ設計、データの安全性など、さらにいくつかのMongoDBトピックについて説明します。 ヒント1:--notablescan 開発中のオプション(ただし、本番環境ではない) 出典:www.percona.com MongoDBには--notablescanがあります クエリが全表スキャンを実行する必要がある場合にエラーを返すオプション。このオプションは、すべてのクエリ

  2. セキュリティの脆弱性、ObjectRocketパッチ

    ゼロデイMongoDBセキュリティの脆弱性(CVE-2013-1892)がSCRTの人々によって発見されました。 10genは、この問題を修正するためにMongodbにパッチを適用しました。 ObjectRocketはこのパッチをMongoDBのバージョンに統合しており、これをお客様に展開し始めます。すべての新しいインスタンスとシャードには、このパッチが統合されます。 ObjectRocketはセキュリティを非常に真剣に受け止めています。すべてのインスタンスには、ネイティブのMongoDBセキュリティを超えてアクセスするためのACLが必要です。また、すべての接続でSSLを有効にすることがで