

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# REVOKE
<a name="r_REVOKE"></a>

Quita los permisos de acceso, como los permisos para crear, eliminar o actualizar tablas, a un usuario o rol.

Solo puede dar permisos GRANT o REVOKE USAGE en un esquema externo a los usuarios de la base de datos y los roles con la sintaxis ON SCHEMA. Cuando use ON EXTERNAL SCHEMA con AWS Lake Formation, solo puede usar GRANT y REVOKE para conceder y revocar permisos a un rol de AWS Identity and Access Management (IAM). Para obtener una lista de los permisos, consulte la sintaxis.

Para procedimientos almacenados, se concede el permiso USAGE ON LANGUAGE `plpgsql` a PUBLIC de manera predeterminada. El permiso EXECUTE ON PROCEDURE se concede solo al propietario y a los superusuarios de manera predeterminada.

Especifique en el comando REVOKE los permisos que desea eliminar. Para conceder permisos, utilice el comando [GRANT](r_GRANT.md). 

## Sintaxis
<a name="r_REVOKE-synopsis"></a>

```
REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | ALTER | TRUNCATE } [,...] | ALL [ PRIVILEGES ] }
ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] }
FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
[ RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
{ { CREATE | TEMPORARY | TEMP | ALTER } [,...] | ALL [ PRIVILEGES ] }
ON DATABASE db_name [, ...]
FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
[ RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
{ { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }
ON SCHEMA schema_name [, ...]
FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
[ RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
EXECUTE
    ON FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...]
    FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
[ RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
{ { EXECUTE } [,...] | ALL [ PRIVILEGES ] }
    ON PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...]
    FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
[ RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
USAGE
    ON LANGUAGE language_name [, ...]
    FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
[ RESTRICT ]

REVOKE [GRANT OPTION FOR] 
{ { ALTER | DROP} [,...] | ALL [ PRIVILEGES ] }
    ON COPY JOB job_name [,...]
    FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]    

REVOKE [GRANT OPTION FOR]
{ { ALTER | DROP | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON TEMPLATE template_name [,...]
    FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
```

### Revocación de permisos de nivel de columna para tablas
<a name="revoke-column-level"></a>

A continuación, se muestra la sintaxis de los permisos de nivel de columna en tablas y vistas de Amazon Redshift. 

```
REVOKE { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) }
     ON { [ TABLE ] table_name [, ...] }
     FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
     [ RESTRICT ]
```

### Revocación de los permisos ASSUMEROLE
<a name="revoke-assumerole-permissions"></a>

A continuación, se muestra la sintaxis para revocar el permiso ASSUMEROLE a los usuarios y grupos con un rol especificado. 

```
REVOKE ASSUMEROLE
    ON { 'iam_role' [, ...]  | default | ALL }
    FROM { user_name | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
    FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL }
```

### Revocación de permisos para Redshift Spectrum para Lake Formation
<a name="revoke-spectrum-integration-with-lf-permissions"></a>

A continuación, se muestra la sintaxis para la integración de Redshift Spectrum con Lake Formation.

```
REVOKE [ GRANT OPTION FOR ]
{ SELECT | ALL [ PRIVILEGES ] } ( column_list )
    ON EXTERNAL TABLE schema_name.table_name
    FROM { IAM_ROLE iam_role } [, ...]

REVOKE [ GRANT OPTION FOR ]
{ { SELECT | ALTER | DROP | DELETE | INSERT }  [, ...] | ALL [ PRIVILEGES ] }
    ON EXTERNAL TABLE schema_name.table_name [, ...]
    FROM { { IAM_ROLE iam_role } [, ...] | PUBLIC }

REVOKE [ GRANT OPTION FOR ]
{ { CREATE | ALTER | DROP }  [, ...] | ALL [ PRIVILEGES ] }
    ON EXTERNAL SCHEMA schema_name [, ...]
    FROM { IAM_ROLE iam_role } [, ...]
```

### Revocación de permisos de recurso compartido de datos
<a name="revoke-datashare-permissions"></a>

**Permisos de recursos compartidos de datos del lado del productor**  
A continuación, se muestra la sintaxis para utilizar REVOKE para quitar permisos ALTER o SHARE a un usuario o rol. El usuario cuyos permisos se han revocado ya no puede modificar el recurso compartido de datos ni conceder el uso a un consumidor. 

```
REVOKE { ALTER | SHARE } ON DATASHARE datashare_name
 FROM { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
```

A continuación, se muestra la sintaxis para utilizar REVOKE para eliminar el acceso de un consumidor a un recurso compartido de datos.

```
REVOKE USAGE
 ON DATASHARE datashare_name
 FROM NAMESPACE 'namespaceGUID' [, ...] | ACCOUNT 'accountnumber' [ VIA DATA CATALOG ] [, ...]
```

