REVOKE sentencia

La sentencia REVOKE revoca privilegios de ID de autorización.

Existe un formulario de declaración independiente para cada una de las siguientes clases de privilegios:

Los objetos aplicables están siempre en el servidor actual.

Invocation for REVOKE

Esta sentencia puede incorporarse en un programa de aplicación o emitirse de forma interactiva. Es una instrucción ejecutable que puede prepararse dinámicamente solo si el comportamiento DYNAMICRULES RUN está en vigor. Para obtener más información, consulte ID de autorización y SQL dinámico.

Si el mecanismo de autorización no se activó cuando se instaló el subsistema de Db2 , se produce una condición de error.

Autorización para REVOKE

Si no se especifica la cláusula BY, el ID de autorización de la declaración debe haber concedido al menos uno de los privilegios especificados a cada nombre de autorización especificado en la cláusula FROM (incluido PUBLIC, si se especifica). Si se especifica la cláusula BY, el ID de autorización de la declaración debe tener autoridad SECADM o ACCESSCTRL

Nota : Si el parámetro de instalación SEPARATE SECURITY es NO, la autoridad SYSADM tiene implícita la autoridad SECADM y la autoridad SYSCTRL tiene implícita la autoridad ACCESSCTRL.
Si se especifica la cláusula BY y el conjunto de privilegios incluye ACCESSCTRL, se pueden revocar todos los privilegios y autorizaciones, excepto los siguientes:
  • DBADM del sistema
  • ACCESSCTRL
  • DATAACCESS
  • Privilegio CREATE_SECURE_OBJECT

Para revocar el privilegio CREATE_SECURE_OBJECT, con o sin la cláusula BY, el conjunto de privilegios debe incluir la autoridad SECADM.

Si la declaración está integrada en un programa de aplicación, el conjunto de privilegios son los privilegios que posee el propietario del plan o paquete. El propietario puede ser un rol. Si el estado se prepara dinámicamente, el conjunto de privilegios son los privilegios que posee el ID de autorización SQL del proceso. Sin embargo, si el proceso se ejecuta en un contexto de confianza que se define con la CLÁUSULA ROLE AS OBJECT OWNER AND QUALIFIER, el conjunto de privilegios son los privilegios que posee el rol que está en vigor.

Sintaxis para REVOKE

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual REVOKE autorización-especificación FROM ,nombre-autorizaciónROLEnombre-rolPUBLIC BY,nombre-autorizaciónROLEnombre-rolALLINCLUDING DEPENDENT PRIVILEGESNOT INCLUDING DEPENDENT PRIVILEGESRESTRICT1
Notas:
  • 1 La cláusula RESTRICT es la predeterminada solo para las formas de la declaración REVOKE que lo permiten.

descripción para REVOKE

autorización-especificación
Especifica uno o más privilegios para la clase de privilegio. El mismo privilegio no debe especificarse más de una vez.
FROM
Especifica a partir de qué identificaciones de autorización se revocan los privilegios.
nombre de autorización,...
Lista uno o varios ID de autorización. No utilice el mismo ID de autorización más de una vez. Si el nombre de la autorización se especifica en minúsculas, debe delimitarse con comillas dobles.
El valor de CURRENT RULES determina si puede utilizar el ID de la propia sentencia REVOKE (para revocar privilegios de usted mismo). Cuando REGLAS ACTUALES es:
  Db2
