Filtrado de datos y seguridad de celda en Lake Formation - AWS Lake Formation

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Filtrado de datos y seguridad de celda en Lake Formation

Al conceder permisos de Lake Formation en una tabla del Catálogo de datos, puede incluir especificaciones de filtrado de datos para restringir el acceso a determinados datos en los resultados de las consultas y en los motores integrados con Lake Formation. Lake Formation utiliza el filtrado de datos para ofrecer una seguridad a nivel de columna, fila y celda. Puede definir y aplicar filtros de datos en las columnas anidadas si los datos de origen contienen estructuras anidadas.

Con las capacidades de filtrado de datos de Lake Formation, puede implementar los siguientes niveles de seguridad de datos.

Seguridad a nivel de columna

La concesión de permisos en una tabla del catálogo de datos con seguridad a nivel de columna (filtrado de columnas) permite a los usuarios ver solo las columnas específicas y columnas anidadas a las que tienen acceso en la tabla. Considere una tabla persons que se utiliza en varias aplicaciones para una gran empresa de comunicaciones multirregional. La concesión de permisos en las tablas del catálogo de datos mediante el filtrado de columnas puede impedir que los usuarios que no trabajan en el departamento de recursos humanos vean la información de identificación personal (PII), como el número de la seguridad social o la fecha de nacimiento. También puede definir políticas de seguridad y conceder acceso solo a subestructuras parciales de las columnas anidadas.

Seguridad de nivel básico

La concesión de permisos en una tabla del Catálogo de datos con seguridad a nivel de fila (filtrado de filas) permite a los usuarios ver solo las filas específicas de datos a las que tienen acceso en la tabla. El filtrado se basa en los valores de una o más columnas. Puede incluir estructuras de columnas anidadas al definir las expresiones de filtro de filas. Por ejemplo, si las diferentes oficinas regionales de la empresa de comunicaciones tienen sus propios departamentos de Recursos Humanos, puede limitar los registros de personas que los empleados de RH pueden ver a solo los registros de los empleados de su región.

Seguridad a nivel de celda

La seguridad a nivel de celda combina el filtrado de filas y el filtrado de columnas para lograr un modelo de permisos muy flexible. Si ve las filas y columnas de una tabla como una cuadrícula, mediante el uso de la seguridad a nivel de celda, puede restringir el acceso a los elementos individuales (celdas) de la cuadrícula en cualquier parte de las dos dimensiones. Es decir, puede restringir el acceso a diferentes columnas en función de la fila. Esto se ilustra en el siguiente diagrama, en el que las columnas restringidas aparecen sombreadas.

Se muestra una cuadrícula con 5 filas y 6 columnas. Las filas y columnas tienen encabezados como Col1, Col2, Row1, Row2, etc. Las celdas de la cuadrícula con las siguientes coordenadas están sombreadas: R3, C1; R3, C2; R3, C3; R5, C1; R5; C2; R5, C5; R5, C6.

Siguiendo con el ejemplo de la tabla de personas, puede crear un filtro de datos a nivel de celda que restrinja el acceso a la columna de direcciones si la fila tiene la columna de país establecida en «Reino Unido», pero que permita el acceso a la columna de direcciones si la fila tiene la columna de país como «EE. UU.».

Los filtros se aplican solo a las operaciones de lectura. Por lo tanto, solo puede conceder el permiso de Lake Formation SELECT con filtros.

Seguridad a nivel de celda en las columnas anidadas

Lake Formation le permite definir y aplicar filtros de datos con seguridad a nivel de celda en columnas anidadas. Sin embargo, los motores analíticos integrados, como Amazon Athena, Amazon y Amazon Redshift SpectrumEMR, permiten ejecutar consultas en tablas anidadas gestionadas por Lake Formation con seguridad a nivel de filas y columnas.

Para conocer las limitaciones, consulte Limitaciones de filtrado de datos.

Filtros de datos en Lake Formation

Puede implementar seguridad a nivel de columna, de fila y de celda mediante el uso de filtros de datos. Selecciona un filtro de datos al conceder el permiso de Lake Formation de SELECT sobre las tablas. Si la tabla contiene estructuras de columnas anidadas, puede definir un filtro de datos incluyendo o excluyendo las columnas secundarias y definir expresiones de filtro a nivel de fila en los atributos anidados.

