編集済み 1 1か月前 によって ExtremeHow 編集チーム
セキュリティウィンドウズモンゴDBデータベース認証暗号化開発設定データ保護アクセス制御
翻訳が更新されました 1 1か月前
MongoDBは、そのスケーラビリティと柔軟性で知られる人気のあるNoSQLデータベースです。しかし、他のデータベースと同様に、MongoDBを適切にセキュアにすることは、無許可のアクセスや潜在的なデータ漏洩を防ぐために不可欠です。特にWindowsシステムにMongoDBをデプロイする場合、オペレーティングシステムには独自のセキュリティ上の考慮事項があります。この記事では、Windows上でMongoDBをセキュアにするために取るべき重要なステップを探ります。
セキュリティ機能をセットアップする前に、最新バージョンのMongoDBがインストールされていることを確認してください。新しいバージョンには、重要なセキュリティ更新および修正が含まれていることがよくあります。最新バージョンは、MongoDB Community Serverのウェブページからダウンロードできます。
デフォルトでは、MongoDBは認証を強制しないため、誰でもサーバーに接続してデータをアクセスおよび変更できます。MongoDBインスタンスをセキュアにするには、認証を有効にすることが必須です。認証を設定するには、次の手順に従います:
まず、ユーザー名とパスワードを使用して管理者ユーザーを作成する必要があります。次の手順に従います:
> mongo > use admin > db.createUser({user: "adminUser", pwd: "securePassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
このコマンドは、ユーザー名adminUser
とパスワードsecurePassword
を持つ管理者ユーザーを作成します。このユーザーには、任意のデータベース上でユーザーを管理するためのuserAdminAnyDatabase
ロールが付与されます。
通常、Windowsインストールの場合、C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg
にあるMongoDBの設定ファイルを修正します。security
セクションの下に次の行を追加します:
security: authorization: "enabled"
設定ファイルを更新した後、変更を適用するためにMongoDBサービスを再起動します:
> net stop MongoDB > net start MongoDB
デフォルトでは、MongoDBはすべてのIPアドレスからの接続をリッスンします。サーバーがインターネットに公開されている場合、これはセキュリティリスクとなる可能性があります。アクセスを制限し、セキュリティを向上させるために、MongoDBを特定のネットワークインターフェイスにバインドします:
mongod.cfg
内でnet
セクションを探し、bindIp
パラメータを修正します:
net: bindIp: 127.0.0.1
上記の設定により、MongoDBはローカルマシンからの接続のみを受け入れるようになります。リモートアクセスが必要な場合は、ネットワーク要件に基づいてIPアドレスを調整します。
ファイアウォールはデータベースを保護するための重要なコンポーネントです。Windowsマシンでファイアウォールが設定されており、MongoDBへの着信接続を制限していることを確認してください。Windows Firewall with Advanced Securityを使用して、指定したポート(デフォルト:MongoDBは27017)にのみトラフィックを許可するインバウンドルールを作成できます。
Transport Layer Security(TLS)およびSecure Sockets Layer(SSL)は、MongoDBクライアントとサーバー間の暗号化された通信チャネルを提供します。これらを有効にするには、有効なSSL証明書が必要です。以下に、TLS/SSLのためにMongoDBを設定するための簡略化されたビューを示します:
認証局(CA)を使用してSSL証明書を生成するか、開発中に自己署名証明書を作成します。本番環境では、信頼できるCAを使用するのがベストです。
mongod.cfg
内のnetセクションで次を追加します:
net: tls: mode: "requireTLS" certificateKeyFile: "C:\\path\\to\\mongodb-cert.pem"
C:\\path\\to\\mongodb-cert.pem
をSSL証明書ファイルのパスに置き換えます。
破損や攻撃の際にデータが失われるのを防ぐために、MongoDBデータベースを定期的にバックアップすることが重要です。MongoDBは、データをバックアップするためのユーティリティであるmongodump
を提供します。これらのバックアップを安全に保管し、mongorestore
を使用して復元プロセスを定期的にテストしてください。
監視と監査は、潜在的なセキュリティインシデントを特定するための重要な要素です。MongoDBの組み込みの監査およびロギング機能を使用して、データベースに誰がアクセスしているか、どの操作を実行しているかを確認します:
mongod.cfg
ファイルを修正して監査が設定されていることを確認してください:
auditLog: destination: file path: "C:\\path\\to\\audit.log" format: BSON
MongoDB Atlasを使用して高度な監視とアラートを行うことを検討してください。また、オペレーティングシステム上で利用可能なログとパフォーマンスカウンターを使用してローカル監視を設定することもできます。
最小権限の原則を実装し、ユーザーが職務を履行するために必要最小限のアクセス権を付与します。MongoDBのロールベースアクセス制御(RBAC)システムを使用してロールとアクセス権限を制限します:
> use admin > db.createUser({user: "readOnlyUser", pwd: "safePassword", roles: [ { role: "read", db: "yourDatabase" } ]})
このコマンドは、yourDatabase
に対する読み取り専用アクセスを持つユーザーを作成します。
最後に、新しい脆弱性から保護するために、常にMongoDBインスタンスを最新の状態に保ちます。MongoDB, Inc.のセキュリティパッチおよび更新に関する発表に注意を払ってください。
Windowsシステム上でMongoDBをセキュアにすることは、適切な認証とネットワーク設定の構成、暗号化の使用、監視、およびアクセス制御のベストプラクティスの実装を含む、いくつかの層にわたるものです。このガイドに記載されている手順に従うことで、MongoDBデータベースのセキュリティを大幅に強化し、不正アクセスや脅威からデータを保護することができます。
記事の内容に誤りがある場合, あなたは