Uso de vistas del AWS Glue Data Catalog - Amazon Athena

Uso de vistas del AWS Glue Data Catalog

Esta característica está en versión preliminar y está sujeta a cambios. Para obtener más información, consulte la sección Betas y versiones preliminares del documento Términos de servicio de AWS.

Utilice las vistas del AWS Glue Data Catalog cuando desee disponer de una única vista común entre los Servicios de AWS como Amazon Athena y Amazon Redshift. En las vistas del catálogo de datos, los permisos de acceso los define el usuario que creó la vista y no el usuario que consulta la vista. Este método de concesión de permisos se denomina semántica de definidor.

Los siguientes casos de uso muestran cómo puede usar las vistas del catálogo de datos.

  • Mayor control de acceso: se crea una vista que restringe el acceso a los datos en función del nivel de permisos que requiera el usuario. Por ejemplo, puede usar las vistas del catálogo de datos para evitar que los empleados que no trabajan en el departamento de Recursos Humanos (RRHH) vean información de identificación personal.

  • Garantía de registros completos: al aplicar determinados filtros a la vista del catálogo de datos, se asegura de que los registros de datos de una vista del catálogo de datos estén siempre completos.

  • Seguridad mejorada: en las vistas del catálogo de datos, la definición de consulta que crea la vista debe estar intacta para poder crearla. Esto hace que las vistas del catálogo de datos sean menos susceptibles a los comandos SQL de actores malintencionados.

  • Impedimento de acceso a las tablas subyacentes: la semántica del definidor permite a los usuarios acceder a una vista sin poner la tabla subyacente a su disposición. Solo el usuario que define la vista necesita acceder a las tablas.

Las definiciones de las vistas del catálogo de datos se almacenan en el AWS Glue Data Catalog. Esto significa que puede utilizar la AWS Lake Formation para conceder el acceso mediante concesiones de recursos, concesiones de columnas o controles de acceso basados en etiquetas. Para obtener más información sobre cómo conceder y revocar el acceso a Lake Formation, consulte Concesión y revocación de permisos en los recursos del catálogo de datos en la Guía para desarrolladores de AWS Lake Formation.

Permisos

Las vistas del catálogo de datos requieren tres roles de Lake Formation Admin, Definer y Invoker.

  • Lake Formation Admin: tiene acceso para configurar todos los permisos de Lake Formation.

  • Definer: crea la vista del catálogo de datos. El rol de Definer debe tener todos los permisos otorgables SELECT en todas las tablas subyacentes a las que hace referencia la definición de la vista.

  • Invoker: puede consultar la vista del catálogo de datos o comprobar sus metadatos. Para mostrar el invocador de una consulta, puede utilizar la función DML invoker_principal(). Para obtener más información, consulte invoker_principal().

Las relaciones de confianza del rol de Definer deben permitir la acción sts:AssumeRole respecto de las entidades de servicios principales de AWS Glue y de Lake Formation, como se muestra en el siguiente ejemplo.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com", "lakeformation.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

También se requieren permisos de IAM para el acceso a Athena. Para obtener más información, consulte Políticas administradas de AWS para Amazon Athena.

Limitaciones

  • Las vistas del catálogo de datos no pueden hacer referencia a otras vistas.

  • Puede hacer referencia a un máximo de 10 tablas en la definición de vista.

  • Las tablas subyacentes deben registrarse en Lake Formation.

  • La entidad principal de DEFINER solo puede ser un rol de IAM.

  • El rol de DEFINER debe tener todos los permisos (otorgables) SELECT en las tablas subyacentes.

  • No se admiten las vistas del catálogo de datos UNPROTECTED.

  • No se admiten en la definición de vista las funciones definidas por el usuario (UDF).

  • Los orígenes de datos federados de Athena no se pueden utilizar en las vistas del catálogo de datos.

  • Las vistas del catálogo de datos no son compatibles con los metaalmacenes externos de Hive.

  • Athena muestra un mensaje de error cuando detecta vistas obsoletas. Se registra una vista obsoleta cuando se produce alguna de las siguientes situaciones:

    • La vista hace referencia a tablas o bases de datos que no existen.

    • Se realiza un cambio de esquema o metadatos en una tabla referenciada.

    • Una tabla referenciada se elimina y se vuelve a crear con un esquema o configuración diferente.

Creación de una vista del catálogo de datos

El siguiente ejemplo de sintaxis muestra cómo un usuario del rol de Definer crea la vista del catálogo de datos de orders_by_date. En el ejemplo se supone que el rol de Definer tiene todos los permisos SELECT en la tabla orders de la base de datos default.

CREATE PROTECTED MULTI DIALECT VIEW orders_by_date SECURITY DEFINER AS SELECT orderdate, sum(totalprice) AS price FROM orders WHERE order_city = 'SEATTLE' GROUP BY orderdate

Consulta de la vista del catálogo de datos

Una vez creada la vista, el Admin de Lake Formation puede conceder permisos SELECT en la vista del catálogo de datos a las entidades principales del Invoker. A continuación, las entidades principales del Invoker pueden consultar la vista sin tener acceso a las tablas base subyacentes a las que hace referencia la vista. A continuación se muestra un ejemplo de consulta del Invoker.

SELECT * from orders_by_date where price > 5000

Actualización de una vista del catálogo de datos

El Lake Formation Admin o el Definer pueden usar la sintaxis ALTER VIEW UPDATE DIALECT para actualizar la definición de la vista. El siguiente ejemplo modifica la definición de la vista para seleccionar columnas de la tabla returns en lugar de la tabla orders.

ALTER VIEW orders_by_date UPDATE DIALECT AS SELECT return_date, sum(totalprice) AS price FROM returns WHERE order_city = 'SEATTLE' GROUP BY orderdate

Para obtener más información sobre la sintaxis para crear y administrar vistas del catálogo de datos, consulte Sintaxis de vista del catálogo de datos de Glue.