Linguagem de controle de dados (DCL) para permissões de banco de dados
o Linguagem de controle de dados é um subconjunto da Structured Query Language. Os administradores de banco de dados usam DCL para configurar o acesso de segurança aos bancos de dados relacionais. Complementa o Linguagem de definição de dados, que adiciona e exclui objetos de banco de dados, e o Linguagem de manipulação de dados, que recupera, insere e modifica o conteúdo de um banco de dados.
DCL é o mais simples dos subconjuntos SQL, pois consiste em apenas três comandos: GRANT, REVOKE e DENY. Combinados, esses três comandos fornecem aos administradores a flexibilidade de definir e remover permissões de banco de dados de maneira granular.
Adicionando permissões com o comando GRANT
O comando GRANT adiciona novas permissões a um usuário do banco de dados. Possui uma sintaxe muito simples, definida da seguinte forma:
GRANT [privilégio]
ON [objeto]
Ao usuário]
[COM OPÇÃO DE CONCESSÃO]
Aqui está o resumo de cada um dos parâmetros que você pode fornecer com este comando:
-
Privilégio - pode ser a palavra-chave ALL (para conceder uma ampla variedade de permissões) ou uma permissão de banco de dados específico ou conjunto de permissões. Os exemplos incluem CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE e CREATE VIEW.
- Objeto - pode ser qualquer objeto de banco de dados. As opções de privilégio válidas variam com base no tipo de objeto de banco de dados que você inclui nesta cláusula. Normalmente, o objeto será um banco de dados, função, procedimento armazenado, mesa ou vista.
- Do utilizador - pode ser qualquer usuário do banco de dados. Você também pode substituir uma função para o usuário nesta cláusula se desejar fazer uso da segurança de banco de dados baseada em função.
- Se você incluir o opcional COM OPÇÃO DE GRANT cláusula no final do comando GRANT, você não apenas concede ao usuário especificado as permissões definido na instrução SQL, mas também dá ao usuário permissão para conceder ainda mais os mesmos permissões para de outros usuários do banco de dados. Por esse motivo, use esta cláusula com cuidado.
Por exemplo, suponha que você deseja conceder ao usuário Joe a capacidade de recuperar informações do empregado mesa em uma base de dados chamado RH. Use o seguinte comando SQL:
GRANT SELECT
ON HR.employees
PARA Joe.
Joe pode recuperar informações da mesa dos funcionários. Ele não poderá, entretanto, conceder a outros usuários permissão para recuperar informações dessa tabela porque o script DCL não incluiu a cláusula WITH GRANT OPTION.
Revogando o acesso ao banco de dados
O comando REVOKE remove o acesso ao banco de dados de um usuário que tenha previamente concedido tal acesso. A sintaxe deste comando é definida da seguinte maneira:
REVOGAR [OPÇÃO DE CONCESSÃO] [permissão]
ON [objeto]
DE [usuário]
[CASCATA]
Aqui está o resumo dos parâmetros para o comando REVOKE:
- Permissão - especifica as permissões do banco de dados a serem removidas do usuário identificado. O comando revoga as afirmações GRANT e DENY feitas anteriormente para a permissão identificada.
- Objeto - pode ser qualquer objeto de banco de dados. As opções de privilégio válidas variam com base no tipo de objeto de banco de dados que você inclui nesta cláusula. Normalmente, o objeto será um banco de dados, função, procedimento armazenado, tabela ou visualização.
- Do utilizador - pode ser qualquer usuário do banco de dados. Você também pode substituir uma função para o usuário nesta cláusula se desejar fazer uso da segurança de banco de dados baseada em função.
- o OPÇÃO DE CONCESSÃO PARA A cláusula remove a capacidade do usuário especificado de conceder a permissão especificada a outros usuários. Se você incluir o OPÇÃO DE CONCESSÃO PARA cláusula em uma instrução REVOKE, a permissão primária não é revogada. Esta cláusula revoga apenas a capacidade de concessão.
- o CASCATA A opção também revoga a permissão especificada de quaisquer usuários aos quais o usuário especificado concedeu a permissão.
O comando a seguir revoga a permissão concedida a Joe no exemplo anterior:
REVOGAR SELEÇÃO
ON HR.employees
DE Joe.
Negar explicitamente o acesso ao banco de dados
O comando DENY impede explicitamente que um usuário receba uma permissão específica. Este recurso é útil quando um usuário é membro de uma função ou grupo ao qual foi concedida uma permissão e você deseja evitar que esse usuário individual herde a permissão criando uma exceção. A sintaxe deste comando é a seguinte:
NEGAR [permissão]
ON [objeto]
Ao usuário]
Os parâmetros para o comando DENY são idênticos aos usados para o comando GRANT. Por exemplo, se você deseja garantir que Matthew nunca receba a capacidade de excluir informações da tabela de funcionários, emita o seguinte comando:
NEGAR EXCLUIR
ON HR.employees
PARA Matthew.