Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Cómo concedo permisos de acceso a esquemas externos en Amazon Redshift?
Mis usuarios no pueden acceder a los objetos del esquema externo de mi clúster de Amazon Redshift.
Descripción corta
Cuando utilizas esquemas externos en Amazon Redshift, es posible que recibas los siguientes mensajes de error:
- «Permission denied»
- «Operation is not supported»
- «External tables are not supported in views»
Las configuraciones incorrectas de los permisos de AWS Lake Formation también pueden provocar errores en Amazon Redshift Spectrum. Para resolver este problema, debes conceder permisos en los esquemas externos, no a nivel de tabla.
Resolución
Concesión de permiso para acceder a los objetos del esquema externo
Cuando un usuario de Amazon Redshift no tiene permiso para acceder a los objetos de un esquema externo, es posible que reciba el siguiente error:
!ERROR: permission denied for schema external_schema_name»
Para conceder permisos al usuario, sigue estos pasos:
-
Abre la consola de Amazon Redshift.
-
Inicia sesión como superusuario.
-
Ejecuta el siguiente comando para verificar los permisos de usuario para el esquema externo al que desean acceder:
SELECT * FROM SVV_SCHEMA_PRIVILEGES WHERE identity_name = 'name_of_the_user/role/group' AND namespace_name = 'external_schema_name';Nota: Sustituye name_of_the_user/role/group por el nombre, rol o grupo del usuario al que deseas conceder acceso. Sustituye external_schema_name por el nombre del esquema externo.
Si el comando anterior no devuelve el tipo de permiso USAGE, significa que el usuario, el rol o el grupo no tienen permiso para consultar el esquema externo.
-
Ejecuta uno de los siguientes comandos GRANT para conceder permiso para usar el esquema externo:
GRANT USAGE ON SCHEMA external_schema_name TO user_name;GRANT USAGE ON SCHEMA external_schema_name TO role role_name;GRANT USAGE ON SCHEMA external_schema_name TO group group_name;Nota: Sustituye external_schema_name por el nombre del esquema externo. Sustituye user_name, role_name o group_name por el usuario, rol o grupo al que deseas conceder acceso.
Resolución de problemas de permisos de recursos compartidos de datos
Cuando intentas conceder permisos a objetos de un esquema externo, es posible que recibas el siguiente mensaje de error:
«ERROR: Operation is not supported through datashares».
Este error se produce en las siguientes situaciones:
- El esquema externo proviene de una base de datos que creaste a partir de un recurso de datos.
- El recurso compartido de datos original no incluía la cláusula WITH PERMISSIONS.
Para resolver este problema, vuelve a crear la base de datos a partir del recurso compartido de datos con la cláusula WITH PERMISSION.
Sigue estos pasos:
-
Ejecuta el siguiente comando para eliminar la base de datos del recurso compartido de datos existente:
DROP database database_created_from_datashare_name;Nota: Sustituye database_created_from_datashare_name por el nombre de tu base de datos.
-
Ejecuta el siguiente comando para volver a crear la base de datos:
CREATE DATABASE database_created_from_datashare_name WITH PERMISSIONS FROM DATASHARE 'datashare_name' OF ACCOUNT 'account_number' NAMESPACE 'namespace_uuid';Nota: Sustituye database_created_from_datashare_name por el nombre de tu base de datos y datashare_name por el nombre de tu recurso compartido de datos. Sustituye account number por el número de tu cuenta de AWS y namespace_uuid por el identificador único universal del espacio de nombres (UUID).
-
Ejecuta el siguiente comando para crear el esquema externo:
CREATE EXTERNAL SCHEMA external_schema_name FROM REDSHIFT DATABASE database_created_from_datashare_name SCHEMA schema_in_database_created_from_datashare;Nota: Sustituye external_schema_name por el nombre del esquema externo y database_created_from_datashare_name por el nombre de tu base de datos. Sustituye schema_in_database_created_from_datashare por el nombre del esquema que has creado a partir de un recurso compartido de datos.
-
Ejecuta el siguiente comando para conceder permisos de uso:
GRANT USAGE on SCHEMA external_schema_name to user_name; GRANT USAGE ON SCHEMA database_created_from_datashare_name.schema_in_datashare_name TO user_name;Nota: Sustituye external_schema_name por el nombre del esquema externo. Sustituye user_name por el nombre del usuario al que deseas conceder el uso. Sustituye database_created_from_datashare_name por el nombre de la base de datos que has creado a partir de un recurso compartido de datos y schema_in_datashare_name por el nombre de tu esquema.
-
Ejecuta el siguiente comando SELECT para conceder permiso para acceder a tablas específicas:
GRANT SELECT ON TABLE database_created_from_datashare_name.schema_in_datashare_name.table_name TO user_name;Nota: Sustituye database_created_from_datashare_name por el nombre de la base de datos qe has creado a partir de un recurso compartido de datos y schema_in_datashare_name por el nombre de tu esquema. Sustituye table_name por el nombre de tu tabla y user_name por tu nombre de usuario.
Para conceder acceso a todas las tablas del esquema, ejecuta el siguiente comando:
GRANT SELECT ON ALL TABLES IN SCHEMA database_created_from_datashare_name.schema_in_datashare_name TO user_name;Nota: Sustituye database_created_from_datashare_name por el nombre de la base de datos qe has creado a partir de un recurso compartido de datos y schema_in_datashare_name por el nombre de tu esquema. Sustituye user_name por tu nombre de usuario.
Resolución de esquemas externos con problemas de permisos de Lake Formation
Comprueba que has activado Lake Formation para tu catálogo de datos de AWS Glue y que el rol de AWS Identity and Access Management (IAM) de tu clúster de Amazon Redshift cuenta con los permisos necesarios para el catálogo de datos de AWS Glue.
Para obtener más información, consulta Redshift Spectrum y AWS Lake Formation y Administración de los permisos de Lake Formation.
Concesión de un control de acceso granular con esquemas externos
Utiliza Lake Formation o el encadenamiento de roles para conceder un control de acceso granular en Amazon Redshift Spectrum. Puedes conceder permisos a nivel de esquema, tabla o columna.
Para obtener más información, consulta Restricción del acceso a tablas externas de Amazon Redshift Spectrum a los usuarios y grupos de IAM de Amazon Redshift mediante el encadenamiento de roles y Concesión de permisos en los recursos del catálogo de datos.
Uso de la cláusula WITH NO SCHEMA BINDING al crear vistas con tablas externas
Al crear una vista que hace referencia a una tabla externa, es posible que recibas el siguiente mensaje de error:
«ERROR: External tables are not supported in views».
Para resolver este problema, ejecuta el siguiente comando para crear la vista con la cláusula WITH NO SCHEMA BINDING:
CREATE OR REPLACE VIEW view_name AS SELECT * FROM external_schema_name.external_table_name WITH NO SCHEMA BINDING ;
Nota: Sustituye external_schema_name por el nombre del esquema externo y external_table_name por el nombre de la tabla externa.
Información relacionada
Parámetros para usar CREATE DATABASE con un recurso compartido de datos
- Temas
- Analytics
- Etiquetas
- Amazon Redshift
- Idioma
- Español

Contenido relevante
- preguntada hace 10 meses
- preguntada hace un año
- preguntada hace un año
- preguntada hace 10 días
- preguntada hace un año
OFICIAL DE AWSActualizada hace un año
OFICIAL DE AWSActualizada hace un año