Ich habe die folgende Ansicht (genannt view3
)GRANT Berechtigungen scheinen nicht auf einen Blick zu arbeiten
ich eine Rolle erstellt und gewährt es SELECT
und UPDATE
Rechte nur auf zwei Säulen.
CREATE ROLE Testrole
GRANT SELECT (Doc_ID, [Total Attentions]) ON view3 TO Testrole
Dann zugewiesen ich die Rolle an einen Benutzer (test
) bereits
ALTER ROLE Testrole ADD MEMBER test
Aber wenn die Transaktion zu überprüfen, ob alles ok ist, ausgeführt wird, werden alle Spalten anstelle der beiden erforderlichen gezeigt werden (das gleiche Bild oben).
Dies ist das Skript
CREATE LOGIN logtest
WITH PASSWORD = 'logtest'
CREATE USER test
FOR LOGIN logtest
CREATE ROLE Testrole
GRANT SELECT (Doc_ID, [Total Attentions]) ON view3 TO Testrole
ALTER ROLE Testrole ADD MEMBER test
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRANSACTION
EXECUTE AS USER = 'test'
SELECT * /*This should give an error*/
FROM view3
SELECT Doc_ID, [Total Attentions] /*This should work just fine*/
FROM view3
REVERT
ROLLBACK
ich es lief, und es zeigt: 'PERMISSION_NAME: SELECT Objektname: view3 Spaltenname: Alle Spalten Grantee: test' , dass diese irgendwie suggeriert ich' gewährt test' SELECT Privileg alle Spalten? Wie kann das möglich sein, wenn ich das nicht explizit getan habe? Wie kann das behoben werden (ich meine, das SELECT- oder UPDATE-Privileg nicht auf alle Spalten zu beschränken)? – Jazz
Wenn Sie 'REVOKE SELECT ON view3 FROM test 'setzen und alle erneut ausführen, bleibt das Problem bestehen. – Jazz
Versuchen Sie, 'REVOKE SELECT ON view3 FROM test' auszuführen, verifizieren Sie' SELECT' by user test fehlgeschlagen, da keine Berechtigungen vorhanden sind, und erteilen Sie dann erneut die Spaltenberechtigungen. Ich würde erwarten, dass nur ein 'SELECT' mit den gewährten Spalten gelingen wird. –