A continuación, se ofrece un ejemplo de cómo revocar el uso de un recurso compartido de datos de una cuenta de Lake Formation.

```
REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '123456789012' VIA DATA CATALOG;
```

**Permisos de recursos compartidos de datos del lado del consumidor**  
A continuación, se muestra la sintaxis de REVOKE para los permisos de uso compartido de datos en una base de datos o un esquema específicos creados a partir de un datashare. La revocación del permiso de uso de una base de datos creada con la cláusula WITH PERMISSIONS no revoca ningún permiso adicional que haya concedido a un usuario o rol, ni siquiera los permisos de nivel de objeto concedidos a los objetos subyacentes. Si vuelve a conceder el permiso de uso a ese usuario o rol, conservarán todos los permisos adicionales que tenían antes de que revocara el uso.

```
REVOKE USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema}
 FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
```

### Revocación de los permisos acotados
<a name="revoke-scoped-permissions"></a>

Los permisos limitados le permiten conceder permisos a un usuario o rol en todos los objetos de un tipo dentro de una base de datos o un esquema. Los usuarios y roles con permisos limitados tienen los permisos especificados en todos los objetos actuales y futuros de la base de datos o del esquema.

Puede ver el alcance de los permisos limitados en el nivel de base de datos en [SVV\$1DATABASE\$1PRIVILEGES](r_SVV_DATABASE_PRIVILEGES.md). Puede ver el alcance de los permisos limitados en el nivel de esquema en [SVV\$1SCHEMA\$1PRIVILEGES](r_SVV_SCHEMA_PRIVILEGES.md).

Para obtener más información sobre los permisos acotados, consulte [Permisos acotados](t_scoped-permissions.md).

A continuación, se muestra la sintaxis para revocar permisos acotados a usuarios y roles. 

```
REVOKE [ GRANT OPTION ] 
{ CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }
FOR SCHEMAS IN
DATABASE db_name 
FROM { username | ROLE role_name } [, ...]

REVOKE [ GRANT OPTION ]
{ { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } }
FOR TABLES IN
{ SCHEMA schema_name [ DATABASE db_name ] | DATABASE db_name }
FROM { username | ROLE role_name } [, ...]

REVOKE [ GRANT OPTION ] { EXECUTE | ALL [ PRIVILEGES ] }
FOR FUNCTIONS IN 
{ SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
FROM { username | ROLE role_name } [, ...]

REVOKE [ GRANT OPTION ] { EXECUTE | ALL [ PRIVILEGES ] }
FOR PROCEDURES IN
{ SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
FROM { username | ROLE role_name } [, ...]

REVOKE [ GRANT OPTION ] USAGE
FOR LANGUAGES IN
DATABASE db_name
FROM { username | ROLE role_name } [, ...]  

REVOKE [GRANT_OPTION] 
{ { CREATE | ALTER | DROP} [,...] | ALL [ PRIVILEGES ] }
FOR COPY JOBS 
IN DATABASE db_name
FROM { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]      

REVOKE [ GRANT OPTION ]
{ {ALTER | DROP  | USAGE } [,...] | ALL [ PRIVILEGES ] }
FOR TEMPLATES IN
{ SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
FROM { username | ROLE role_name } [, ...]
```

Tenga en cuenta que los permisos limitados no distinguen entre los permisos de las funciones y los de los procedimientos. Por ejemplo, la siguiente instrucción revoca los permisos `EXECUTE` tanto para las funciones como para los procedimientos de `bob` en el esquema `Sales_schema`. 

```
REVOKE EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema FROM bob;
```

### Revocación de permisos de machine learning
<a name="revoke-model-permissions"></a>

A continuación, se muestra la sintaxis para los permisos de modelos de machine learning en Amazon Redshift.

```
REVOKE [ GRANT OPTION FOR ]
    CREATE MODEL FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
    [ RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON MODEL model_name [, ...]

    FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
    [ RESTRICT ]
```

### Revocación de los permisos de rol
<a name="revoke-roles"></a>

A continuación, se muestra la sintaxis para revocar permisos de rol en Amazon Redshift.

```
REVOKE [ ADMIN OPTION FOR ] { ROLE role_name } [, ...] FROM { user_name } [, ...]
```

```
REVOKE { ROLE role_name } [, ...] FROM { ROLE role_name } [, ...]
```

A continuación, se muestra la sintaxis para revocar permisos de sistema a los roles en Amazon Redshift.

