Funções de banco de dados e controle de acesso

Projeto de banco de dados

Lis Sulmont

Curriculum Manager

Concedendo e cancelando o acesso a uma visualização

GRANT privilege(s) ou REVOKE privilege(s)

ON object

TO role ou FROM role

  • Privilégios: SELECT, INSERT, UPDATE, DELETE, etc.
  • Objetos: tabela, visualização, esquema, etc.
  • Funções: um usuário de banco de dados ou um grupo de usuários de banco de dados
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Projeto de banco de dados

Funções do banco de dados

  • Gerenciar permissões de acesso ao banco de dados
  • Uma função de banco de dados é uma entidade que contém informações que
    • Defina os privilégios da função
      • Consegues fazer login?
      • Você consegue criar bancos de dados?
      • Você consegue escrever nas tabelas?
    • Interaja com o sistema de autenticação do cliente
      • Senha
  • As funções podem ser atribuídas a um ou mais usuários.
  • As funções são globais em toda a instalação do cluster do banco de dados.
Projeto de banco de dados

Criar uma função

  • Função vazia
CREATE ROLE data_analyst;
  • Funções com alguns atributos definidos
CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
CREATE ROLE admin CREATEDB;
ALTER ROLE admin CREATEROLE;
1 http://bit.ly/postgresql_attributes
Projeto de banco de dados

GRANT e privilégios de REVOKE e de funções

GRANT UPDATE ON ratings TO data_analyst;
REVOKE UPDATE ON ratings FROM data_analyst;

Os privilégios disponíveis no PostgreSQL são:

  • SELECT e INSERT`UPDATE`
1 http://bit.ly/postgresql_privileges
Projeto de banco de dados

Usuários e grupos (são ambos funções)

  • Uma função é uma entidade que pode funcionar como um usuário e/ou um grupo.
    • Funções do usuário
    • Funções do grupo

Gráfico de funções em que o círculo externo representa uma função de grupo e os três círculos internos dentro do círculo externo representam funções de usuário

Projeto de banco de dados

Usuários e grupos (são ambos funções)

Função do grupo

CREATE ROLE data_analyst;

Função do usuário

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
Projeto de banco de dados

Usuários e grupos (são ambos funções)

Função do grupo

CREATE ROLE data_analyst;

Função do usuário

CREATE ROLE alex WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Projeto de banco de dados

Funções comuns do PostgreSQL

Função Acesso permitido
pg_read_all_settings Lê todas as variáveis de configuração, mesmo aquelas que normalmente só os superusuários conseguem ver.
pg_read_all_stats Lê todas as visualizações pg_stat_* e usa várias extensões relacionadas a estatísticas, mesmo aquelas que normalmente só os superusuários podem ver.
pg_signal_backend Manda sinais para outros backends (por exemplo: cancelar consulta, encerrar).
Mais... Mais...
1 http://bit.ly/default_roles_postgresql
Projeto de banco de dados

Vantagens e desvantagens das funções

Vantagens

  • As funções continuam ativas mesmo depois que os usuários são excluídos.
  • As funções podem ser criadas antes das contas de usuário.
  • Economize tempo dos DBAs

Armadilhas

  • Às vezes, uma função dá acesso demais a um usuário específico.
    • Você precisa prestar atenção.
Projeto de banco de dados

Vamos praticar!

Projeto de banco de dados

Preparing Video For Download...