BANCO DE DADOS WEB AULA 9. concessão e revogação de privilégios. professor Luciano Roberto Rocha.

Documentos relacionados
BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

BD II (SI 587) Segurança em Banco de Dados. Josenildo Silva.

Uniao Educacional e Tecnologica Impacta- Uni Impacta

BANCO DE DADOS WEB AULA 12. manipulação de dados atualização e exclusão de registros. professor Luciano Roberto Rocha.

Marcelo Henrique dos Santos

BANCO DE DADOS WEB AULA 3. programas cliente: psql - pgadmin 3 - phppgadmin. professor Luciano Roberto Rocha.

Linguagem SQL Restrições, Triggers e Views

SEGURANÇA E ADMINISTRAÇÃO DE BANCOS DE DADOS

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo

BANCO DE DADOS WEB AULA 7. criação de tabelas. professor Luciano Roberto Rocha.

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

BANCO DE DADOS WEB AULA 4. linguagem SQL: subconjuntos DCL, DDL e DML. professor Luciano Roberto Rocha.

Visões ... Esquema Externo n. Esquema Externo 1. Esquema Lógico. Usuários finais/aplicações


Revisão de Bancos de Dados

Banco de Dados I Introdução SQL

TLBD II Instruções SQL

Fundamentos de Bases de Dados e-fólio B Resolução e Critérios de Correção

Oracle Database 11g: Introdução à Linguagem SQL Novo

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Views. uma view é uma tabela virtual. não existe fisicamente na BD. é definida à custa de outras tabelas ou views. CREATE VIEW <nome> AS <query>;

Banco de Dados. Professora: Luciana Faria

SQL: Vistas, Indices, Autorização, Restrições

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

IMPLEMENTAÇÃO DE BANCO DE DADOS

GBC043 Sistemas de Banco de Dados

SQL Básica. Andre Noel

Bancos (Bases) de Dados

U.C Fundamentos de Bases de Dados Resolução e Critérios de Correção INSTRUÇÕES:

Aula 06 Sistemas Embarcados LT38C

SQL (Tópicos) Structured Query Language

Administração de Usuários e Privilégios no Banco de Dados

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

BANCO DE DADOS TRIGGERS (GATILHOS) Prof. Fabiano Papaiz IFRN

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

SQL Structured Query Language. SQL Structured Query Language. SQL Structured Query Language. Composição do SQL. Composição do SQL.

Introdução em Banco de Dados

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

Tabelas. Banco de Dados I MySQL

Aula 12 Revisão. Prof. Filipe Wall Mutz

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

Rápida revisão do Modelo Relacional

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SISTEMAS DE INFORMAÇÃO

Bases de Dados. DDL Data Definition Language

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Visões. Definição de Visões

Revisão Banco de Dados

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Marcos Alexandruk Marcos Alexandruk

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Planificação Anual. Departamento Expressões e Tecnologias

Administração de Banco de Dados

SQL Structured Query Language. SQL Linguagem de Definição de Dados. SQL Structured Query Language. SQL Structured Query Language

Introdução ao PostgreSQL

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Banco de Dados II. Administração do SGBD Oracle. Tablespaces, usuários, privilégios, papéis e perfis. Gustavo Dibbern Piva

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

A linguagem SQL

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

BANCO DE DADOS GERENCIAL 1 A U L A 2

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 18. Escola Politécnica da Universidade de São Paulo

26/04/2017 Triggers no SQL Server: teoria e prática aplicada em uma situação real

L Q S m e g a u g n Li A

Restrições ao Domínio Integridade Referencial Asserções Triggers Segurança e Autorizações

Administração de Banco de Dados

MySQL: Controle de Acesso

Teste Exemplo Revisão da tentativa 1

Tarefa Orientada 17 Scripts

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Época Normal 2º Teste Sem consulta

BANCO DE DADOS FACSUL 2017 TECNOLOGIA DE REDE DE COMPUTADORES

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Lidando com Armazenamento de Dados

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

PostgreSQL Desenvolvedor

Segurança de Acesso a Banco de Dados no MS SQL Server

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

Modelagem Física e SQL

S Q L Asserções, Visões e Técnicas de Programação. Daniel Bordignon Cassanelli Fernando Luiz Grando Pedro Patitucci Finamore

SQL. Índices, views e restrições. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 20. Escola Politécnica da Universidade de São Paulo

GBC043 Sistemas de Banco de Dados

Transcrição:

BANCO DE DADOS WEB AULA 9 concessão e revogação de privilégios professor Luciano Roberto Rocha www.lrocha.com

O que são privilégios Quem cria o objeto no banco de dados se torna o seu dono. Por padrão, apenas o dono do objeto pode fazer qualquer coisa com o objeto. Para permitir outros usuários utilizarem o objeto, devem ser concedidos privilégios. Os usuários que possuem o atributo de superusuário sempre podem acessar qualquer objeto independentemente dos privilégios definidos para o objeto. O direito de modificar e destruir um objeto são sempre privilégios exclusivos do seu criador. 2

