DENY (Databricks SQL)

Deniega un privilegio en un objeto a un usuario o entidad de seguridad. Denegar un privilegio en una base de datos (por ejemplo, un privilegio) tiene el efecto de denegar implícitamente ese privilegio en todos los objetos de esa base SELECT de datos. Denegar un privilegio específico en el catálogo tiene el efecto de denegar implícitamente ese privilegio en todas las bases de datos del catálogo.

Syntax

DENY
  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 }

Para denegar un privilegio a todos los usuarios, especifique la palabra clave users después de TO .

DENY se puede usar para garantizar que un usuario o una entidad de seguridad no puedan tener acceso al objeto especificado, a pesar de las instrucciones GRANT implícitas o explícitas. Cuando se tiene acceso a un objeto, Databricks comprueba primero si hay alguna instrucción explícita o implícita en el objeto antes de comprobar si hay alguna explícita DENY o GRANTs implícita.

Por ejemplo, suponga que hay una base de db datos con tablas y t1 t2 . Inicialmente se conceden SELECT privilegios a un usuario en db . El usuario puede acceder a t1 y debido t2 a en la base de datos GRANT db .

Si el administrador emite un DENY en la tabla , el usuario ya no podrá acceder a t1 t1 . Si el administrador emite un en la base de datos , el usuario no podrá acceder a ninguna tabla de incluso si hay una explícita DENY db en estas db GRANT tablas. Es decir, DENY siempre sustituye a GRANT .

Ejemplo

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