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
Conteúdo Programático
1. Introdução;
2. Roles e Usuários;
3. Controle de Privilégios;
4. Backup e Restauração.
2
1. Introdução
3
● SGBDs sã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).
2. Roles e Usuá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
3. Controle de Privilé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 de Privilégios
● Exemplo prático do trabalho:
● Docente:
● Administrador
6
3. Controle de Privilé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
4. Backup e Restauraçã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
4. Backup e Restauraçã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
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

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
  • 2.
    Conteúdo Programático 1. Introdução; 2.Roles e Usuários; 3. Controle de Privilégios; 4. Backup e Restauração. 2
  • 3.
    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
  • 6.
    3. Controle dePrivilégios ● Exemplo prático do trabalho: ● Docente: ● Administrador 6
  • 7.
    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