Como proteger dados com privilégios de usuário SQL

A grande ameaça para a integridade dos dados são os próprios usuários. Algumas pessoas não deve ter acesso aos dados e SQL lhe dá esse controle. Outros só deve ter acesso restrito a alguns dos dados, mas sem acesso ao resto. Alguns devem ter acesso ilimitado a tudo no banco de dados. Você precisa de um sistema para classificar os usuários e para a atribuição de privilégios de acesso para os usuários em diferentes categorias.

O criador de um esquema especifica que é considerado seu proprietário. Como o proprietário de um esquema, você pode conceder privilégios de acesso para os usuários especificados. Você também pode revogar os privilégios que você já concedidos. Um usuário deve passar por um procedimento de autenticação para provar a sua identidade antes que ele possa acessar os arquivos que você autorizá-lo a usar. As especificidades deste procedimento depende da implementação.

SQL dá-lhe a capacidade de proteger os seguintes objetos de banco de dados:

  • tabelas

  • colunas

  • Visualizações

  • domínios

  • Os conjuntos de caracteres

  • agrupamentos

  • traduções

SQL suporta vários tipos diferentes de protecção: ver, adicionar, modificar, apagar, fazendo referência, e utilização bancos de dados. Ele também suporta protecções associados com a execução das rotinas externas.

Você permitir o acesso usando a CONCEDER declaração e remover o acesso usando a REVOGAR declaração. Ao controlar a utilização do SELECIONAR declaração, os controles de DCL que podem ver um objeto de banco de dados, como uma tabela, coluna ou vista. controlando o INSERIR declaração determina quem pode adicionar novas linhas em uma tabela.

A restrição da utilização do ATUALIZAR declaração para usuários autorizados lhe dá o controle de quem pode modificar a tabela rows- restringir o EXCLUIR controlos da declaração, que pode excluir linhas da tabela.

Se uma tabela em um banco de dados contém como uma chave estrangeira uma coluna que é uma chave primária em outra tabela no banco de dados, você pode adicionar uma restrição para a primeira mesa para que ele faz referência a segunda tabela. Quando uma tabela de referência a um outro, um utilizador da primeira tabela pode ser capaz de deduzir informação sobre o conteúdo do segundo.

Como o proprietário da segunda tabela, você pode querer evitar essa espionagem. o Referências GRANT declaração lhe dá esse poder. Ao utilizar o USO GRANT declaração, você pode controlar quem pode usar - ou mesmo ver - o conteúdo de um domínio, conjunto de caracteres, intercalação, ou tradução.

operação de proteçãoDeclaração
Permitir ao utilizador ver uma tabelaGRANT SELECIONAR
Impedir usuário veja uma tabelaREVOKE SELECIONAR
Permitir que o usuário adicionar linhas a uma tabelaGRANT INSERIR
Impedir que o usuário de adicionar linhas a uma tabelaREVOKE INSERIR
Permitir que o usuário alterar os dados em linhas da tabelaGRANT ATUALIZAÇÃO
Impedir que os usuários alterem dados em linhas da tabelaREVOKE ATUALIZAÇÃO
Permitir que o usuário para excluir linhas da tabelaGRANT APAGAR
Impedir usuário exclua linhas da tabelaREVOKE APAGAR
Permitir que o usuário para fazer referência a uma tabelaReferências GRANT
Impedir utilizador de referenciar uma tabelaREVOKE Referências
Permitir que o usuário usar um domínio, conjunto de caracteres, tradução, orcollationGRANT USAGE ON domínio, conceda USO ONCHARACTER SET, GRANT USAGE ON COLLATION, GRANT USAGE ONTRANSLATION
Impedir usuário de usar um domínio, conjunto de caracteres, intercalação, ortranslationREVOKE Uso na DOMÍNIO, REVOKE Uso na CHARACTER SET, revogar Uso na COLLATION, revogar USO EM TRADUÇÃO

Você pode dar diferentes níveis de acesso para pessoas diferentes, dependendo de suas necessidades. Os comandos a seguir oferecem alguns exemplos dessa capacidade:

GRANT selecton CUSTOMERTO SALES_MANAGER-

O exemplo anterior permite que uma pessoa - o gerente de vendas - ver tabela de clientes.

O exemplo a seguir permite que qualquer pessoa com acesso ao sistema para ver a lista de preços de retalho:

GRANT selecton RETAIL_PRICE_LISTTO público

O exemplo a seguir permite que o gerente de vendas para modificar a lista de preços de varejo. Ela pode alterar o conteúdo de linhas existentes, mas ela não pode adicionar ou excluir linhas:

GRANT UPDATEON RETAIL_PRICE_LISTTO SALES_MANAGER-

O exemplo a seguir permite que o gerente de vendas para adicionar novas linhas à lista de preço de varejo:

GRANT INSERTON RETAIL_PRICE_LISTTO SALES_MANAGER-

Agora, graças a este último exemplo, o gerente de vendas pode excluir linhas indesejadas da mesa, também:

VENDAS RETAIL_PRICE_LISTTO GRANT DELETEON gerente-

menu