```
REVOKE
  {
    { CREATE USER | DROP USER | ALTER USER |
    CREATE SCHEMA | DROP SCHEMA |
    ALTER DEFAULT PRIVILEGES |
    ACCESS CATALOG |
    CREATE TABLE | DROP TABLE | ALTER TABLE |
    CREATE OR REPLACE FUNCTION | CREATE OR REPLACE EXTERNAL FUNCTION |
    DROP FUNCTION |
    CREATE OR REPLACE PROCEDURE | DROP PROCEDURE |
    CREATE OR REPLACE VIEW | DROP VIEW |
    CREATE MODEL | DROP MODEL |
    CREATE DATASHARE | ALTER DATASHARE | DROP DATASHARE |
    CREATE LIBRARY | DROP LIBRARY |
    CREATE ROLE | DROP ROLE
    TRUNCATE TABLE
    VACUUM | ANALYZE | CANCEL }[, ...]
  }
  | { ALL [ PRIVILEGES ] }
FROM { ROLE role_name } [, ...]
```

### Revocación de los permisos de las políticas de seguridad
<a name="revoke-role-level"></a>

Con la siguiente sintaxis, se pueden revocar permisos para explicar los filtros de la política de seguridad de una consulta en el plan EXPLAIN. Las posibles políticas de seguridad incluyen políticas de seguridad por fila y políticas de enmascaramiento de datos dinámico.

```
REVOKE EXPLAIN { RLS | MASKING } FROM ROLE rolename 
```

Con la siguiente sintaxis, se pueden revocar permisos para omitir las políticas de seguridad por fila para una consulta. 

```
REVOKE IGNORE RLS FROM ROLE rolename 
```

A continuación, se muestra la sintaxis para revocar permisos SELECT de la política de seguridad especificada. Las posibles políticas de seguridad incluyen políticas de seguridad por fila y políticas de enmascaramiento de datos dinámico.

```
REVOKE SELECT ON [ TABLE ] table_name [, ...]
            FROM { RLS | MASKING } POLICY policy_name [, ...]
```

## Parameters
<a name="r_REVOKE-parameters"></a>

GRANT OPTION FOR   
Revoca solo la opción de conceder un permiso especificado a otros usuarios y no revoca el permiso en sí. No puede revocar GRANT OPTION de un grupo o de PUBLIC.

SELECT   
Revoca el privilegio para seleccionar datos de una tabla o vista a través de una instrucción SELECT.

INSERT   
Revoca el permiso para cargar datos en una tabla a través de una instrucción INSERT o una instrucción COPY. 

UPDATE   
Revoca el privilegio para actualizar una columna de la tabla a través de una instrucción UPDATE. 

DELETE   
Revoca el permiso para eliminar una fila de datos de una tabla.

REFERENCES   
Revoca el permiso para crear una restricción de clave externa. Debe revocar este permiso en la tabla a la que se hace referencia y en la tabla de referencia.

TRUNCATE  
Revoca el permiso para truncar una tabla. Sin este permiso, solo el propietario de una tabla o un superusuario pueden truncarla. Para obtener más información sobre el comando TRUNCATE, consulte [TRUNCATE](r_TRUNCATE.md).

ALL [ PRIVILEGES ]   
Revoca todos los permisos disponibles a la vez del usuario o grupo especificado. La palabra clave PRIVILEGES es opcional.  
 Amazon Redshift no admite los permisos RULE y TRIGGER. Para obtener más información, consulte [Características no compatibles de PostgreSQL](c_unsupported-postgresql-features.md). 

ALTER  
Según el objeto de base de datos, revoca los siguientes permisos del usuario o grupo de usuarios:   
+ En el caso de las tablas, ALTER revoca el permiso para modificar una tabla o una vista. Para obtener más información, consulte [ALTER TABLE](r_ALTER_TABLE.md).
+ En el caso de las bases de datos, ALTER revoca el permiso para modificar una base de datos. Para obtener más información, consulte [ALTER DATABASE](r_ALTER_DATABASE.md).
+ En el caso de los esquemas, ALTER concede revocaciones para modificar un esquema. Para obtener más información, consulte [ALTER SCHEMA](r_ALTER_SCHEMA.md).
+ En el caso de las tablas externas, ALTER revoca el permiso para alterar una tabla en un AWS Glue Data Catalog que esté habilitado para Lake Formation. Este permiso solo se aplica cuando se utiliza Lake Formation.

DROP  
Según el objeto de base de datos, revoca los siguientes permisos del usuario o rol:  
+  En el caso de las tablas, DROP revoca el permiso para eliminar una tabla o una vista. Para obtener más información, consulte [DROP TABLE](r_DROP_TABLE.md). 
+  En el caso de las bases de datos, DROP revoca el permiso para eliminar una base de datos. Para obtener más información, consulte [DROP DATABASE](r_DROP_DATABASE.md). 
+  En el caso de los esquemas, DROP revoca el permiso para eliminar un esquema. Para obtener más información, consulte [DROP SCHEMA](r_DROP_SCHEMA.md). 

