Sou muito verde quando se trata do mundo do gerenciamento de permissões de banco de dados no SQL Server.

Vamos manter um exemplo simples.

Digamos que a conta “admin” seja a proprietária dos esquemas A, B e C.

Há outra conta “minion” que você deseja que tenha todos os direitos (atualizar / excluir / insert / select / alter) em qualquer objeto (tabela / visão) criado nos esquemas A, B e C.

Isso é possível? Ou você tem que executar uma instrução de concessão toda vez que adiciona uma tabela / visão a esses esquemas? (parece um pouco bobo para mim).

Resposta

Você pode GRANT permissões de esquema que são eficazes para tudo o que existe e tudo o que existe nesse esquema.

Conceda permissões de esquema

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>; 

Além disso, se você deseja negar permissões em um determinado objeto dentro desse esquema, você pode fazer.

Negando permissões de objeto

DENY INSERT ON OBJECT::<schema>.<object> TO <user>; 

Comentários

  • Use também colchetes se o esquema ou nome de usuário tiver caracteres especiais. Por exemplo, .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • O ' não funciona no Azure, alguma ideia por quê? (os comandos funcionam, mas o SSMS aparece e diz " você não é o proprietário do Db .. blá, blá, blá. Talvez você não consiga salvar a tabela " e com certeza, você pode ' t (concedeu ALL ao banco de dados (mostra as permissões ' Banco de dados ', ' < nome do banco de dados > ', TheUserId, ' Criar tabela ' e state_desc de ' GRANT ') Há alguma outra mágica necessária? Ou o Azure só pode ser usado pelo Dbo?

Resposta

Para simplificar um pouco mais, você pode usar funções para fazer o trabalho que está procurando.

Depois de atribuir permissões para a função, você pode simplesmente adicionar usuários à função. Dessa forma, você não precisa gerenciar permissões para usuários individuais. Os usuários herdam as permissões concedidas à função.

Abaixo está um exemplo para você começar:

 -- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *