SQL Server revogando um select

3

Vamos supor que um usuário, "Bob", receba permissão SELECT de João e João também receba a permissão SELECT de outro usuário, Joe, mas dessa vez com a opção GRANT.

O que acontece se alguém revogar a permissão de seleção de Bob com cascata? A permissão selecionada será removida da conta de Bob e de todas as contas para as quais Bob deu permissão (mesmo que tivessem antes de outro lugar como um grupo?)? Em caso afirmativo, o grupo inteiro perderá a permissão Selecionar ou apenas o usuário que também tiver a permissão Selecionar do Bob?

    
por pi012 05.07.2011 / 23:00

1 resposta

1

Não, eles não perderão as permissões.

Se um GRANT for executado para a mesma permissão por vários principais, o SQL Server o acompanhará. Ou seja, ele armazenará a permissão várias vezes diferenciada pelo principal que executou o GRANT.

Então, digamos que o Admin execute estes:

GRANT SELECT ON OBJECT::MyDb.dbo.MyTable to UserA WITH GRANT OPTION  
GRANT SELECT ON OBJECT::MyDb.dbo.MyTable to UserB

Em seguida, o UserA executa a segunda instrução:

GRANT SELECT ON OBJECT::MyDb.dbo.MyTable to UserB

E finalmente o Admin executa isso:

REVOKE SELECT ON OBJECT::MyDb.dbo.MyTable TO UserA CASCADE

O UserB retém as permissões SELECT em MyTable porque foi aceito pelo Admin no primeiro lote.

No seu caso, todo o grupo não perderá o acesso, apenas o usuário ao qual o Bob concedeu o SELECT, supondo que ninguém mais tenha concedido a mesma permissão.

O único usuário manterá as permissões, no entanto, se elas fizerem parte de um grupo do Windows ou de uma função de banco de dados que também tenha as permissões. Ou seja, desde que a permissão não tenha sido concedida por Bob.

    
por 06.07.2011 / 00:09