Eu vou levar um de cada vez:
Should each config server have auth enabled?
Sim, basicamente, todos os casos de mongod executados devem ter a autenticação ativada (e o arquivo de chave, que implica a autenticação ).
If so, then setup the same user across each? Just for the admin db? Or is there a need to create one for the config database?
O banco de dados de administração em um ambiente particionado realmente residirá nos servidores de configuração. Assim, você terá uma cópia do banco de dados de administração em todos os três (eles serão idênticos entre si). Você deve estar sempre se conectando ao banco de dados de configuração por meio do mongos
e não criará outros bancos de dados, portanto, não é necessário adicionar usuários específicos.
I am guessing you don't need to create any users while on the mongos, since it should inherit from the config and the shards themselves, is this correct?
O primeiro fragmento que você adicionar, se tiver bancos de dados existentes, será o principal shard desses bancos de dados (para sempre). Esse shard primário conterá os registros de autenticação para esses bancos de dados, mesmo se você subsequentemente fragmentar as coleções em vários shards. Quaisquer bancos de dados subseqüentes criados depois que o shard pode residir em outro shard e suas credenciais serão armazenadas lá. A regra básica é: use mongos
para gerenciar seus usuários em um ambiente fragmentado.
Nota: O que precede é verdade no MongoDB 2.4 e abaixo. As alterações planejadas no 2.6 centralizarão todas as credenciais no banco de dados de configuração em um ambiente fragmentado e removerão parte da complexidade. No entanto, a regra geral ainda é aplicável, use mongos
When adding a new shard, is it needed to go and setup the same users for each sharded database on the new shard?
Como a resposta à pergunta anterior indica, não, isso não é necessário contanto que você sempre se conecte via mongos
(recomendado - ele sabe qual é o shard primário de cada banco de dados e roteará sua solicitação de autorização adequadamente). Existem alguns casos de borda em que você pode precisar ter os usuários em todos os shards, em cujo caso você teria que adicionar (e manter) eles em cada shard, mas para uso geral não é necessário.