かなり早くデータベースをシャーディングする必要があり、mongos
サーバーとconfig
サーバーで認証を有効にするためのベストプラクティスが何であるかがわかりません。
すべてをパスワードで保護してもらいたいのですが。
auth
を有効にする必要がありますか?ありがとう!
私はこれらを一度に1つずつ取ります:
各構成サーバーで認証を有効にする必要がありますか?
はい、基本的に、実行するmongodのすべてのインスタンスで認証を有効にする必要があります(キーファイル、 認証を意味します )。
もしそうなら、それぞれに同じユーザーを設定しますか?管理者データベースのためだけですか?または、構成データベース用に作成する必要がありますか?
シャード環境の管理データベースは、実際には構成サーバー上に存在します。したがって、3つすべてにadminデータベースのコピーが作成されます(これらは互いに同一になります)。常にmongos
を介して構成データベースに接続する必要があり、そこで他のデータベースを作成することはないため、特定のユーザーを追加する必要はありません。
モンゴスにいる間はユーザーを作成する必要がないと思います。これは、configとシャード自体から継承する必要があるためです。これは正しいですか?
最初に追加するシャードは、既存のデータベースがある場合、それらのデータベースのプライマリシャードになります(永久に)。その後、複数のシャードにまたがってコレクションをシャーディングした場合でも、そのプライマリシャードにはそれらのデータベースの認証レコードが含まれます。シャードの後に作成される後続のデータベースは別のシャードに存在する可能性があり、それらの資格情報はそこに格納されます。基本的な経験則は次のとおりです。mongos
を使用して、シャード環境でユーザーを管理します。
注:上記はMongoDB 2.4以下で当てはまります。 2.6で計画された変更により、すべての資格情報がシャード環境の構成データベースに集中化され、複雑さが緩和されます。ただし、経験則は引き続き適用されます。mongos
を使用してください
新しいシャードを追加する場合、新しいシャード上のシャードデータベースごとに同じユーザーを設定する必要がありますか?
前の質問への答えが示すように、これは必要ありません常にmongos
を介して接続する限り(推奨-それは知っています各データベースのプライマリシャードは何であり、認証リクエストを適切にルーティングします)。すべてのシャードにユーザーを配置する必要があるEdgeのケースがいくつかあります。その場合、各シャードにユーザーを追加(および維持)する必要がありますが、一般的な使用では必須ではありません。