Cada filtro de celdas de datos pertenece a una tabla específica de un Catálogo de datos. Un filtro de datos incluye la siguiente información:

  • Nombre del filtro

  • El catálogo de la tabla IDs asociada al filtro

  • Nombre de la tabla

  • Nombre de la base de datos que contiene las tablas que se enumerarán.

  • Especificación de columna: una lista de columnas y columnas anidadas (con tipos de datos struct) para incluir o excluir en los resultados de la consulta.

  • Expresión de filtro de filas: una expresión que especifica las filas que se van a incluir en los resultados de la consulta. Con algunas restricciones, la expresión tiene la sintaxis de una cláusula WHERE en el lenguaje PartiQL. Para especificar todas las filas, seleccione Acceso a todas las filas en Acceso a nivel de fila en la consola o Usar AllRowsWildcard en API llamadas.

    Para obtener más información acerca de lo que se admite en las expresiones de filtro de fila, consulte Compatibilidad con PartiQL en expresiones de filtro de filas.

El nivel de filtrado que recibe depende de cómo rellene el filtro de datos.

  • Al especificar el comodín “todas las columnas” y proporcionar una expresión de filtro de filas, solo se establece la seguridad de fila (filtrado de filas).

  • Al incluir o excluir columnas específicas y columnas anidadas y especificar «todas las filas» con el comodín de todas las filas, solo establece la seguridad a nivel de columna (filtrado de columnas).

  • Cuando se incluyen o excluyen columnas específicas y se proporciona también una expresión de filtro de fila, se establece la seguridad a nivel de celda (filtrado de celdas).

La siguiente captura de pantalla de la consola de Lake Formation muestra un filtro de datos que actúa a nivel de celda. En el caso de las consultas basadas en la tabla orders, restringe el acceso a la columna customer_name y los resultados de la consulta solo muestran las filas en las que la columna product_type contiene «farmacia».

La ventana del filtro de datos contiene estos campos, dispuestos en vertical: nombre del filtro de datos; base de datos de destino; tabla de destino; grupo de botones de opción con las opciones Acceso a todas las columnas, Incluir columnas y Excluir columnas; Seleccionar columnas (lista desplegable); expresión de filtro de filas (cuadro de texto multilínea). La opción Excluir columnas está seleccionada, la columna nombre_cliente está seleccionada para la exclusión y el campo Expresión del filtro de filas contiene 'product_type='pharma'.

Tenga en cuenta el uso de comillas simples para encerrar la cadena literal 'pharma'.

Puede usar la consola de Lake Formation para crear este filtro de datos o puede proporcionar el siguiente objeto de solicitud a la CreateDataCellsFilter API operación.

{ "Name": "restrict-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type='pharma'"}, "ColumnWildcard": { "ExcludedColumnNames": ["customer_name"] } }

Puede crear todos los filtros de datos que necesite para una tabla. Para ello, necesita un permiso SELECT con la opción de concesión que aparece en una tabla. De forma predeterminada, los administradores del lago de datos tienen permiso para crear filtros de datos en todas las tablas de esa cuenta. Normalmente solo se utiliza un subconjunto de los posibles filtros de datos cuando se conceden permisos sobre la tabla a una entidad principal. Por ejemplo, puede crear un segundo filtro de datos para la orders tabla que sea un filtro de row-security-only datos. En referencia a la captura de pantalla anterior, puede elegir la opción Acceso a todas las columnas e incluir una expresión de filtro de filas de product_type<>pharma. El nombre de este filtro de datos podría ser no-pharma. Restringe el acceso a todas las filas cuya product_type columna esté configurada como «pharma».

El objeto de solicitud para la CreateDataCellsFilter API operación de este filtro de datos es el siguiente.

{ "Name": "no-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type<>'pharma'"}, "ColumnNames": ["customer_id", "customer_name", "order_num" "product_id", "purchase_date", "product_type", "product_manufacturer", "quantity", "price"] }

A continuación, puede conceder SELECT sobre la tabla restrict-pharma con el filtro de datos orders a un usuario administrativo y SELECT sobre la tabla orders con el filtro de datos no-pharma a los usuarios no administrativos. En el caso de los usuarios del sector sanitario, concedería SELECT en la tabla orders con acceso total a todas las filas y columnas (sin filtro de datos), o quizá con otro filtro de datos que restrinja el acceso a la información sobre precios.

Puede incluir o excluir columnas anidadas al especificar la seguridad a nivel de columna y de fila dentro de un filtro de datos. En el siguiente ejemplo, el acceso al campo product.offer se especifica mediante nombres de columna cualificados (entre comillas dobles). Esto es importante en el caso de los campos anidados para evitar que se produzcan errores cuando los nombres de las columnas contienen caracteres especiales y para mantener la compatibilidad con versiones anteriores de las definiciones de seguridad de nivel columnas superior.

{ "Name": "example_dcf", "DatabaseName": "example_db", "TableName": "example_table", "TableCatalogId": "111122223333", "RowFilter": { "FilterExpression": "customer.customerName <> 'John'" }, "ColumnNames": ["customer", "\"product\".\"offer\""] }