ASSUMEROLE  <a name="assumerole"></a>
Revoca el permiso para ejecutar comandos COPY, UNLOAD, EXTERNAL FUNCTION o CREATE MODEL de usuarios, roles o grupos con un rol especificado. 

ON [ TABLE ] *table\$1name*   
Revoca los permisos especificados en una tabla o vista. La palabra clave TABLE es opcional.

ON ALL TABLES IN SCHEMA *schema\$1name (nombre\$1de\$1esquema)*   
Revoca los permisos especificados en todas las tablas en el esquema al que se hace referencia.

( *column\$1name* [,...] ) ON TABLE *table\$1name*   <a name="revoke-column-level-privileges"></a>
Revoca los permisos especificados de usuarios, grupos o PUBLIC en las columnas especificadas de la tabla o la vista de Amazon Redshift.

( *column\$1list* ) ON EXTERNAL TABLE *schema\$1name.table\$1name*   <a name="revoke-external-table-column"></a>
Revoca los permisos especificados de un rol de IAM en las columnas especificadas de la tabla de Lake Formation en el esquema de la referencia.

ON EXTERNAL TABLE *schema\$1name.table\$1name*   <a name="revoke-external-table"></a>
Revoca los permisos especificados de un rol de IAM en las tablas de Lake Formation especificadas en el esquema de la referencia.

ON EXTERNAL SCHEMA *schema\$1name*   <a name="revoke-external-schema"></a>
Revoca los permisos especificados de un rol de IAM en el esquema al que se hace referencia.

FROM IAM\$1ROLE *iam\$1role*   <a name="revoke-from-iam-role"></a>
Indica el rol de IAM que pierde los permisos.

ROLE *role\$1name*   
Revoca los permisos del rol especificado.

GROUP *group\$1name*   
Revoca los permisos del grupo de usuarios especificado.

PUBLIC   
Revoca los permisos especificados de todos los usuarios. PUBLIC representa un grupo que siempre incluye a todos los usuarios. Los permisos de un usuario individual constan de la suma de permisos concedidos a PUBLIC, los permisos concedidos a cualquier grupo al que pertenezca el usuario y los permisos concedidos al usuario de manera individual.  
La revocación de PUBLIC de una tabla externa de Lake Formation da lugar a la revocación del permiso del grupo *everyone* de Lake Formation.

CREATE   
Según el objeto de base de datos, revoca los siguientes permiso del usuario o grupo de usuarios:  
+ Para las bases de datos, usar la cláusula CREATE para REVOKE previene que los usuarios creen esquemas dentro de la base de datos.
+ Para los esquemas, usar la cláusula CREATE para REVOKE previene que los usuarios creen objetos dentro de un esquema. Para cambiar el nombre de un objeto, el usuario debe tener el permiso CREATE y ser propietario del objeto cuyo nombre va a cambiarse. 
De manera predeterminada, todos los usuarios tienen permisos CREATE y USAGE en el esquema PUBLIC.

TEMPORARY \$1 TEMP   
Revoca el permiso para crear tablas temporales en la base de datos especificada.  
Por defecto, los usuarios reciben permisos para crear tablas temporales con su membresía automática en el grupo PUBLIC. Para eliminar el permiso de cualquier usuario para crear tablas temporales, revoque el permiso TEMP del grupo PUBLIC y, después, conceda explícitamente el permiso para crear tablas temporales solo a usuarios o grupos de usuarios específicos.

ON DATABASE *db\$1name*   
Revoca los permisos en la base de datos especificada.

USAGE   
Revoca los permisos USAGE en objetos de un esquema específico, lo que provoca que los usuarios no puedan acceder a estos objetos. Las acciones específicas en estos objetos deben revocarse por separado (como el permiso EXECUTE en las funciones).  
De manera predeterminada, todos los usuarios tienen permisos CREATE y USAGE en el esquema PUBLIC.

ON SCHEMA *schema\$1name*   
Revoca los permisos en el esquema especificado. Puede usar permisos de esquema para controlar la creación de tablas. El permiso CREATE para una base de datos solo controla la creación de esquemas.

RESTRICT   
Revoca solo los permisos que el usuario concedió directamente. Este es el comportamiento predeterminado.

EXECUTE ON PROCEDURE *procedure\$1name*   
Revoca el permiso EXECUTE en un procedimiento almacenado específico. Debido a que los nombres de procedimientos almacenados no se pueden sobrecargar, debe incluir la lista de argumentos para el procedimiento. Para obtener más información, consulte [Nomenclatura de los procedimientos almacenados](stored-procedure-naming.md).