No puede utilizar el ID de la declaración de REVOCACIÓN.
estándar
Puede utilizar el ID de la declaración de REVOCACIÓN.
FUNCIÓN nombre de la función
Enumera uno o más roles. No especifique la misma función más de una vez.
PUBLIC
Revocar la concesión de privilegios a PUBLIC.
BY
Enumera los otorgantes que han concedido privilegios y revoca cada privilegio nombrado que fue explícitamente concedido a algún usuario nombrado por uno de los otorgantes nombrados. Solo un ID de autorización o un rol con autoridad SYSADM o SYSCTRL puede usar BY, incluso si el ID de autorización o el rol solo se nombra a sí mismo en la cláusula BY.
nombre-autorización,..
Enumera uno o más ID de autorización de usuarios que fueron los otorgantes de los privilegios mencionados. No utilice el mismo ID de autorización más de una vez. Cada otorgante que figure en la lista debe haber concedido explícitamente algún privilegio nombrado a todos los usuarios o roles nombrados.
FUNCIÓN nombre de la función
Enumera uno o más roles que fueron los otorgantes de los privilegios mencionados. No especifique la misma función más de una vez. Cada otorgante que figure en la lista debe haber concedido explícitamente algún privilegio nombrado a todos los usuarios o roles nombrados.
ALL
Revocar cada privilegio nombrado de todos los usuarios nombrados a los que se les concedió explícitamente el privilegio, independientemente de quién se lo concedió.
INCLUDING DEPENDENT PRIVILEGES o NOT INCLUDING DEPENDENT PRIVILEGES
Especifica si la revocación de un privilegio o una autoridad de un ID de autorización o un rol también da lugar a la revocación de las concesiones que fueron hechas por ese usuario. El valor predeterminado se basa en la autoridad que se está revocando y en el parámetro del sistema REVOKE_DEP_PRIVILEGES:
  • Cuando se revoca la autoridad ACCESSCTRL, DATAACCESS o DBADM del sistema, NOT INCLUDING DEPENDENT PRIVILEGES se asume y la cláusula debe especificarse en la declaración REVOKE.
  • Cuando el parámetro de sistema REVOKE_DEP_PRIVILEGES se establece en NO, NOT INCLUDING DEPENDENT PRIVILEGES y se devuelve un error si la instrucción incluye INCLUDING DEPENDENT PRIVILEGES.
  • De lo contrario, INCLUDING DEPENDENT PRIVILEGES se asume y la cláusula debe especificarse en la declaración REVOKE.
INCLUDING DEPENDENT PRIVILEGES
Especifica que la revocación de un privilegio o una autoridad de un ID de autorización o un rol también da lugar a la revocación de privilegios dependientes. Esto significa que cualquier subvención que haya sido concedida por el usuario seguirá siendo revocada, hasta que todas las subvenciones de la cadena hayan sido revocadas.

INCLUDING DEPENDENT PRIVILEGES no se puede especificar si el parámetro de sistema REVOKE_DEP_PRIVILEGES está establecido en NO, lo que fuerza el comportamiento para no incluir los privilegios dependientes.

NOT INCLUDING DEPENDENT PRIVILEGES
Especifica que la revocación de un privilegio o una autoridad de un ID de autorización o un rol no provoca la revocación de las concesiones que fueron hechas por el usuario. Sin embargo, para los privilegios revocados, se aplican todas las implicaciones de la revocación del privilegio. Por ejemplo, si los privilegios revocados eran necesarios para vincular un paquete correctamente, ese paquete seguiría estando invalidado como resultado de la pérdida de estos privilegios por parte del propietario del paquete. Un objeto podría eliminarse si se revoca un privilegio que se utilizó para crear el objeto.

NOT INCLUDING DEPENDENT PRIVILEGES debe especificarse cuando se revoque la autoridad ACCESSCTRL, DATAACCESS o DBADM del sistema.

NOT INCLUDING DEPENDENT PRIVILEGES no se puede especificar si el parámetro del sistema REVOKE_DEP_PRIVILEGES está establecido en toYES,, lo que obliga a incluir privilegios dependientes en la revocación.

RESTRICT
Evita que el privilegio nombrado sea revocado cuando se dan ciertas condiciones. RESTRICT es el valor predeterminado solo para los formularios de la declaración REVOKE que lo permiten. Estos formularios revocan el privilegio de USO en tipos distintos, el privilegio de EJECUCIÓN en funciones definidas por el usuario y procedimientos almacenados, el privilegio de USO en secuencias y los privilegios de LECTURA o ESCRITURA para variables.

Notas para REVOKE

Las siguientes consideraciones se aplican a todos los formularios de declaración de REVOCACIÓN:

Privilegios revocados
Los privilegios revocados de una identificación de autorización o un rol son aquellos que se identifican en la declaración y que fueron otorgados al usuario por el otorgante. Otros privilegios pueden ser revocados como resultado de la revocación de privilegios dependientes. Para más información sobre los privilegios de administrador ( Db2 ), consulte Privilegios y autoridades.
Privilegios de dependiente revocados
La revocación de un privilegio a un usuario también puede provocar la revocación de ese privilegio a otros usuarios. Esto se conocía anteriormente como revocación en cascada. Cuando se revoca un privilegio de un ID de autorización o un rol, Db2 busca y revoca cualquier concesión del privilegio en la que el otorgante sea el mismo que el ID de autorización o rol de la revocación original. Las siguientes reglas deben cumplirse para que el privilegio P se revoque de U3 cuando U1 revoque el privilegio P de U2:
  • P y P' son el mismo privilegio.
  • U2 privilegio concedido P' a U3.
  • Nadie concedió el privilegio P a U2 antes de que lo concediera U1.
  • U2 no tiene autoridad de instalación SYSADM.