O que são privilégios Existem vários privilégios diferentes: SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE e USAGE. Os privilégios aplicáveis a um determinado tipo de objeto variam de acordo com o tipo do objeto (tabela, função, etc.). Para conceder privilégios a usuários e grupos, utiliza-se o comando GRANT. Qualquer privilégio concedido pelo comando GRANT é adicionado aos já concedidos, se existirem. 3

Como definir privilégios Sinopse GRANT { { SELECT INSERT UPDATE DELETE RULE REFERENCES TRIGGER } [,...] ALL [ PRIVILEGES ] } ON [ TABLE ] nome_da_tabela [,...] TO { nome_do_usuário GROUP nome_do_grupo PUBLIC } [,...] [ WITH GRANT OPTION ] GRANT { { CREATE TEMPORARY TEMP } [,...] ALL [ PRIVILEGES ] } ON DATABASE nome_do_banco_de_dados [,...] TO { nome_do_usuário GROUP nome_do_grupo PUBLIC } [,...] [ WITH GRANT OPTION ] GRANT { EXECUTE ALL [ PRIVILEGES ] } ON FUNCTION nome_da_função ([tipo,...]) [,...] TO { nome_do_usuário GROUP nome_do_grupo PUBLIC } [,...] [ WITH GRANT OPTION ] GRANT { USAGE ALL [ PRIVILEGES ] } ON LANGUAGE nome_da_linguagem [,...] TO { nome_do_usuário GROUP nome_do_grupo PUBLIC } [,...] [ WITH GRANT OPTION ] GRANT { { CREATE USAGE } [,...] ALL [ PRIVILEGES ] } ON SCHEMA nome_do_esquema [,...] TO { nome_do_usuário GROUP nome_do_grupo PUBLIC } [,...] [ WITH GRANT OPTION ] GRANT { CREATE ALL [ PRIVILEGES ] } ON TABLESPACE nome_do_espaço_de_tabelas [,...] TO { nome_do_usuário GROUP nome_do_grupo PUBLIC } [,...] [ WITH GRANT OPTION ] 4

Como definir privilégios A palavra chave PUBLIC indica que os privilégios devem ser concedido para todos os usuários, inclusive aos que vierem a ser criados posteriormente. PUBLIC pode ser considerado como um grupo definido implicitamente que sempre inclui todos os usuários. Um determinado usuário possui a soma dos privilégios concedidos diretamente para o mesmo, mais os privilégios concedidos para todos os grupos que este seja membro, mais os privilégios concedidos para PUBLIC. 5

Como definir privilégios Se for especificado WITH GRANT OPTION quem receber o privilégio poderá, por sua vez, conceder o privilégio a terceiros. Sem a opção de concessão, quem recebe não pode conceder o privilégio. As opções de concessão somente podem ser concedidas a usuários individuais, e não a grupos ou PUBLIC. Não é necessário conceder privilégios para o dono do objeto (geralmente o usuário que o criou), entretanto, o dono pode decidir revogar alguns de seus próprios privilégios por motivo de segurança. 6

Tipos de privilégios Os privilégios possíveis são: SELECT Permite consultar (SELECT) qualquer coluna da tabela, visão ou seqüência especificada. Também permite utilizar o comando COPY TO. Para as seqüências, este privilégio também permite o uso da função currval. INSERT Permite inserir (INSERT) novas linhas na tabela especificada. Também permite utilizar o comando COPY FROM. UPDATE Permite modificar (UPDATE) os dados de qualquer coluna da tabela especificada. Para as seqüências, este privilégio permite o uso das funções nextval e setval. DELETE Permite excluir (DELETE) linhas da tabela especificada. 7

Tipos de privilégios RULE Permite criar regras para a tabela ou para a visão (Consulte o comando CREATE RULE). REFERENCES Para criar uma restrição de chave estrangeira é necessário possuir este privilégio, tanto na tabela que faz referência quanto na tabela que é referenciada. TRIGGER Permite criar gatilhos na tabela especificada (Consulte o comando CREATE TRIGGER). TEMPORARY TEMP Permite a criação de tabelas temporárias ao usar o banco de dados. 8

Tipos de privilégios CREATE Para bancos de dados, permite a criação de novos esquemas no banco de dados. Para esquemas, permite a criação de novos objetos no esquema. Para mudar o nome de um objeto existente é necessário ser o dono do objeto e possuir este privilégio no esquema que o contém. Para espaços de tabelas (tablespaces), permite a criação de tabelas e índices no espaço de tabelas, e permite a criação de bancos de dados possuindo este espaço de tabelas como seu espaço de tabelas padrão. EXECUTE Permite utilizar a função especificada e qualquer operador implementado utilizando a função. Este é o único tipo de privilégio aplicável às funções (Esta sintaxe funciona para as funções de agregação também). 9

