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ção | Declaração |
---|---|
Permitir ao utilizador ver uma tabela | GRANT SELECIONAR |
Impedir usuário veja uma tabela | REVOKE SELECIONAR |
Permitir que o usuário adicionar linhas a uma tabela | GRANT INSERIR |
Impedir que o usuário de adicionar linhas a uma tabela | REVOKE INSERIR |
Permitir que o usuário alterar os dados em linhas da tabela | GRANT ATUALIZAÇÃO |
Impedir que os usuários alterem dados em linhas da tabela | REVOKE ATUALIZAÇÃO |
Permitir que o usuário para excluir linhas da tabela | GRANT APAGAR |
Impedir usuário exclua linhas da tabela | REVOKE APAGAR |
Permitir que o usuário para fazer referência a uma tabela | Referências GRANT |
Impedir utilizador de referenciar uma tabela | REVOKE Referências |
Permitir que o usuário usar um domínio, conjunto de caracteres, tradução, orcollation | GRANT 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, ortranslation | REVOKE 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-