Trilha – NoSQL · Por padrão o MongoDB apenas escuta o ip 127.0.0.1:27017. Administradores de...
Transcript of Trilha – NoSQL · Por padrão o MongoDB apenas escuta o ip 127.0.0.1:27017. Administradores de...
Globalcode – Open4education
Trilha – NoSQLAdamo Tonete
Senior Service Engineer @ percona
Globalcode – Open4education
Agenda● Como instalar o MongoDB;● Habilitando autenticação;● Default roles;● Iniciando um replicaset e shard com autenticação;● SSL;● LDAP;● Segurança em Backups.
Globalcode – Open4education
Instalando o MongoDB● Como instalar o MongoDB no Centos 7
yum install -y mongodb-org
service mongodb start
$ mongo > use perconaswitched to db percona
> db.foo.insert({x : 1})WriteResult({ "nInserted" : 1 })
Globalcode – Open4education
Instalando o MongoDB
Por padrão o MongoDB apenas escuta o ip 127.0.0.1:27017. Administradores de ambiente geralmente alteram esse parâmetro para habilitar conexões externas.
cat /etc/mongod.conf | grep "net:" -A 3net: port: 27017 bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
Vantagem: Todos podem se conectar (mesmo remoto)Desvantagem: Todos podem se conectar. Sem segurança ou controle de acesso.
Globalcode – Open4education
Ops...
Globalcode – Open4education
Quando ativar a autenticação?
Se não se tratar de um banco local para desenvolvimento com dados fictícios, por favor, habilite a autenticação.
Tente isolar o acesso o tanto quanto possível. Um monte de usuários como root na verdade significa o mesmo que nenhum controle.
Globalcode – Open4education
Habilitando a autenticação• Habilitando o usuário root e reiniciando o processo do MongoDB.
Mongouse admin> db.createUser({user : 'administrator', pwd : '123321', roles : ['root']})Successfully added user: { "user" : "administrator", "roles" : [ "root" ] }
-- mongod.conf -- #securitysecurity authorization : enabled
-- service restart ---
Globalcode – Open4education
Habilitando a autenticaçãoConferindo o acesso:
mongo> show dbs
2017-04-05T13:39:30.040-0400 E QUERY [thread1] Error: listDatabases failed:{"ok" : 0,"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }","code" : 13,"codeName" : "Unauthorized"
} :
Globalcode – Open4education
Habilitando a autenticaçãoConferindo o acesso:
mongouse admindb.auth('administrator','123321')1 <- Significa OK!
mongo -u administrator -p --authenticationDatabase adminpassword:
> show dbslocalpercona
Globalcode – Open4education
Papéis de usuário padrão● Built-in MongoDB Roles
read readWrite dbAdmin dbOwner userAdmin
clusterAdmin clusterManager clusterMonitor hostManager backup
restore readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase
dbAdminAnyDatabase root __system
Globalcode – Open4education
Criando usuário comumdb.createUser({user: 'user', pwd: '123', roles : [{ role :'read', db: 'percona'}]})
Successfully added user: {"user" : "intern","roles" : [
{"role" : "read","db" : "percona"
}]
}
Globalcode – Open4education
Iniciando um replica set
Sec
Primário
Conceito de Replicaset
Sec replicação
Globalcode – Open4education
Iniciando um replica set
Sec VazioPrimário Eu sei o seu segredo e é o mesmo que o meu
Quando autenticação está habilitada precisamos usar um keyfile ou certificador x.509 para que as instâncias falem entre si.
Globalcode – Open4education
Iniciando um replica set
Sec VazioPrimário
Ok, então enviarei meus dados
As instâncias validam a chave compartilhada e iniciam a replicação
Globalcode – Open4education
Ambiente shard com keyfilemongos
configs
Quando estiver usando o MONGOS os usuários devem existir nos configs. Devemos ter usuários nos shards somente para administração
shards
Globalcode – Open4education
Melhorando a Segurança - SSLSSL - Secure Sockets Layer
● Quando usando keyfiles todas as informações viajam pela rede sem encriptação;
● Quado SSL está habilitado toda a comunicação é criptografada;
● Para usar SSL precisamos de uma unidade certificadora e certificado válido.
Globalcode – Open4education
Melhorando a Segurança - SSL
● Quando usando SSL cada máquina tem um certificado e as mesmas compartilham a mesma unidade certificadora e um certificado raíz;
● Dados são encriptados e é necessário uma chave para descriptografar;
● Clientes devem ter certificado válido para se conectar.
Globalcode – Open4education
Shard com SSLmongos
configs
shards
cliente
Globalcode – Open4education
Melhorando a Segurança - LDAPLDAP - Lightweight Directory Access Protocol
● MongoDB Enterprise e Percona Server oferecem integração com o Active Directory e LDAP onde o usuário tem um único login na rede o processo de permissão é o mesmo de um usuário padrão, exceto que o usuário vem de um serviço externo.
Globalcode – Open4education
Melhorando a Segurança - BKPBackups
Como guardar os backups?
Use senhas e encriptação. De nada adianta usar toda segurança possível e guardar o backup numa pasta pública sem encriptação.
Globalcode – Open4education
Questões?
@AdamoTonete
https://www.percona.com/blog/author/adamo-tonete/
http://adamotonete.com