Visões e Autorização de Acesso

  • Published on
    01-Jan-2016

  • View
    19

  • Download
    2

Embed Size (px)

DESCRIPTION

Vises e Autorizao de Acesso. Vania Bogorny. Vises. Dois objetivos principais das vises: Simplificar consultas Autorizao de acesso (segurana). Conceito. Viso: um meio de prover ao usurio um modelo personalizado do banco de dados - PowerPoint PPT Presentation

Transcript

  • Vises e Autorizao de AcessoVania Bogorny

  • VisesDois objetivos principais das vises:Simplificar consultasAutorizao de acesso (segurana)

  • ConceitoViso: um meio de prover ao usurio um modelo personalizado do banco de dados uma relao que no armazena dados, composta dinamicamente por uma consulta que previamente analisada e otimizada.

  • VisoUm SGBD pode dar suporte a um grande nmero de vises sobre qualquer conjunto de relaes O SGBD armazena a definio da viso, mas ela instanciada quando uma consulta sobre ela for executada Toda viso pode ser consultada mas nem toda viso pode ser atualizada

  • Criao e consultas em vises

  • Em SQL uma viso definida como;Create view nomeDaVisao ,Onde qualquer expresso de consulta vlida em SQL

    Projeto (codProj, tipo, descricao)ProjetoEmpregado (codProj, codEmp, dataInicial, dataFinal)Empregado (codEmp, nome, categoria, salario)

    Create view vAltoEscalao as select codEmp, nome, salariofrom empregado where salario>10000

    Esta viso ter os atributos especificados na consultaTabela base

  • Viso sobre uma relaoOutra forma

    Create view vAltoEscalao (a, b, c) as select codEmp, nome, salariofrom empregado where salario>10000

    Esta viso ter os atributos a, b, c, que sero instanciados com os respectivos valores recuperados pela consulta (codEmp, nome, salario)

  • Viso com vrias relaesProjetos do alto escalo ( viso com vrias tabelas)Projeto (codProj, tipo, descricao)ProjetoEmpregado (codProj, codEmp, dataInicial, dataFinal)Empregado (codEmp, nome, categoria, salario)

    Create view vProjetoAltoEscalao as select e.codEmp, e.nome, e.salario, p.descricaofrom empregado e, projeto p, projetoEmpregado pe where e.salario>10000 AND e.codEmp=pe.codEmp AND pe.codProj=p.codProj

  • Viso: recursividade (viso sobre viso)Projetos do alto escaloo (viso sobre viso)Projeto (codProj, tipo, descricao)ProjetoEmpregado (codProj, codEmp, dataInicial, dataFinal)Empregado (codEmp, nome, categoria, salario)vAltoEscalao (codEmp, nome, salario)

    Create view vProjetosAltoEscalao as select e.codEmp, a.nome, a.salario, p.descricaofrom altoEscalao a, projeto p, projetoEmpregado pe where a.codEmp=pe.codEmp AND pe.codProj=p.codProj

  • Consultas em VisesConsultas SQL podem ser especificadas sobre a viso select nomefrom vProjetosAltoEscalaoWhere descricao = Projeto A

    Uma viso est sempre atualizada: Ao modificar tuplas nas tabelas envolvidas na viso, a viso vai automaticamente refletir as alteraesA viso no realizada quando criada mas quando executamos uma consulta sobre ela

  • Consultas em VisesQuando uma viso no mais necessria podemos elimin-la, usando o comando drop view DROP VIEW nomeDaVisao

  • Autorizao de Acesso

  • Autorizao de AcessoObjetivo proteo contra acessos mal intencionadoscontrolar quais dados um usurio/grupo de usurios pode ter acessocontrolar quais operaes um usurio/grupo de usurios pode realizar sobre estes dados

  • Autorizao de Acesso: ExemplosExemplo 1: Em um sistema bancrio, um funcionrio precisa saber os dados dos clientes, mas apenas os que tem conta poupana na agncia 1899-6

    Exemplo 2: um funcionrio de uma empresa deve ter acesso aos nomes dos funcionrios e aos seus projetos, mas no de ter acesso ao salrio dos funcionriosEmpregado (#codEmp, nome, categoria, salario)Projeto (#codProj, tipo, descricao)ProjetoEmpregado (# codProj, # codEmp, dataInicial, dataFinal)Cliente (#codCli, nome, endereco, codCidade)Agencia (#codAgencia, nome, descricao)Poupana (# numConta, # codAgencia, # codCli, saldo)

  • Autorizao de AcessoUm usurio do Banco de dados pode ter diversas formas de autorizao a partes do BD:O DBA o superusurio do BD, que pode tudo alguns privilgios so exclusivos dele, como a recuperao do BD, a configurao de parmetros do SGBD, etc. concede/retira (revoga) privilgios de acesso aos outros usurios

  • Autorizao de AcessoDuas formas principais de acesso:Nvel de conta (usurio): o administrador do BD pode dar permisses aos usurios para criar esquemas, modificar e criar tabelas e selecionar dadosO DBA estabelece permisses da conta, independente das relaes do BDNvel de relao/viso: o DBA pode controlar o privilgio de acesso de cada usurio a relaes ou vises especficas do BDdefinidas para SQLPara cada usurio podem ser dadas permisses de leitura(seleo), modificao e referncia

  • Autorizao de Acesso

    Autorizao de leitura: permite apenas recuperar dados de uma relao permisso selectAutorizao de modificao: privilgios para insert, delete e updatePara insert e update possvel restringir os atributosAutorizao de referncia: uma conta (de usurio) pode fazer referncia a uma relao ao especificar restries de integridadePode ser por atributo

  • Autorizao de Acesso em SQL

    Lista basica: alter, delete, index, insert, select e update

    Sintaxe:grant on to Exemplo:grant select on cliente to U1, U2, U3grant update (saldo) on deposito to U1, U2

  • Autorizao de Acesso: ExemplosExemplo 1: Em um sistema bancrio, um funcionrio precisa saber os dados dos clientes, mas apenas os que tem conta poupana na agncia 1899-6

    Soluo: usar viewsCreate view vClientePoupancaAgencia as select c.codCli, c.nome, p.numContafrom cliente c, poupanca p where c.codCli=p.cod_cli andp.codAgencia=1899-6

    grant select on vClientePoupancaAgencia to U10

    Cliente (codCli, nome, endereco, codCidade)Agencia (codAgencia, nome, descricao)Poupana ( numConta, # codAgencia, # codCli, saldo)

  • Autorizao de Acesso: ExemplosExemplo 2: um funcionrio de uma empresa deve ter acesso aos nomes dos funcionrios e aos seus projetos, mas no de ter acesso ao salrio dos funcionrios

    Create view vEmpregadoProjeto as select e.codEmp, e.nome, p.tipo, p.descricao, j.dataInicial, j.dataFinalfrom empregado e, projeto p, projetoEmpregado j where e.codEmp=j.codEmp and j.codProj=p.codProj

    grant select on vEmpregadoProjeto to U50

    Empregado (codEmp, nome, categoria, salario)Projeto (#codProj, tipo, descricao)ProjetoEmpregado (# codProj, # codEmp, dataInicial, dataFinal)

  • Autorizao de AcessoRoles (Papis): so interessantes quando um grupo de usurios tem as mesmas restries de acesso: ex: vrios caixas de um banco (vrias agncias) tem permisso para creditar e debitar valores na conta dos clientes. Ao invs de dar permisso de incluso, alterao e excluso para cada um dos caixas que tem este direito, cria-se o papel movimentao

    Create role movimentaao

    E d-se a permisso ao papel

    Grant insert, update, delete ON TABELA to movimentaao

    Vincula todos os usuarios ao papel

    GRANT movimentao TO A, B, C, C

  • Exemplo CompletoSuponha que o DBA crie 4 contas U1, U2, U3 e U4.1) Somente U1 deve criar relaes no banco (privilgio de conta)grant createTab to U12) com essa autorizao o usurio U1 pode criar relaes e ter TODOS os privilgios sobre elas Suponha que U1 criou as relaesEmpregado (codEmp, nome, categoria, salario)Projeto (#codProj, tipo, descricao)ProjetoEmpregado (# codProj, # codEmp, dataInicial, dataFinal)

  • Exemplo Completo3) Suponha que U1 quer dar ao usurio U2 permisso para incluir e remover tuplas em Empregado e Projetogrant INSERT, DELETE ON EMPREGADO,PROJETO TO U24) Suponha que U1 quer dar ao usurio U3 permisso para recuperar tuplas em Empregado e seja capaz de PROPAGAR este privilgiogrant SELECT ON EMPREGADO TO U3 WITH GRANT OPTION

    Empregado (codEmp, nome, categoria, salario)Projeto (#codProj, tipo, descricao)

  • Exemplo Completo4) Agora U3 pode conceder privilgio de seleo para U4 sobre a relao Empregado grant SELECT ON EMPREGADO TO U4Obs: U4 no pode propagar este privilgio5) Suponha que U1 queira revogar a permisso de U3REVOKE SELECT ON EMPEGADO FROM U3

    Empregado (codEmp, nome, categoria, salario)Projeto (#codProj, tipo, descricao)

  • Exemplo Completo6)Suponha que U1 queira dar ao usurio U3 permisso apenas para consultar empregados que trabalhem no projeto AATOM.

    Create view vEmpregadoProjeto as select e.codEmp, e.nome, e.categoria, e.salariofrom empregado e, projeto p, projetoEmpregado j where e.codEmp=j.codEmp and j.codProj=p.codProj and p.descricao=AATOM

    grant SELECT ON vEMRPEGADOProjeto TO U3

    Empregado (codEmp, nome, categoria, salario)Projeto (codProj, tipo, descricao)ProjetoEmpregado (# codProj, # codEmp, dataInicial, dataFinal)

  • grant all to {listaUsurios | public}

  • Lista de Permisses no PostgreSQLGRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ] tablename [, ...] TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    GRANT { { USAGE | SELECT | UPDATE } [,...] | ALL [ PRIVILEGES ] } ON SEQUENCE sequencename [, ...] TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE dbname [, ...] TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...] TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    GRANT { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE langname [, ...] TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schemaname [, ...] TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    GRANT { CREATE | ALL [ PRIVILEGES ] } ON TABLESPACE tablespacename [, ...] TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    GRANT role [, ...