EXECUTE ON ALL PROCEDURES IN SCHEMA *procedure\$1name*   
Revoca los permisos especificados en todos los procedimientos en el esquema al que se hace referencia.

USAGE ON LANGUAGE *language\$1name*   
Revoca el permiso USAGE en un lenguaje. Para Funciones definidas por el usuario (UDF) utilice `plpythonu`. Para las UDF de SQL, use `sql`. Para procedimientos almacenados, utilice `plpgsql`.   
Para crear una UDF, debe tener permiso para usar el lenguaje de SQL o `plpythonu` (Python). De manera predeterminada, se concede el permiso USAGE ON LANGUAGE SQL a PUBLIC. No obstante, debe conceder explícitamente el permiso de USAGE ON LANGUAGE PLPYTHONU a usuarios o grupos específicos.   
Para revocar los permisos de uso de SQL, primero revoque el uso de PUBLIC. A continuación, conceda los permisos de uso de SQL a solo los usuarios o grupos que tienen permiso para crear UDF de SQL. En el siguiente ejemplo, se revocan los permisos de uso de SQL de PUBLIC y después se conceden permisos de uso al grupo de usuarios `udf_devs`.   

```
revoke usage on language sql from PUBLIC;
grant usage on language sql to group udf_devs;
```
Para obtener más información, consulte [Seguridad y permisos de UDF](udf-security-and-privileges.md).   
Para revocar el uso para procedimientos almacenados, primero revoque el uso de PUBLIC. A continuación, conceda los permisos de uso en `plpgsql` solo a los usuarios o grupos que tienen permiso para crear procedimientos almacenados. Para obtener más información, consulte [Seguridad y privilegios para procedimientos almacenados](stored-procedure-security-and-privileges.md). 

ON COPY JOB *job\$1name*  <a name="on-copy-job-revoke"></a>
Revoca los permisos especificados en un trabajo de copia.

FOR \$1 ALL \$1 COPY \$1 UNLOAD \$1 EXTERNAL FUNCTION \$1 CREATE MODEL \$1 [, ...]  <a name="revoke-for"></a>
Especifica el comando SQL para el cual se revoca el permiso. Puede especificar ALL para revocar el permiso en las instrucciones COPY, UNLOAD, EXTERNAL FUNCTION y CREATE MODEL. Esta cláusula se aplica solo a la revocación del permiso ASSUMEROLE.

ALTER  
Revoca el permisos ALTER para usuarios o grupos de usuarios, lo que permite modificar un recurso compartido de datos a quienes no lo poseen. Este permiso es necesario para agregar o quitar objetos de un recurso compartido de datos o para establecer la propiedad PUBLICACCESSIBLE. Para obtener más información, consulte [ALTER DATASHARE](r_ALTER_DATASHARE.md).

SHARE  
Revoca permisos para usuarios y grupos de usuarios que sirven para agregar consumidores a un recurso compartido de datos. Es necesario revocar este permiso para que un consumidor concreto deje de acceder al recurso compartido de datos desde sus clústeres. 

ON DATASHARE *datashare\$1name *  
Concede los permisos especificados en el recurso compartido de datos al que se hace referencia.

FROM username  
Indica el usuario que pierde los permisos.

FROM GROUP *group\$1name*  
Indica el grupo de usuarios que pierde los permisos.

WITH GRANT OPTION  
Indica que el usuario que pierde los permisos puede, a su vez, revocar los mismos permisos a otros usuarios. No se puede revocar WITH GRANT OPTION para un grupo o para PUBLIC. 

USAGE  
Cuando se revoca USAGE para una cuenta consumidora o un espacio de nombres dentro de la misma cuenta, estos no pueden acceder al datashare y a los objetos del datashare para lectura solamente.   
La revocación del permiso USAGE revoca el acceso de los consumidores a un recurso compartido de datos. 

FROM NAMESPACE 'clusternamespace GUID'   
Indica el espacio de nombres en la misma cuenta que tiene consumidores que pierden los permisos en el recurso compartido de datos. Los espacios de nombres utilizan un identificador único global (GUID) alfanumérico de 128 bits.

FROM ACCOUNT 'número\$1de\$1cuenta' [ VIA DATA CATALOG ]  
Indica el número de otra cuenta que tiene consumidores que pierden los permisos en el recurso compartido de datos. Si especifica “VIA DATA CATALOG”, se indica que revoca el uso del recurso compartido de datos de una cuenta de Lake Formation. Omitir el número de cuenta significa que se revoca de la cuenta que es propietaria del clúster.

