Skip to content

Controles de acesso para usuários e funções em SQL

17 de abril de 2021

Neste artigo

Todos os sistemas de gerenciamento de banco de dados relacional fornecem algum tipo de mecanismo de segurança intrínseco projetado para minimizar as ameaças de perda de dados, corrupção de dados ou roubo de dados. Eles variam da simples proteção por senha oferecida pelo Microsoft Access à complexa estrutura de usuário / função suportada por bancos de dados relacionais avançados como Oracle e Microsoft SQL Server. Alguns mecanismos de segurança são comuns a todos os bancos de dados que implementam a Structured Query Language.

Segurança em nível de usuário

Bancos de dados baseados em servidor suportam um do utilizador conceito semelhante ao usado em sistemas operacionais de computador. Se você estiver familiarizado com a hierarquia de usuário / grupo encontrada no Microsoft Windows NT e Windows 2000, verá que os agrupamentos de usuário / função suportados pelo SQL Server e Oracle são semelhantes. Crie contas de usuário de banco de dados individuais para cada pessoa com acesso ao seu banco de dados. Evite provisionar contas genéricas acessíveis por várias pessoas diferentes. Em primeiro lugar, essa prática elimina a responsabilidade individual – se um usuário fizer uma alteração em seu banco de dados (digamos, dando a si mesmo um aumento de $ 5.000), você não poderá rastreá-lo até uma pessoa específica por meio do uso de logs de auditoria. Em segundo lugar, se um usuário específico deixar sua organização e você desejar remover seu acesso do banco de dados, você deve alterar a senha da qual todos os usuários dependem.

OstapenkoOlena / Getty Images
Os métodos para criar contas de usuário variam de plataforma para plataforma e você terá que consultar a documentação específica do DBMS para o procedimento exato. Os usuários do Microsoft SQL Server devem investigar o uso do sp_adduser procedimento armazenado. Os administradores de banco de dados Oracle encontrarão o CRIAR USUÁRIO comando útil. Você também pode querer investigar esquemas de autenticação alternativos. Por exemplo, o Microsoft SQL Server oferece suporte ao uso da Segurança Integrada do Windows NT. Sob este esquema, os usuários são identificados no banco de dados por suas contas de usuário do Windows NT e não são obrigados a inserir um ID de usuário e senha adicionais para acessar o banco de dados. Essa abordagem é popular entre os administradores de banco de dados porque transfere o fardo do gerenciamento de contas para a equipe de administração da rede e fornece a facilidade de um único logon para o usuário final.

Segurança em nível de função

Se você estiver em um ambiente com um pequeno número de usuários, provavelmente descobrirá que criar contas de usuário e atribuir permissões diretamente a eles é suficiente para suas necessidades. No entanto, se você tiver um grande número de usuários, ficará sobrecarregado por manter contas e permissões adequadas. Para aliviar esse fardo, os bancos de dados relacionais oferecem suporte papéis. As funções de banco de dados funcionam de maneira semelhante aos grupos do Windows NT. As contas de usuário são atribuídas a funções e as permissões são atribuídas à função como um todo, em vez de às contas de usuário individuais. Por exemplo, você pode criar uma função de DBA e, em seguida, adicionar as contas de usuário de sua equipe administrativa a essa função. Depois disso, você pode atribuir uma permissão específica a todos os administradores atuais (e futuros) simplesmente atribuindo a permissão à função. Mais uma vez, os procedimentos para criar funções variam de plataforma para plataforma. Os administradores do MS SQL Server devem investigar o sp_addrole procedimento armazenado enquanto os DBAs Oracle devem usar o CRIAR PAPEL sintaxe.

Concessão de permissões

Agora que adicionamos usuários ao nosso banco de dados, é hora de começar a fortalecer a segurança adicionando permissões. Nosso primeiro passo será conceder permissões apropriadas de banco de dados aos nossos usuários. Faremos isso por meio do uso da instrução SQL GRANT. Esta é a sintaxe da instrução: GRANT

type = “código”>

