Consideraciones y limitaciones al momento de utilizar Athena para consultar datos registrados en Lake Formation
Tenga en cuenta lo siguiente al utilizar Athena para consultar los datos registrados en Lake Formation. Para obtener información adicional, consulte Problemas conocidos de AWS Lake Formation en la Guía para desarrolladores de AWS Lake Formation.
Condiciones y limitaciones
- Metadatos de columna visibles para usuarios sin permisos de datos para columnas en algunas circunstancias
- Uso de permisos de Lake Formation para vistas
- Control de acceso detallado de Lake Formation y grupos de trabajo de Athena
- Ubicación de los resultados de consulta de Athena en Simple Storage Service (Amazon S3) no registrados en Lake Formation
- Uso de grupos de trabajo de Athena para limitar el acceso al historial de consultas
- Acceso entre cuentas
- Las ubicaciones de Amazon S3 cifradas con CSE-KMS registradas en Lake Formation no se pueden consultar en Athena
- Las ubicaciones de datos particionadas registradas en Lake Formation deben estar en subdirectorios de tablas
- Las consultas Create Table As Select (CTAS) requieren permisos de escritura de Amazon S3
- El permiso DESCRIBE es necesario en la base de datos predeterminada
Metadatos de columna visibles para usuarios no autorizados en algunas circunstancias con Avro y SerDe personalizado
La autorización de nivel de columna de Lake Formation impide que los usuarios obtengan acceso a los datos de las columnas para las que el usuario no tiene permisos de Lake Formation. Sin embargo, en determinadas situaciones, los usuarios pueden obtener acceso a los metadatos que describen todas las columnas de la tabla, incluidas las columnas para las que no tienen permisos sobre los datos.
Esto ocurre cuando los metadatos de columna se almacenan en propiedades de tabla para tablas que utilizan el formato de almacenamiento Apache Avro o un serializador/deserializador (SerDe) personalizado en el que el esquema de tabla se define en las propiedades de la tabla junto con la definición del SerDe. Cuando utilice Athena con Lake Formation, le recomendamos que revise el contenido de las propiedades de la tabla que registra con Lake Formation y, siempre que sea posible, limite la información almacenada en las propiedades de la tabla para evitar que los metadatos confidenciales sean visibles para los usuarios.
Uso de permisos de Lake Formation para vistas
Para los datos registrados en Lake Formation, un usuario de Athena puede crear una VIEW
solo si tiene permisos de Lake Formation para las tablas, las columnas y las ubicaciones de datos de Amazon S3 de origen en los que se basa la VIEW
. Después de crear una VIEW
en Athena, los permisos de Lake Formation se pueden aplicar a la VIEW
. Los permisos de nivel de columna no están disponibles para un VIEW
. Los usuarios que tienen permisos de Lake Formation para una VIEW
pero no tienen permisos para la tabla y las columnas en las que se basó la vista no pueden utilizar la VIEW
para consultar datos. Sin embargo, los usuarios con esta combinación de permisos pueden utilizar instrucciones como DESCRIBE VIEW
, SHOW CREATE VIEW
, y SHOW
COLUMNS
para ver metadatos de VIEW
. Por este motivo, asegúrese de alinear los permisos de Lake Formation para cada VIEW
con los permisos de tabla subyacentes. Los filtros de celda definidos en una tabla no se aplican a una VIEW
para esa tabla. Los nombres de enlace de recursos deben tener el mismo nombre que el recurso de la cuenta de origen. Existen limitaciones adicionales al trabajar con vistas en una configuración multicuenta. Para obtener más información sobre cómo configurar los permisos para vistas compartidas entre cuentas, consulte Acceso entre cuentas al catálogo de datos.
Control de acceso detallado de Lake Formation y grupos de trabajo de Athena
Los usuarios del mismo grupo de trabajo de Athena pueden ver los datos que el control de acceso detallado de Lake Formation ha configurado para que el grupo de trabajo pueda acceder a ellos. Para obtener más información sobre el uso de un control de acceso detallado en Lake Formation, consulte Manage fine-grained access control using AWS Lake Formation
Ubicación de los resultados de consulta de Athena en Simple Storage Service (Amazon S3) no registrados en Lake Formation
Las ubicaciones de los resultados de consulta en Amazon S3 para Athena no se pueden registrar en Lake Formation. Los permisos de Lake Formation no limitan el acceso a estas ubicaciones. A menos que limite el acceso, los usuarios de Athena pueden acceder a los archivos de resultados de consultas y metadatos cuando no tienen permisos de Lake Formation para los datos. Para evitar esto, le recomendamos que utilice grupos de trabajo para especificar la ubicación de los resultados de consulta y alinear la pertenencia a grupos de trabajo con permisos de Lake Formation. A continuación, puede utilizar políticas de permisos de IAM para limitar el acceso a ubicaciones de resultados de consulta. Para obtener más información sobre los resultados de consultas, consulte Trabajo con resultados de las consultas, consultas recientes y archivos de salida.
Uso de grupos de trabajo de Athena para limitar el acceso al historial de consultas
El historial de consultas de Athena expone una lista de consultas guardadas y las cadenas de consultas completas. A menos que utilice grupos de trabajo para separar el acceso a los historiales de consultas, los usuarios de Athena que no tengan autorización para consultar datos en Lake Formation pueden ver cadenas de consulta ejecutadas en esos datos, incluidos nombres de columna, criterios de selección, etc. Le recomendamos que utilice grupos de trabajo para separar los historiales de consultas y alinear la pertenencia al grupo de trabajo de Athena con permisos de Lake Formation para limitar el acceso. Para obtener más información, consulte Uso de grupos de trabajo para controlar el acceso a las consultas y los costos.
Acceso entre cuentas al catálogo de datos
Para acceder a un catálogo de datos en otra cuenta, puede utilizar la característica AWS Glue entre cuentas de Athena o configurar el acceso entre cuentas en Lake Formation.
Acceso entre cuentas al catálogo de datos de Athena
Puede utilizar la característica de catálogo de AWS Glue entre cuentas de Athena para registrar el catálogo en su cuenta. Esta capacidad está disponible únicamente en la versión 2 o una versión posterior del motor Athena y está limitada al uso de la misma región entre cuentas. Para obtener más información, consulte Registrar un catálogo de datos desde otra cuenta.
Si el catálogo de datos que se compartirá tiene una política de recursos configurada en AWS Glue, debe actualizarse para permitir el acceso a AWS Resource Access Manager y conceder permisos a la cuenta B para utilizar el catálogo de datos de la cuenta A, como en el siguiente ejemplo.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "ram.amazonaws.com" }, "Action": "glue:ShareResource", "Resource": [ "arn:aws:glue:
<REGION>
:<ACCOUNT-A>
:table/*/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:database/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:catalog" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<ACCOUNT-B>
:root" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:table/*/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:database/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:catalog" ] } ] }
Para obtener más información, consulte Acceso entre cuentas a los catálogos de datos de AWS Glue.
Configuración del acceso entre cuentas en Lake Formation
AWS Lake Formation le permite utilizar una sola cuenta para administrar un catálogo de datos central. Puede utilizar esta característica para implementar el acceso entre cuentas Acceder los metadatos del catálogo de datos y los datos subyacentes. Por ejemplo, una cuenta de propietario puede conceder permiso SELECT
en una tabla a otra cuenta (destinatario).
Para que aparezca una base de datos compartida o una tabla en el Editor de consultas de Athena, debe crear un enlace de recursos en Lake Formation a la base de datos o tabla compartida. Cuando la cuenta de destinatario en Lake Formation consulta la tabla del propietario, CloudTrail agrega el evento de acceso a datos a los registros de la cuenta de destinatario y de la cuenta de propietario.
Para las vistas compartidas, tenga en cuenta los siguientes puntos:
-
Las consultas se ejecutan en enlaces de recursos de destino, no en la vista o la tabla de origen y luego, la salida se comparte en la cuenta de destino.
-
No es suficiente compartir solo la vista. Todas las tablas que participan en la creación de la vista deben formar parte del recurso compartido entre cuentas.
-
El nombre del enlace de recursos creado en los recursos compartidos debe coincidir con el nombre del recurso en la cuenta de propietario. Si el nombre no coincide, aparece un mensaje de error como el siguiente
Failed analyzing stored view 'awsdatacatalog.
(Se produjo un error al momento de analizar la vista almacenada 'awsdatacatalog.my-lf-resource-link.my-lf-view': line 3:3: El esquema schema_name no existe)my-lf-resource-link
.my-lf-view
': line 3:3: Schemaschema_name
does not exist
Para obtener más información sobre el acceso entre cuentas en Lake Formation, consulte los siguientes recursos en la Guía para desarrolladores de AWS Lake Formation:
Cómo funcionan los enlaces de recursos en Lake Formation
Registro entre cuentas de CloudTrail
Ubicaciones de Amazon S3 cifradas con CSE-KMS registradas en Lake Formation
Las tablas de formato de tabla abierta (OTF), como Apache Iceberg, que tienen las siguientes características no se pueden consultar con Athena:
-
Las tablas se basan en ubicaciones de datos de Amazon S3 registradas en Lake Formation.
-
Los objetos de Amazon S3 se cifran mediante el cifrado del cliente (CSE).
-
El cifrado utiliza claves administradas por el cliente de AWS KMS (
CSE_KMS
).
Para consultar tablas que no son OTF (que están cifradas con una clave CSE_KMS
), añada el siguiente bloque a la política de la clave de AWS KMS que utiliza para el cifrado CSE. <KMS_KEY_ARN>
es el ARN de la clave de AWS KMS que cifra los datos. <IAM-ROLE-ARN>
es el ARN del rol de IAM que registra la ubicación de Amazon S3 en Lake Formation.
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "kms:Decrypt", "Resource": "
<KMS-KEY-ARN>
", "Condition": { "ArnLike": { "aws:PrincipalArn": "<IAM-ROLE-ARN>
" } } }
Las ubicaciones de datos particionadas registradas en Lake Formation deben estar en subdirectorios de tablas
Las tablas particionadas registradas en Lake Formation deben tener datos particionados en directorios que sean subdirectorios de la tabla en Amazon S3. Por ejemplo, una tabla con la ubicación s3://DOC-EXAMPLE-BUCKET/mytable
y las particiones s3://DOC-EXAMPLE-BUCKET/mytable/dt=2019-07-11
, s3://DOC-EXAMPLE-BUCKET/mytable/dt=2019-07-12
, etc. se puede registrar en Lake Formation y consultar mediante Athena. Por otra parte, una tabla con la ubicación s3://DOC-EXAMPLE-BUCKET/mytable
y las particiones ubicadas en s3://DOC-EXAMPLE-BUCKET/dt=2019-07-11
, s3://DOC-EXAMPLE-BUCKET/dt=2019-07-12
, etc. no se puede registrar en Lake Formation. Debido a que estas particiones no son subdirectorios de s3://DOC-EXAMPLE-BUCKET/mytable
, tampoco se pueden leer desde Athena.
Las consultas Create Table As Select (CTAS) requieren permisos de escritura de Amazon S3
Las consultas Create Table As Statements (CTAS) requieren acceso de escritura a la ubicación de las tablas de Amazon S3. Para ejecutar consultas CTAS sobre datos registrados en Lake Formation, los usuarios de Athena deben tener permisos de IAM para escribir en la tabla ubicaciones de Amazon S3, además de los permisos de Lake Formation correspondientes para leer las ubicaciones de datos. Para obtener más información, consulte Creación de una tabla a partir de los resultados de una consulta (CTAS).
El permiso DESCRIBE es necesario en la base de datos predeterminada
Se requiere el permiso DESCRIBE
de Lake Formation en la base de datos default
para que Lake Formation pueda verlo. El siguiente ejemplo de comando AWS CLI otorga el permiso DESCRIBE
en la base de datos default
al usuario datalake_user1
en la cuenta 111122223333
de AWS.
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DESCRIBE" --resource '{ "Database": {"Name":"default"}}
Para obtener más información, consulte DESCRIBE en la Guía para desarrolladores de AWS Lake Formation.