ON DATABASE *shared\$1database\$1name> [, ...]*   <a name="revoke-datashare"></a>
Revoca los permisos de uso especificados en la base de datos concreta que se creó en el recurso compartido de datos indicado. 

ON SCHEMA* shared\$1schema*   <a name="revoke-datashare"></a>
Revoca los permisos especificados en el esquema concreto que se creó en el recurso compartido de datos indicado.

FOR \$1 SCHEMAS \$1 TABLES \$1 FUNCTIONS \$1 PROCEDURES \$1 LANGUAGES \$1 COPY JOBS\$1 IN   
Especifica los objetos de la base de datos a los que se va a revocar el permiso. Los parámetros que siguen a IN definen el alcance del permiso revocado.

CREATE MODEL  
Revoca el permiso CREATE MODEL para crear modelos de machine learning en la base de datos especificada.

ON MODEL *model\$1name*  
Revoca el permiso EXECUTE para un modelo específico. 

ACCESS CATALOG  
Revoca el permiso para ver los metadatos relevantes de los objetos a los que tiene acceso el rol.

[ ADMIN OPTION FOR ] \$1 role \$1 [, …]  
Rol que se revoca a un usuario especificado que tiene WITH ADMIN OPTION.

FROM \$1 role \$1 [, …]  
Rol al que se le revoca el rol especificado.

EXPLAIN \$1 RLS \$1 MASKING \$1 FROM ROLE *rolename*  
Revoca a un rol el permiso de explicar los filtros de política de seguridad de una consulta en el plan EXPLAIN. RLS revoca el permiso para explicar filtros de políticas de seguridad por fila. MASKING revoca permiso para explicar los filtros de la política de enmascaramiento de datos dinámico.

IGNORE RLS FROM ROLE *rolename*   
Revoca a un rol el permiso de eludir las políticas de seguridad por fila para una consulta.

FROM \$1 RLS \$1 MASKING \$1 POLICY *policy\$1name*  
Indica la política de seguridad que pierde los permisos. TO RLS POLICY indica una política de seguridad por fila. TO MASKING POLICY indica una política de enmascaramiento de datos dinámico.

## Notas de uso
<a name="r_REVOKE-usage-notes-link"></a>

Para obtener más información acerca de las notas de uso de REVOKE, consulte [Notas de uso](r_REVOKE-usage-notes.md).

## Ejemplos
<a name="r_REVOKE-examples-link"></a>

Para ver ejemplos de cómo utilizar REVOKE, consulte [Ejemplos](r_REVOKE-examples.md).

# Notas de uso
<a name="r_REVOKE-usage-notes"></a>

Para revocar los privilegios de un objeto, debe cumplir con uno de los siguientes criterios:
+ Ser el propietario del objeto.
+ Ser un superusuario.
+ Tener un privilegio concedido para ese objeto y privilegio.

  Por ejemplo, el siguiente comando permite al usuario HR realizar comandos SELECT en la tabla de empleados y conceder y revocar el mismo privilegio para otros usuarios:

  ```
  grant select on table employees to HR with grant option;
  ```

  HR no puede revocar privilegios para ninguna operación que no sea SELECT o ninguna tabla que no sea la de empleados. 

Los superusuarios pueden obtener acceso a todos los objetos independientemente de los comandos GRANT y REVOKE que establecen privilegios de objeto.

PUBLIC representa un grupo que siempre incluye a todos los usuarios. De manera predeterminada, todos los miembros de PUBLIC, tienen privilegios CREATE y USAGE en el esquema PUBLIC. Para restringir los permisos de los usuarios en el esquema PUBLIC, primero debe revocar todos los permisos de PUBLIC en el esquema PUBLIC y después conceder privilegios a usuarios o grupos específicos. En el siguiente ejemplo, se controlan los privilegios de creación de tablas en el esquema PUBLIC.

```
revoke create on schema public from public;
```

Para revocar privilegios de una tabla de Lake Formation, el rol de IAM asociado al esquema externo de la tabla debe tener permiso para revocar privilegios a la tabla externa. El siguiente ejemplo crea un esquema externo con un rol IAM asociado `myGrantor`. El rol IAM `myGrantor` tiene el permiso para retirar permisos a otros. El comando REVOKE utiliza los permisos del rol `myGrantor` IAM que está asociado al esquema externo para retirar permisos al rol IAM `myGrantee`.

```
create external schema mySchema
from data catalog
database 'spectrum_db'
iam_role 'arn:aws:iam::123456789012:role/myGrantor'
create external database if not exists;
```

```
revoke select
on external table mySchema.mytable
from iam_role 'arn:aws:iam::123456789012:role/myGrantee';
```