Las reglas también se aplican a las concesiones implícitas que se realizan como resultado de una declaración CREATE VIEW.

La revocación de los privilegios de dependiente no se produce en ninguna de las siguientes condiciones:

  • El privilegio fue concedido por un usuario que tiene autoridad SYSADM de instalación actual cuando se ejecuta la sentencia REVOKE.
  • El privilegio es el privilegio de USO en un tipo distinto y el revocado es propietario de cualquiera de estos artículos:
    • Una función definida por el usuario o un procedimiento almacenado que utiliza el tipo distinto
    • Una tabla que tiene una columna que utiliza el tipo distinto
    • Una secuencia cuyo tipo de datos es el tipo distinto
  • El privilegio es el privilegio de USO en una secuencia y el revocado es propietario de cualquiera de estos artículos:
    • Un desencadenante que tiene una expresión NEXT VALUE o PREVIOUS VALUE que especifica la secuencia
    • Una función SQL en línea que tiene una expresión NEXT VALUE o PREVIOUS VALUE en el cuerpo de la función que especifica la secuencia
  • El privilegio es el privilegio de EJECUTAR en una función definida por el usuario y el revocado posee cualquiera de estos elementos:
    • Una función definida por el usuario que se obtiene en la función
    • Una vista que utiliza la función
    • Un paquete de activación que utiliza la función
    • Una tabla que utiliza la función en una restricción de verificación o un tipo predeterminado definido por el usuario
  • El privilegio es el privilegio de EJECUTAR en un procedimiento almacenado y el revocador posee cualquiera de estos elementos:
    • Un paquete desencadenante que hace referencia al procedimiento almacenado en una instrucción CALL.
  • Si se revoca la autoridad administrativa de ACCESSCTRL a un usuario, las concesiones que realice este usuario de ACCESSCTRL no se revocarán.

    Si este usuario revocó las concesiones realizadas por él, esas revocaciones seguirán revocando los privilegios dependientes, a menos que el comportamiento para no incluir los privilegios dependientes se haya especificado utilizando el parámetro del sistema REVOKE_DEP_PRIVILEGES o utilizando la instrucción REVOKE si REVOKE_DEP_PRIVILEGES está configurado en SQLSTMT.

  • Si se elimina el SECADM de un usuario, las concesiones que realice este usuario del SECADM no se revocarán.

    Si este usuario revocó las concesiones realizadas por él, esas revocaciones seguirán revocando los privilegios dependientes, a menos que el comportamiento para no incluir los privilegios dependientes se haya especificado utilizando el parámetro del sistema REVOKE_DEP_PRIVILEGES o utilizando la instrucción REVOKE si REVOKE_DEP_PRIVILEGES está configurado en SQLSTMT.

  • Si NOT INCLUDING DEPENDENT PRIVILEGES se especifica la opción, las subvenciones realizadas por este usuario no se revocan.

Consulte los diagramas para el siguiente ejemplo:

  1. Supongamos que BOB otorga autoridad de SYSADM a WADE. Más tarde, CLAIRE concede el privilegio SELECT en una tabla con la OPCIÓN WITH GRANT a WADE.
    Comenzar descripción de figura. Una línea de tiempo con casillas representa los eventos descritos en la frase anterior. Finalizar descripción de figura.
  2. WADE concede el privilegio SELECT a JOHN en la misma mesa.
    Comenzar descripción de figura. Una línea de tiempo con casillas representa los eventos descritos en la frase anterior. Finalizar descripción de figura.
  3. Cuando CLAIRE revoca el privilegio de SELECCIÓN en la mesa de WADE, el privilegio de SELECCIÓN en esa mesa también se revoca a JOHN.
    Comenzar descripción de figura. Una línea de tiempo con casillas representa los eventos descritos en la frase anterior. Finalizar descripción de figura.

La concesión de WADE a JOHN se elimina porque a WADE no se le había concedido el privilegio SELECT de ninguna otra fuente antes de que CLAIRE realizara la concesión. La autoridad SYSADM concedida a WADE por BOB no afecta a la revocación en cascada. Para más información sobre SYSADM y la autoridad de instalación SYSADM, consulte Gestión de autoridades administrativas. Para ver otro ejemplo de revocaciones en cascada, consulte Revocación de privilegios con la sentencia REVOKE.

