Aula 10 - Segurança e Backup - Bancos de Dados.pptx
1.
AULA 10 -Segurança e Backup
Prof. Gabriel Resende Machado
gabrielmachado@unifeso.edu.br
https://www.linkedin.com/in/machadogabriel
https://github.com/UNIFESO-Gabriel/banco-de-dados
Banco de Dados
1. Introdução
3
● SGBDssão utilizados por diversas pessoas, desde usuários de aplicações a programadores e
administradores de banco de dados;
● Frequentemente considerada por ser a parte mais valiosa de um sistema de informação, os dados
administrados por um SGBD devem ser protegidos de acessos indevidos, evitando, principalmente:
○ Erros de manipulação de dados que comprometam a integridade do banco relacional;
○ Leitura e manipulação de dados por pessoas mal intencionadas.
● Por esse motivo, é necessário haver um controle maior sobre (i) autenticação e (ii) autorização:
○ Autenticação: processo de validação das credenciais fornecidas por um usuário;
○ Autorização: quais operações o usuário autenticado pode realizar (também conhecido como
privilégios).
● Há outras formas de realizar a segurança dos dados de um SGBD, como usar hashes para armazenar
dados sensíveis (algoritmos como o Bcrypt + salt) e meios de evitar ataques de injeção de SQL (como
uso de ORMs, stored procedures/functions e queries parametrizadas).
4.
2. Roles eUsuários
● No PostgreSQL, roles são entidades centrais que podem ter ou não o atributo LOGIN.
○ Um usuário no PostgreSQL é simplesmente considerado um role com login, i.e. que pode se conectar a um
banco de dados via credenciais;
○ Uma role de grupo é uma role sem LOGIN, usada para agrupar privilégios que são atribuídas a outras roles.
● Roles podem:
○ pertencer a outras roles, ganhando herança de privilégios;
○ Além de LOGIN, ter atributos específicos como: CREATEDB (criar novas bases), CREATEROLE (criar ou editar roles),
SUPERUSER (acesso irrestrito), entre outros;
○ Ser donos de objetos (tabelas, esquemas, etc.), exercendo controle completo sobre eles;
○ As roles são globais no cluster de bancos (todos os bancos de dados dentro de um instância postgres);
○ Para conceder privilégios a uma role, utiliza-se o comando GRANT.
4
5.
3. Controle dePrivilégios
● No PostgreSQL, roles também têm privilégios sobre objetos do banco de dados:
○ Tabelas: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER;
○ Esquemas: CREATE, USAGE;
○ Databases: CONNECT;
○ Funções: EXECUTE.
5
3. Controle dePrivilégios
● O PostgreSQL também permite a troca de nomes de roles e senhas:
○ ALTER ROLE antiga_role RENAME TO nova_role;
■ (i) Apenas superusers podem renomear qualquer role ou (ii) roles com CREATEROLE sem superuser e com o privilégio ADMIN
OPTION.
○ Roles podem alterar suas senhas: ALTER ROLE nome_role WITH PASSWORD 'nova_senha';
■ (i) Um superuser ou role com CREATEROLE pode alterar a senha de qualquer role; (ii) roles normais (sem privilégios
elevados) só podem alterar a própria senha.
● Para excluir uma role:
○ DROP ROLE nome_role;
■ Só é possível se a role não estiver conectada ao banco;
■ Além disso, ela não pode possuir objetos ou ter privilégios concedidos a outras roles ou bancos. Caso contrário, será
necessário revogar privilégios ou transferir propriedade primeiro.
● Revogar privilégios de uma role: usa-se o comando REVOKE:
○ REVOKE DELETE ON TABLE curso1.avaliacao FROM docente;
○ REVOKE SELECT ON ALL TABLES IN SCHEMA curso1 FROM discente;
● Ler todas as roles do cluster: SELECT rolname, rolsuper, rolcreaterole, rolcreatedb, rolcanlogin FROM pg_roles;
7
8.
4. Backup eRestauração
● Fazer backup e restauração no PostgreSQL é essencial para garantir a integridade e segurança dos dados;
● Backup de um BD: salva os dados em formato SQL ou em um formato portátil. É útil para migrações e backups leves
(-W solicita a senha do usuário e -d o nome do BD).
○ pg_dump -U usuario -W -F c -d nome_do_banco -f backup.dump
○ pg_dump -U usuario -W -F p -d nome_do_banco -f backup.sql
● Backup de todo o cluster: Usado para fazer backup de todos os bancos e configurações globais (usuários, roles, etc).
-f significa file:
○ pg_dumpall -U usuario -f backup_tudo.sql
8
9.
4. Backup eRestauração
● Para restaurar um backup, usa-se o comando pg_restore ou o psql;
○ Formato plain (.SQL): psql -U usuario -d nome_do_banco -f backup.sql
○ Formato custom (dump): pg_restore -U usuario -d nome_do_banco -v backup.dump
○ Outras opções do pg_restore:
■ --clean: dropa objetos antes de criar;
■ --create: recria o banco;
■ --jobs=N: restauração paralela.
● A role usada no pg_dump pg_restore precisa de:
○ Conexão com o banco (CONNECT);
○ Permissão de leitura (normalmente SELECT) em todas as tabelas e esquemas.
○ Permissões de escrita;
○ Criar banco (CREATEDB) se for recriar.
● Boas práticas incluem:
○ Realizar backups regulares (diários, semanais);
○ Testar restaurações periodicamente;
○ Usar nomes e versões no arquivo (ex: backup_meubanco_2025-06-17.dump);
○ Armazenar em local seguro (criptografado, redundante);
○ Monitorar falhas de backup;
○ Criar scripts automatizados usando o CRON (Linux).
9
10.
AULA 10 -Segurança e Backup
Prof. Gabriel Resende Machado
gabrielmachado@unifeso.edu.br
https://www.linkedin.com/in/machadogabriel
https://github.com/UNIFESO-Gabriel/banco-de-dados
Banco de Dados