• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
18
0
0

Texto

(1)

BANCO DE DADOS WEB

AULA

9

professor Luciano Roberto Rocha

(2)

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

(3)

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.

(4)

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 [, ...]

(5)

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.

(6)

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.

(7)

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

(8)

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

(9)

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).

(10)

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.

(11)

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:

(12)

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;

(13)

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

(14)

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 } [, ...]

(15)

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.

(16)

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

(17)

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.

(18)

Referências

Documentos relacionados

Corporate Control and Policies Page 12 UNIVERSIDAD DE PIURA UNIVERSIDAD DEL PACÍFICO UNIVERSIDAD ESAN UNIVERSIDAD NACIONAL AGRARIA LA MOLINA UNIVERSIDAD NACIONAL

3.3.7.1 Os adidos militares estrangeiros e seus adjuntos gozarão, no País, dos privilégios e imunidades concedidos pelo Governo brasileiro aos membros da missão diplomática do

Na imagem abai- xo, por exemplo, as dimensões e o posicionamento dos personagens (Tio Sam e Cardoso) traduzem, em linguagem simples, o desnível geopolítico existente entre Brasil

Condensação pode ocorrer quando um reservatório contendo um vapor tem sua parede resfriada, como ilustrado na Figura 5.1, na qual também são ilustrados os perfis de velocidade e

O produto a ser ofertado pela MultiFit Gourmet será um tipo de alimentação voltada para pessoas que fazem musculação, que precisam se alimentar de maneira

Quando a luz acende, o console está sob a condição de monitoramento, com os medidores de nível principal mostrando o nível do sinal do canal do monitor e o sinal do canal é

A Tabela 6 identifica as categorias de CI mais empregadas nos estudos investigados. Percebe-se que as categorias empregadas referem-se a categorias que mesclam a

Operational and bacilloscopic characterization of Hansen’s disease patients positively contributes in the early diagnosis of re- actions, because there is a higher chance of