Tipos de privilégios USAGE Para as linguagens procedurais, permite o uso da linguagem especificada para criar funções nesta linguagem. Este é o único tipo de privilégio aplicável às linguagens procedurais. Para os esquemas, permite acessar os objetos contidos no esquema especificado (assumindo que os privilégios requeridos para os próprios objetos estejam atendidos). Essencialmente, concede a quem recebe o direito de procurar por objetos dentro do esquema. ALL PRIVILEGES Concede todos os privilégios disponíveis de uma só vez. A palavra chave PRIVILEGES é opcional no PostgreSQL, embora seja requerida pelo SQL estrito. 10

Conceder um Privilégio Exemplos Conceder, para todos os usuários, o privilégio de inserção na tabela filmes: GRANT INSERT ON filmes TO PUBLIC; Conceder ao usuário manuel todos os privilégios disponíveis na visão vis_tipos: GRANT ALL PRIVILEGES ON vis_tipos TO manuel; Conceder o privilégio de consulta na tabela contas para o grupo contabilidade: GRANT SELECT ON contas TO GROUP contabilidade; Conceder, para o usuário sergio, todos os privilégios no banco winestore e extender a ele a possibilidade de conceder privilégios a outros usuários: GRANT ALL ON DATABASE winestore TO sergio WITH GRANT OPTION 11

Listar os privilégios Pode ser usado o comando \z ou \dp do aplicativo psql para obter informações sobre os privilégios concedidos como, por exemplo: => \z minha_tabela Privilégios de acesso ao banco dados "lusitania" Esquema Nome Tipo Privilégios de acesso ---------+--------------+--------+------------------------------------------------------------ public minha_tabela tabela {miriam=arwdrxt/miriam,=r/miriam,"group todos=arw/miriam"} (1 linha) O exemplo mostrado acima seria visto pela usuária miriam após esta ter criado a tabela minha_tabela e executado: GRANT SELECT ON minha_tabela TO PUBLIC; GRANT SELECT, UPDATE, INSERT ON minha_tabela TO GROUP todos; 12

Listar os privilégios As entradas mostradas pelo comando \z são interpretadas da seguinte forma: =xxxx -- privilégios concedidos para PUBLIC uname=xxxx -- privilégios concedidos para o usuário group gname=xxxx -- privilégios concedidos para o grupo r -- SELECT ("read") w -- UPDATE ("write") a -- INSERT ("append") d -- DELETE R -- RULE x -- REFERENCES t -- TRIGGER X -- EXECUTE U -- USAGE C -- CREATE T -- TEMPORARY arwdrxt -- ALL PRIVILEGES (para tabelas) * -- opção de concessão para o privilégio precedente /yyyy -- usuário que concedeu o privilégio 13

Revogar privilégios REVOKE: revoga privilégios de acesso. Descrição O comando REVOKE revoga, de um ou mais usuários ou grupos de usuários, privilégios concedidos anteriormente. A palavra chave PUBLIC se refere ao grupo contendo todos os usuários, definido implicitamente. Sinopse REVOKE [ GRANT OPTION FOR ] { { SELECT INSERT UPDATE DELETE RULE REFERENCES TRIGGER } [,...] ALL [ PRIVILEGES ] } ON [ TABLE ] nome_da_tabela [,...] FROM { nome_do_usuário GROUP nome_do_grupo PUBLIC } [,...] [ CASCADE RESTRICT ] 14

Revogar privilégios Deve ser observado que um determinado usuário possui a soma dos privilégios concedidos diretamente para o próprio usuário, mais os privilégios concedidos para os grupos dos quais é membro no momento, mais os privilégios concedidos para PUBLIC. Daí, por exemplo, revogar o privilégio SELECT de PUBLIC não significa, necessariamente, que todos os usuários perderão o privilégio SELECT para o objeto: os usuários que receberam o privilégio diretamente, ou por meio de um grupo, ainda terão o privilégio. Se for especificado GRANT OPTION FOR somente a opção de concessão do privilégio é revogada, e não o próprio privilégio. Caso contrário, tanto o privilégio quanto a opção de concessão serão revogados. 15

Revogar um Privilégio Exemplos Revogar o privilégio de inserção na tabela filmes concedido para todos os usuários: REVOKE INSERT ON filmes FROM PUBLIC; Revogar todos os privilégios concedidos ao usuário manuel sobre a visão vis_tipos: REVOKE ALL PRIVILEGES ON vis_tipos FROM manuel; Obs.: Deve ser observado que este comando significa, na verdade, revogue todos os privilégios que eu concedi. 16

Casos especiais Um determinado usuário pode revogar somente os privilégios que foram concedidos diretamente por este usuário. Se, por exemplo, o usuário A concedeu um privilégio com opção de concessão para o usuário B, e o usuário B por sua vez concedeu o privilégio para o usuário C, então o usuário A não poderá revogar diretamente o privilégio de C. Em vez disso, o usuário A poderá revogar a opção de concessão do usuário B usando a opção CASCADE, para que o privilégio seja, por sua vez, revogado do usuário C. Outro exemplo é o caso em que tanto A quanto B concederam o mesmo privilégio a C: neste caso A poderá revogar sua própria concessão, mas não poderá revogar a concessão feita por B e, portanto, C continuará com o privilégio mesmo que A revogue o privilégio. 17

18