**nota**  
Si el rol de IAM también tiene el permiso `ALL` en un AWS Glue Data Catalog que está habilitado para Lake Formation, no se revoca el permiso `ALL`. Solo el permiso `SELECT` se retira. Puede ver los permisos de Lake Formation en la consola de dicho servicio.

## Notas de uso para revocar el permiso ASSUMEROLE
<a name="r_REVOKE-usage-notes-assumerole"></a>

Las siguientes notas de uso se aplican para revocar el privilegio ASSUMEROLE en Amazon Redshift. 

Solo un superusuario de base de datos puede revocar el privilegio ASSUMEROLE para usuarios y grupos. Un superusuario siempre conserva el privilegio ASSUMEROLE. 

Para habilitar el uso del privilegio ASSUMEROLE para usuarios y grupos, un superusuario ejecuta una vez la siguiente instrucción en el clúster. Antes de conceder el privilegio ASSUMEROLE a usuarios y grupos, un superusuario debe ejecutar una vez la siguiente instrucción en el clúster. 

```
revoke assumerole on all from public for all;
```

## Notas de uso para revocar permisos de machine learning
<a name="r_REVOKE-usage-notes-create-model"></a>

No puede conceder ni revocar directamente permisos relacionados con una función de ML. Una función de ML pertenece a un modelo de ML y los permisos se controlan mediante el modelo. En su lugar, puede revocar los permisos relacionados con el modelo de ML. En el siguiente ejemplo, se muestra cómo revocar el permiso de ejecución a todos los usuarios asociados al modelo `customer_churn`.

```
REVOKE EXECUTE ON MODEL customer_churn FROM PUBLIC;
```

También puede revocar todos los permisos a un usuario para el modelo de ML `customer_churn`.

```
REVOKE ALL on MODEL customer_churn FROM ml_user;
```

Se producirá un error en la revocación del permiso `EXECUTE` relacionado con una función de ML si existe una función de ML en el esquema, aunque dicha función de ML ya disponga del permiso `EXECUTE` mediante `GRANT EXECUTE ON MODEL`. Recomendamos utilizar un esquema independiente cuando utilice el comando `CREATE MODEL` para mantener las funciones de ML en un esquema independiente por sí mismas. En el siguiente ejemplo, se muestra cómo hacerlo.

```
CREATE MODEL ml_schema.customer_churn
FROM customer_data
TARGET churn
FUNCTION ml_schema.customer_churn_prediction
IAM_ROLE default
SETTINGS (
 S3_BUCKET 'amzn-s3-demo-bucket'
);
```

# Ejemplos
<a name="r_REVOKE-examples"></a>

En el siguiente ejemplo, se revocan privilegios INSERT en la tabla SALES del grupo de usuarios GUESTS. Este comando previene que los miembros de GUESTS puedan cargar datos en la tabla SALES con el comando INSERT. 

```
revoke insert on table sales from group guests;
```

En el siguiente ejemplo, se le revoca el privilegio SELECT en todas las tablas del esquema QA\$1TICKIT al usuario `fred`.

```
revoke select on all tables in schema qa_tickit from fred;
```

En el siguiente ejemplo, se le revoca el privilegio para seleccionar desde una vista al usuario `bobr`.

```
revoke select on table eventview from bobr;
```

En el siguiente ejemplo, se le revoca el privilegio para crear tablas temporales en la base de datos TICKIT a todos los usuarios.

```
revoke temporary on database tickit from public;
```

En el siguiente ejemplo, se revoca el privilegio SELECT en las columnas `cust_name` y `cust_phone` de la tabla `cust_profile` del usuario `user1`. 

```
revoke select(cust_name, cust_phone) on cust_profile from user1;
```

En el siguiente ejemplo, se revoca el privilegio SELECT en las columnas `cust_name` y `cust_phone` y el privilegio UPDATE en la columna `cust_contact_preference` de la tabla `cust_profile` del grupo `sales_group`. 

```
revoke select(cust_name, cust_phone), update(cust_contact_preference) on cust_profile from group sales_group;
```

En el siguiente ejemplo, se muestra el uso de la palabra clave ALL para revocar los privilegios SELECT y UPDATE de las tres columnas de la tabla `cust_profile` del grupo `sales_admin`. 

```
revoke ALL(cust_name, cust_phone,cust_contact_preference) on cust_profile from group sales_admin;
```

En el siguiente ejemplo, se revoca el privilegio SELECT de la columna `cust_name` de la vista `cust_profile_vw` del usuario `user2`. 

```
revoke select(cust_name) on cust_profile_vw from user2;
```

## Ejemplos de revocación del permiso USAGE a bases de datos creadas a partir de recursos compartidos de datos
<a name="r_REVOKE-examples-datashare"></a>