La revocación de un privilegio SELECT que se ejerció para crear una vista o una tabla de consulta materializada provoca la eliminación de la vista, a menos que al propietario de la vista se le concediera directamente el privilegio SELECT de otra fuente antes de que se creara la vista. La revocación de un privilegio SYSADM que era necesario para crear una vista hace que esta se elimine. Para obtener más información sobre cuándo se requiere la autoridad SYSADM para crear una vista, consulte Autorización en la instrucción CREATE VIEW.

Anulación de paquetes
La revocación o revocación en cascada de cualquier privilegio o función que se haya ejercido para crear un paquete hace que el paquete no sea válido cuando el revocado ya no tiene el privilegio de ninguna otra fuente. Los cachés de autorización correspondientes se borran incluso si el revocador tiene el privilegio de cualquier otra fuente. Para obtener más información, consulte Cambios que invalidan los paquetes. 1
Paquetes inoperativos
Una revocación o revocación en cascada del privilegio EXECUTE en una función definida por el usuario que se ejerció para crear un paquete hace que el paquete quede inoperativo y hace que se borren las cachés de autorización correspondientes cuando el revocador ya no tenga el privilegio de ninguna otra fuente.1
Privilegios que pertenecen a una autoridad
Puede revocar una autoridad administrativa, pero no puede revocar por separado los privilegios específicos inherentes a dicha autoridad administrativa.

Sea P un privilegio inherente a la autoridad X. Un usuario con autoridad X también puede tener privilegio P como resultado de una concesión explícita de P. En este caso:

  • Si X se revoca, el usuario sigue teniendo el privilegio P.
  • Si P se revoca, el usuario sigue teniendo el privilegio porque es inherente a X.
Revocación de privilegios en un contexto de confianza
Las revocaciones que se realizan en un contexto de confianza definido con la cláusula ROLE AS OBJECT OWNER hacen que el revocador sea el rol en vigor. Si la declaración se prepara dinámicamente, el revocador es el rol asociado al usuario que ejecuta la declaración. Si la declaración está integrada en un programa, el revocador es el propietario del plan o paquete. Si la cláusula ROLE AS OBJECT OWNER no se especifica para el contexto de confianza, el revocador es el ID de autorización del proceso.
Privilegios de propiedad
Los privilegios inherentes a la propiedad de un objeto no pueden ser revocados.
Revocar privilegios de dependiente no incluidos
Cuando se revoca un privilegio a un usuario especificando NOT INCLUDING DEPENDENT PRIVILEGES, las concesiones que hizo este usuario no se revocan y el otorgante permanece sin cambios. Si a ese usuario se le concede posteriormente el mismo privilegio y luego se revoca este privilegio especificando INCLUDING DEPENDENT PRIVILEGES, también se revocarían todas las concesiones que este usuario haya realizado anteriormente. Consulte los siguientes ejemplos:
Al usuario U1 se le concede SELECT en la tabla T1 con GRANT OPTION:
  1. U1 otorga este privilegio a U2.
  2. El privilegio SELECT se revoca de U1 sin incluir privilegios dependientes. Como resultado, la subvención de U1 a U2 no se revoca.
  3. U1 se le vuelve a conceder SELECT en T1.
  4. SELECT queda ahora revocado de U1, incluidos los privilegios dependientes, y la concesión de U1 a U2 queda ahora revocada.
Al usuario U1 se le concede autoridad SYSADM:
  1. U1 otorga el privilegio P1 a U2 y el privilegio P2 a U3.
  2. Se revoca SYSADM de U1 sin incluir privilegios dependientes. Las concesiones de privilegios P1 y P2 a U2 y U3 no se revocan.
  3. U1 se vuelve a conceder SYSADM. U1 otorga privilegios de P3 a U3.
  4. SYSADM queda ahora revocado de U1, incluidos los privilegios dependientes. Ahora, también se revocan las autorizaciones de acceso a Internet ( P1 ) concedidas a U2 y P2 y las autorizaciones de acceso a Internet ( P3 ) concedidas a U3.
1 Las dependencias de los procedimientos almacenados solo pueden comprobarse si el nombre del procedimiento se especifica como una constante y no a través de una variable de host en la instrucción CALL.