DENY

Nekar behörighet för ett objekt till en användare eller ett huvud konto. Om du nekar behörighet för en databas (t. ex. en SELECT behörighet), kan du implicit neka den behörigheten för alla objekt i databasen. Om du nekar en speciell behörighet i katalogen, kan du implicit neka den behörigheten för alla databaser i katalogen.

Syntax

DENY
  privilege_type [, privilege_type ] ...
  ON [CATALOG | DATABASE <database-name> | TABLE <table-name> | VIEW <view-name> | FUNCTION <function-name> | ANONYMOUS FUNCTION | ANY FILE]
  TO principal

privilege_type
  : SELECT | CREATE | MODIFY | USAGE | READ_METADATA | CREATE_NAMED_FUNCTION | ALL PRIVILEGES

principal
  : `<user>@<domain-name>` | <group-name>

Om du vill neka behörighet för alla användare anger du nyckelordet users efter TO .

DENY kan användas för att säkerställa att en användare eller ett huvud konto inte kan komma åt det angivna objektet, trots eventuella implicit eller explicit GRANTs . När ett objekt används kontrollerar Databricks först om det finns några uttryckliga eller implicita DENYs på objektet innan de kontrollerar om det finns uttryckliga eller implicita GRANTs .

Anta till exempel att det finns en databas db med tabeller t1 och t2 . En användare har ursprungligen beviljat SELECT behörigheter på db . Användaren kan komma åt t1 och till t2 följd av GRANT databasen db .

Om administratören utfärdar en DENY i-tabell t1 kommer användaren inte längre att kunna komma åt den t1 . Om administratören utfärdar en DENY i-databas db kommer användaren inte att kunna komma åt några tabeller, db även om det finns ett uttryckligt GRANT i dessa tabeller. Det vill säga, DENY ersätter alltid GRANT .

Exempel

DENY SELECT ON <table-name> TO `<user>@<domain-name>`;