En el ejemplo siguiente se revoca el acceso al recurso compartido de datos `salesshare` desde el espacio de nombres `13b8833d-17c6-4f16-8fe4-1a018f5ed00d`.

```
REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
```

En el siguiente ejemplo se revoca el permiso USAGE en `sales_db` a `Bob`.

```
REVOKE USAGE ON DATABASE sales_db FROM Bob;
```

El siguiente es un ejemplo de permiso REVOKE USAGE en `sales_schema` para el `Analyst_role`.

```
REVOKE USAGE ON SCHEMA sales_schema FROM ROLE Analyst_role;
```

## Ejemplos de revocación de permisos acotados
<a name="r_REVOKE-examples-scoped"></a>

El siguiente ejemplo revoca el uso de todos los esquemas actuales y futuros de la base de datos `Sales_db` al rol `Sales`.

```
REVOKE USAGE FOR SCHEMAS IN DATABASE Sales_db FROM ROLE Sales;
```

El siguiente ejemplo revoca la posibilidad de conceder el permiso SELECT para todas las tablas actuales y futuras de la base de datos `Sales_db` al usuario `alice`. `alice` conserva el acceso a todas las tablas en `Sales_db`.

```
REVOKE GRANT OPTION SELECT FOR TABLES IN DATABASE Sales_db FROM alice;
```

En el siguiente ejemplo, se revoca el permiso EXECUTE para las funciones del esquema `Sales_schema` al usuario `bob`.

```
REVOKE EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema FROM bob;
```

En el siguiente ejemplo se revocan todos los permisos para todas las tablas del esquema `ShareSchema` de la base de datos `ShareDb` al rol `Sales`. Al especificar el esquema, también puede indicar la base de datos del esquema mediante el formato de dos partes `database.schema`.

```
REVOKE ALL FOR TABLES IN SCHEMA ShareDb.ShareSchema FROM ROLE Sales;
```

El siguiente ejemplo es el mismo que el anterior. Puede especificar la base de datos del esquema mediante la palabra clave `DATABASE` en lugar de utilizar un formato de dos partes.

```
REVOKE ALL FOR TABLES IN SCHEMA ShareSchema DATABASE ShareDb FROM ROLE Sales;
```

## Ejemplos de revocación del privilegio ASSUMEROLE
<a name="r_REVOKE-examples-assumerole"></a>

A continuación, se muestran ejemplos de revocación del privilegio ASSUMEROLE. 

Un superusuario debe habilitar el uso del privilegio ASSUMEROLE para usuarios y grupos al ejecutar una sola vez la siguiente instrucción en el clúster: 

```
revoke assumerole on all from public for all;
```

La siguiente instrucción revoca el privilegio ASSUMEROLE del usuario reg\$1user1 en todos los roles para todas las operaciones. 

```
revoke assumerole on all from reg_user1 for all;
```

## Ejemplos de revocación del privilegio ROLE
<a name="r_REVOKE-examples-role"></a>

El siguiente ejemplo revoca sample\$1role1 a sample\$1role2.

```
CREATE ROLE sample_role2;
GRANT ROLE sample_role1 TO ROLE sample_role2;
REVOKE ROLE sample_role1 FROM ROLE sample_role2;
```

El siguiente ejemplo revoca los privilegios del sistema a user1.

```
GRANT ROLE sys:DBA TO user1;
REVOKE ROLE sys:DBA FROM user1;
```

El siguiente ejemplo revoca sample\$1role1 y sample\$1role2 a user1.

```
CREATE ROLE sample_role1;
CREATE ROLE sample_role2;
GRANT ROLE sample_role1, ROLE sample_role2 TO user1;
REVOKE ROLE sample_role1, ROLE sample_role2 FROM user1;
```

El siguiente ejemplo revoca sample\$1role2 con ADMIN OPTION a user1.

```
GRANT ROLE sample_role2 TO user1 WITH ADMIN OPTION;
REVOKE ADMIN OPTION FOR ROLE sample_role2 FROM user1;
REVOKE ROLE sample_role2 FROM user1;
```

El siguiente ejemplo revoca sample\$1role1 y sample\$1role2 a sample\$1role5.

```
CREATE ROLE sample_role5;
GRANT ROLE sample_role1, ROLE sample_role2 TO ROLE sample_role5;
REVOKE ROLE sample_role1, ROLE sample_role2 FROM ROLE sample_role5;
```

El siguiente ejemplo revoca los privilegios del sistema CREATE SCHEMA y DROP SCHEMA a sample\$1role1.

```
GRANT CREATE SCHEMA, DROP SCHEMA TO ROLE sample_role1;
REVOKE CREATE SCHEMA, DROP SCHEMA FROM ROLE sample_role1;
```