[ON

type=”code”>

TO

type=”code”>

[WITH GRANT OPTION]

type = “code”> Agora, vamos dar uma olhada nesta instrução linha por linha. A primeira linha, CONCEDER , nos permite especificar as permissões de tabela específicas que estamos concedendo. Elas podem ser permissões de nível de tabela (como SELECT, INSERT, UPDATE e DELETE) ou permissões de banco de dados (como CREATE TABLE, ALTER DATABASE e GRANT). Mais de uma permissão pode ser concedida em uma única instrução GRANT, mas as permissões em nível de tabela e permissões em nível de banco de dados não podem ser combinadas em uma única instrução. A segunda linha, SOBRE

Finalmente, a quarta linha, COM OPÇÃO DE GRANT, é opcional. Se esta linha for incluída na instrução, o usuário afetado também tem permissão para conceder essas mesmas permissões a outros usuários. Observe que WITH GRANT OPTION não pode ser especificado quando as permissões são atribuídas a uma função.

Concessões de banco de dados de exemplo

Vejamos alguns exemplos. Em nosso primeiro cenário, contratamos recentemente um grupo de 42 operadores de entrada de dados que adicionarão e manterão os registros dos clientes. Eles devem acessar as informações na tabela Clientes, modificar essas informações e adicionar novos registros à tabela. Eles não devem ser capazes de excluir totalmente um registro do banco de dados. Primeiro, devemos criar contas de usuário para cada operador e, em seguida, adicioná-los a uma nova função, Entrada de dados. Em seguida, devemos usar a seguinte instrução SQL para conceder a eles as permissões apropriadas: GRANT SELECT, INSERT, UPDATE

type = “code”> Clientes ON

type = “code”> TO DataEntry

type = “code”> Agora vamos examinar um caso em que atribuímos permissões no nível do banco de dados. Queremos permitir que membros da função DBA adicionem novas tabelas ao nosso banco de dados. Além disso, queremos que eles possam conceder permissão a outros usuários para fazer o mesmo. Aqui está a instrução SQL: GRANT CREATE TABLE

type = “code”> PARA DBA

type = “code”> COM OPÇÃO DE CONCESSÃO

type = “code”> Observe que incluímos a linha WITH GRANT OPTION para garantir que nossos DBAs possam atribuir essa permissão a outros usuários.

Removendo permissões

O SQL inclui o comando REVOKE para remover as permissões concedidas anteriormente. Esta é a sintaxe: REVOKE [GRANT OPTION FOR]

type = “code”> ON

type = “code”> FROM

type = “code”> Você notará que a sintaxe desse comando é semelhante à do comando GRANT. A única diferença é que WITH GRANT OPTION é especificado na linha de comando REVOKE, e não no final do comando. Como exemplo, vamos imaginar que queremos revogar a permissão concedida anteriormente a Mary para remover registros do banco de dados Clientes. Usaríamos o seguinte comando: REVOKE DELETE

type = “code”> Clientes ON

type = “code”> DE Mary

type = “code”> Há um mecanismo adicional suportado pelo Microsoft SQL Server que vale a pena mencionar – o comando DENY. Este comando pode ser usado para negar explicitamente a um usuário uma permissão que ele poderia ter por meio de uma associação de função atual ou futura. Esta é a sintaxe: DENY

type = “code”> ON

type = “code”> PARA

type = “code”> Mais da Lifewire

  • Código SQL em um monitor de computador

    Linguagem de controle de dados (DCL)

  • Propriedades de rastreamento no Microsoft SQL Server 2012

    Criando rastreamentos com o SQL Server 2012

  • Gráfico de código de computador

    Um guia para criar contas de usuário do SQL Server 2012

  • Como criar usuários e conceder permissões no MySQL

  • Esquema de desenvolvimento de banco de dados descrito em papel.

    Criação de uma conta de banco de dados SQL Server 2008

  • SQL Server Configuration Manager

    Inicie o SQL Server Agent: configure o SQL Server 2012

  • Sala de servidores com racks e equipamentos

    O que você precisa saber sobre linguagem de consulta estruturada

  • Captura de tela de rastreamento do SQL Server Profiler

    Como criar um rastreamento com o Profiler no SQL Server 2008

  • Prompt do sudo na linha de comando do Linux

    Como usar o Ubuntu para adicionar um usuário ao Sudoers

  • Ilustração conceitual de dados e informações pessoais em uma impressão digital.

    Escolhendo um modo de autenticação do SQL Server

  • Sala de servidores com racks e equipamentos

    Os fundamentos do SQL

  • Sala de servidores, computador, tecnologia,

    Iniciando uma carreira em bancos de dados

  • Administrador de banco de dados trabalhando na mesa

    Determinantes e seu papel em um banco de dados

  • Tela do computador Ubuntu

    Como criar um servidor da Web LAMP usando o Ubuntu

  • Programador trabalhando em frente a vários computadores

    Os 9 melhores livros de SQL de 2021

  • Mulher de negócios no computador desktop

    Como alterar temporariamente contas e privilégios

Lifewire

Siga-nos

  • Facebook

  • Sobre nós
  • Anunciar
  • Política de Privacidade
  • Política de Cookies
  • Carreiras
  • Diretrizes editoriais
  • Contato
  • Termos de uso
  • Privacidade da UE
  • Aviso de privacidade da Califórnia



Seus direitos de privacidade

A Lifewire e nossos parceiros terceirizados usam cookies e processam dados pessoais como identificadores exclusivos com base em seu consentimento para armazenar e / ou acessar informações em um dispositivo, exibir anúncios personalizados e para medição de conteúdo, percepção do público e desenvolvimento de produtos. Para alterar ou retirar suas escolhas de consentimento para Lifewire.com, incluindo seu direito de contestar quando um interesse legítimo é usado, clique abaixo. A qualquer momento, você pode atualizar suas configurações por meio do link “Privacidade da UE” na parte inferior de qualquer página. Essas escolhas serão sinalizadas globalmente para nossos parceiros e não afetarão os dados de navegação. Lista de parceiros (fornecedores)

Nós e nossos parceiros processamos dados para:

Digitalize ativamente as características do dispositivo para identificação. Use dados precisos de geolocalização. Armazene e / ou acesse informações em um dispositivo. Selecione o conteúdo personalizado. Crie um perfil de conteúdo personalizado. Avalie o desempenho do anúncio. Selecione anúncios básicos. Crie um perfil de anúncios personalizados. Selecione anúncios personalizados. Aplique pesquisas de mercado para gerar insights do público. Avalie o desempenho do conteúdo. Desenvolva e melhore produtos. Lista de parceiros (fornecedores)