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.
Gestión de un lago de datos mediante el control de acceso basado en etiquetas de Lake Formation
Miles de clientes están creando lagos de datos a escala de petabytes. AWS Muchos de estos clientes los utilizan AWS Lake Formation para crear y compartir fácilmente sus lagos de datos en toda la organización. A medida que aumenta el número de tablas y usuarios, los responsables y administradores de datos buscan formas de gestionar fácilmente los permisos en los lagos de datos a escala. El control de acceso basado en etiquetas de Lake Formation (LF-TBAC) resuelve este problema al permitir que los administradores de datos creen etiquetas LF (en función de su clasificación y ontología de datos) que luego se pueden adjuntar a los recursos.
LF-TBAC es una estrategia de autorización que define permisos basados en atributos. En Lake Formation, estos atributos se denominan etiquetas LF. Puede adjuntar etiquetas LF a los recursos del Catálogo de datos y a las entidades principales de Lake Formation. Los administradores de lagos de datos pueden asignar y revocar permisos en los recursos de Lake Formation mediante etiquetas LF. Para obtener más información, consulte Control de acceso basado en etiquetas de Lake Formation.
Este tutorial muestra cómo crear una política de control de acceso basada en etiquetas de Lake Formation utilizando un conjunto de datos AWS público. Además, muestra cómo consultar tablas, bases de datos y columnas que tienen asociadas políticas de acceso basadas en etiquetas de Lake Formation.
Puede utilizar LF-TBAC para los siguientes casos de uso:
Tiene un gran número de tablas y entidades principales a los que el administrador del lago de datos debe conceder acceso
Desea clasificar sus datos en función de una ontología y conceder permisos en función de la clasificación
El administrador del lago de datos desea asignar los permisos de forma dinámica, con acoplamiento flexible
A continuación, se indican los pasos generales para configurar permisos mediante LF-TBAC:
-
El administrador de datos define la ontología de las etiquetas con dos etiquetas LF:
Confidential
ySensitive
. Los datosConfidential=True
tienen controles de acceso más estrictos. Los datosSensitive=True
requieren un análisis específico por parte del analista. -
El administrador de datos asigna diferentes niveles de permisos al ingeniero de datos para crear tablas con diferentes etiquetas LF.
-
El ingeniero de datos crea dos bases de datos:
tag_database
ycol_tag_database
. Todas las tablastag_database
están configuradas conConfidential=True
. Todas las tablas decol_tag_database
están configuradas conConfidential=False
. Algunas columnas de la tabla encol_tag_database
tienen etiquetasSensitive=True
para necesidades de análisis específicas. El ingeniero de datos concede permiso de lectura al analista para las tablas con una condición de expresión específica
Confidential=True
yConfidential=False
,Sensitive=True
.-
Con esta configuración, el analista de datos puede centrarse en hacer el análisis con los datos correctos.
Temas
Destinatarios previstos
Este tutorial está dirigido a administradores de datos, ingenieros de datos y analistas de datos. Cuando se trata de gestionar AWS Glue Data Catalog y administrar los permisos en Lake Formation, los administradores de datos de las cuentas productoras tienen una propiedad funcional en función de las funciones que respaldan y pueden conceder acceso a varios consumidores, organizaciones externas y cuentas.
La tabla siguiente enumera los roles que se utilizan en este tutorial:
Rol | Descripción |
---|---|
Administrador de datos | El usuario lf-data-steward tiene el acceso siguiente:
|
Ingeniero de datos |
El usuario
|
Analista de datos | El usuario lf-data-analyst tiene el siguiente acceso:
|
Requisitos previos
Antes de comenzar este tutorial, debe tener una Cuenta de AWS que pueda usar para iniciar sesión como usuario administrativo con los permisos correctos. Para obtener más información, consulte Complete las tareas AWS de configuración iniciales.
En este tutorial, se supone que está familiarizado con IAM. Para obtener más información acerca de IAM, consulte la Guía del usuario de IAM.
Paso 1: Aprovisionar recursos
Este tutorial incluye una AWS CloudFormation plantilla para una configuración rápida. Puede revisarla y personalizarla para adaptarla a sus necesidades. La plantilla crea tres funciones diferentes (enumeradas enDestinatarios previstos) para realizar este ejercicio y copia el nyc-taxi-data conjunto de datos en su bucket local de Amazon S3.
Un bucket de Amazon S3.
Los escenarios apropiados de Lake Formation
Los EC2 recursos de Amazon adecuados
Tres roles de IAM con credenciales
Crear recursos
Inicie sesión en la AWS CloudFormation consola en https://console.aws.amazon.com/cloudformation
en la región EE.UU. Este (Norte de Virginia). Seleccione Lanzar pila
. -
Elija Next (Siguiente).
-
En la sección Configuración de usuario, introduzca la contraseña para tres roles:
DataStewardUserPassword
,DataEngineerUserPassword
yDataAnalystUserPassword
. Revisa los detalles en la última página y selecciona Acepto que AWS CloudFormation podría crear recursos de IAM.
Seleccione Crear.
La creación de la pila puede tardar hasta cinco minutos.
nota
Después de completar el tutorial, es posible que desee eliminar la pila AWS CloudFormation para evitar seguir incurriendo en cargos. Compruebe que los recursos se hayan eliminado correctamente en el estado de evento de la pila.
Paso 2: Registrar la ubicación de sus datos, crear una ontología de etiquetas LF y conceder permisos
En este paso, el usuario administrador de datos define la ontología de etiquetas con dos etiquetas LF Confidential
y Sensitive
; además, ofrece a las entidades principales de IAM específicas adjuntar etiquetas LF recién creadas a los recursos.
Registre la ubicación de los datos y cree una ontología de etiquetas LF.
Siga el primer paso como usuario administrador de datos (
lf-data-steward
) para verificar los datos en Amazon S3 y el Catálogo de datos en Lake Formation.Inicie sesión en la consola de Lake Formation
lf-data-steward
con la contraseña utilizada al implementar la AWS CloudFormation pila. https://console.aws.amazon.com/lakeformation/En el panel de navegación, en Permisos, elija Roles y tareas administrativas.
En la sección Administradores del lago de datos, elija Agregar.
En la página Agregar administrador, en Usuarios y roles de IAM, elija el usuario
lf-data-steward
.Seleccione Guardar para añadir
lf-data-steward
como administrador de Lake Formation.
-
A continuación, actualice la configuración del Catálogo de datos para usar el permiso de Lake Formation para controlar los recursos del catálogo en lugar del control de acceso basado en IAM.
En el panel de navegación, Administración, seleccione Configuración del Catálogo de datos.
Desmarque Usar solo el control de acceso de IAM para las nuevas bases de datos.
Desmarque Usar solo el control de acceso de IAM para las nuevas bases de datos.
Haga clic en Guardar.
A continuación, registre la ubicación de los datos para el lago de datos.
En el panel de navegación, bajo Administración, seleccione Ubicaciones de los lagos de datos.
Seleccione Registrar ubicación.
En la página Registrar ubicación, en la Ruta de Amazon S3, introduzca
s3://lf-tagbased-demo-
.Account-ID
En rol de IAM, deje el valor predeterminado
AWSServiceRoleForLakeFormationDataAccess
como está.Elija Lake Formation como modo de permiso.
Elija Registrar ubicación.
-
A continuación, cree la ontología definiendo una etiqueta LF.
En el panel de navegación, en Permisos, elija Etiquetas LF y permisos.
Seleccione Agregar etiqueta LF.
En Clave, escriba
Confidential
.En Valores, añada
True
yFalse
.Elija Añadir etiquetas LF.
-
Repita los pasos para crear la Etiqueta LF
Sensitive
con el valorTrue
.
Ha creado todas las etiquetas L necesarias para este ejercicio.
Conceder permisos a los usuarios de IAM
-
A continuación, otorgue a entidades principales específicas de IAM la capacidad de adjuntar etiquetas LF recién creadas a los recursos.
En el panel de navegación, en Permisos, elija Etiquetas LF y permisos.
En la sección Permisos de etiquetas LF, elija Conceder permisos.
En Tipo de permiso, elija Permisos de par clave-valor de etiquetas LF.
Seleccione Roles y usuarios de IAM.
En Roles y usuarios de IAM, busque y elija el rol
lf-data-engineer
.En la sección Etiquetas LF, agregue la clave
Confidential
con los valoresTrue
yFalse
, y lakey
Sensitive
con el valorTrue
.En Permisos, seleccione Describir y Asociar para Permisos y Permisos concedibles.
Elija Conceder.
-
A continuación, conceda permisos
lf-data-engineer
para crear bases de datos en nuestro catálogo de datos y en el bucket de Amazon S3 subyacente creado por AWS CloudFormation.En el panel de navegación, en Administración, seleccione Roles y tareas administrativas.
En la sección Creadores de bases de datos, elija Conceder.
En Usuarios de AIM y roles, elija el rol
lf-data-engineer
.En Permisos del catálogo, seleccione Crear base de datos.
Elija Conceder.
-
A continuación, conceda permisos en el bucket
(s3://lf-tagbased-demo-
de Amazon S3 al usuarioAccount-ID
)lf-data-engineer
.En el panel de navegación, bajo Permisos, seleccione Ubicaciones de datos.
Elija Conceder.
Seleccione Mi cuenta.
En Usuarios de AIM y roles, elija el rol
lf-data-engineer
.Para las ubicaciones de almacenamiento, introduzca el depósito de Amazon S3 creado por la AWS CloudFormation plantilla
(s3://lf-tagbased-demo-
.Account-ID
)Elija Conceder.
-
A continuación, conceda permisos concedibles
lf-data-engineer
sobre los recursos asociados a la expresiónConfidential=True
de la Etiqueta LF.En el panel de navegación, en Permisos, seleccione Permisos de lago de datos.
Elija Conceder.
Seleccione Roles y usuarios de IAM.
Elija el rol
lf-data-engineer
.En la sección Recursos del catálogo o de la etiqueta LF, seleccione Recursos que coincidan con las etiquetas LF.
Seleccione Agregar par clave-valor de etiquetas LF.
Añada la clave
Confidential
con los valoresTrue
.En la sección Permisos de base de datos, seleccione Describir en Permisos de bases de datos y Permisos concedibles.
En la sección Permisos de tabla, seleccione Describir, Seleccionar y Modificar, tanto para los Permisos de tabla como para los Permisos concedibles.
Elija Conceder.
-
A continuación, otorgue permisos concedibles
lf-data-engineer
sobre los recursos asociados a la expresiónConfidential=False
de la etiqueta LF.En el panel de navegación, en Permisos, seleccione Permisos de lago de datos.
Elija Conceder.
Seleccione Roles y usuarios de IAM.
Elija el rol
lf-data-engineer
.Seleccione Recursos que coincidan con las etiquetas LF.
Elija Añadir etiquetas LF.
Añada la clave
Confidential
con los valoresFalse
.En la sección Permisos de base de datos, seleccione Describir en Permisos de bases de datos y Permisos concedibles.
En la sección Permisos de tabla y columna, no selecciones nada.
Elija Conceder.
-
A continuación, conceda permisos concedibles
lf-data-engineer
sobre los recursos asociados a los pares de clave-valorConfidential=False
ySensitive=True
de la Etiqueta LF.En el panel de navegación, en Permisos, seleccione Permisos de datos.
Elija Conceder.
Seleccione Roles y usuarios de IAM.
Elija el rol
lf-data-engineer
.En la sección Etiquetas LF o recursos del catálogo, seleccione Recursos que coincidan con las etiquetas LF.
Seleccione Agregar etiqueta LF.
Añada la clave
Confidential
con los valoresFalse
.Seleccione Agregar par clave-valor de etiquetas LF.
Añada la clave
Sensitive
con los valoresTrue
.En la sección Permisos de base de datos, seleccione Describir en Permisos de bases de datos y Permisos concedibles.
En la sección Permisos de tabla, seleccione Describir, Seleccionar y Modificar, tanto para los Permisos de tabla como para los Permisos concedibles.
Elija Conceder.
Paso 3: Crear bases de datos de Lake Formation
En este paso, se crean dos bases de datos y se adjuntan etiquetas LF a las bases de datos y columnas específicas con fines de prueba.
Cree sus bases de datos y su tabla para el acceso a nivel de base de datos
-
En primer lugar, cree la base de datos
tag_database
, la tablasource_data
y adjunte las etiquetas L correspondientes.En la consola de Lake Formation (https://console.aws.amazon.com/lakeformation/
), en Catálogo de datos, elija Bases de datos. Elija Creación de base de datos.
En Nombre, ingrese
tag_database
.En Ubicación, introduzca la ubicación de Amazon S3 creada por la AWS CloudFormation plantilla
(s3://lf-tagbased-demo-
.Account-ID
/tag_database/)Desmarque Usar solo el control de acceso de IAM para las nuevas tablas de esta base de datos.
Elija Creación de base de datos.
-
A continuación, cree una nueva tabla dentro de
tag_database
.En la página Bases de datos, seleccione la base de datos
tag_database
.Seleccione Ver tablas y haga clic en Crear tabla.
En Nombre, escriba
source_data
.En Base de datos elija la base de datos
tag_database
.Para el formato de tabla, elija AWS Glue Tabla estándar.
En Los datos se encuentran en, elija Ruta especificada en otra cuenta.
En Incluir ruta, introduzca la ruta que
tag_database
ha creado la AWS CloudFormation plantilla(s3://lf-tagbased-demo
.Account-ID
/tag_database/)En Formato de datos, seleccione CSV.
En Esquema de carga, introduzca la matriz JSON de estructura de columnas siguiente para crear un esquema:
[ { "Name": "vendorid", "Type": "string" }, { "Name": "lpep_pickup_datetime", "Type": "string" }, { "Name": "lpep_dropoff_datetime", "Type": "string" }, { "Name": "store_and_fwd_flag", "Type": "string" }, { "Name": "ratecodeid", "Type": "string" }, { "Name": "pulocationid", "Type": "string" }, { "Name": "dolocationid", "Type": "string" }, { "Name": "passenger_count", "Type": "string" }, { "Name": "trip_distance", "Type": "string" }, { "Name": "fare_amount", "Type": "string" }, { "Name": "extra", "Type": "string" }, { "Name": "mta_tax", "Type": "string" }, { "Name": "tip_amount", "Type": "string" }, { "Name": "tolls_amount", "Type": "string" }, { "Name": "ehail_fee", "Type": "string" }, { "Name": "improvement_surcharge", "Type": "string" }, { "Name": "total_amount", "Type": "string" }, { "Name": "payment_type", "Type": "string" } ]
Seleccione Cargar. Tras cargar el esquema, el esquema de la tabla será similar a la siguiente captura de pantalla:
Elija Enviar.
-
A continuación, adjunte etiquetas LF de base de datos.
En la página Bases de datos, busque y seleccione
tag_database
.En el menú Acciones, elija Editar etiquetas LF.
Seleccione Asignar una nueva etiqueta LF.
En Claves asignadas, elija la etiqueta LF
Confidential
que creó anteriormente.En Valores, elija
True
.Seleccione Guardar.
Esto completa la asignación de la etiqueta LF a la base de datos tag_database.
Cree su base de datos y su tabla para el acceso a nivel de base de datos
Repita los pasos siguientes para crear la base de datos col_tag_database
y la tabla source_data_col_lvl
, y adjunte las etiquetas LF columna.
En la página Bases de datos, seleccione Crear base de datos.
-
En Nombre, escriba
col_tag_database
. -
En Ubicación, introduzca la ubicación de Amazon S3 creada por la AWS CloudFormation plantilla
(s3://lf-tagbased-demo-
.Account-ID
/col_tag_database/) -
Desmarque Usar solo el control de acceso de IAM para las nuevas tablas de esta base de datos.
-
Elija Creación de base de datos.
En la página Bases de datos, seleccione la nueva base de datos
(col_tag_database)
.Seleccione Ver tablas y haga clic en Crear tabla.
En Nombre, escriba
source_data_col_lvl
.En Base de datos, elija su nueva base de datos
(col_tag_database)
.Para el formato de tabla, elija AWS Glue Tabla estándar.
En Los datos se encuentran en, elija Ruta especificada en otra cuenta.
Introduzca la ruta de Amazon S3 para
col_tag_database
(s3://lf-tagbased-demo-
.Account-ID
/col_tag_database/)En Formato de datos, seleccione
CSV
.En
Upload schema
, introduzca el siguiente esquema JSON:[ { "Name": "vendorid", "Type": "string" }, { "Name": "lpep_pickup_datetime", "Type": "string" }, { "Name": "lpep_dropoff_datetime", "Type": "string" }, { "Name": "store_and_fwd_flag", "Type": "string" }, { "Name": "ratecodeid", "Type": "string" }, { "Name": "pulocationid", "Type": "string" }, { "Name": "dolocationid", "Type": "string" }, { "Name": "passenger_count", "Type": "string" }, { "Name": "trip_distance", "Type": "string" }, { "Name": "fare_amount", "Type": "string" }, { "Name": "extra", "Type": "string" }, { "Name": "mta_tax", "Type": "string" }, { "Name": "tip_amount", "Type": "string" }, { "Name": "tolls_amount", "Type": "string" }, { "Name": "ehail_fee", "Type": "string" }, { "Name": "improvement_surcharge", "Type": "string" }, { "Name": "total_amount", "Type": "string" }, { "Name": "payment_type", "Type": "string" } ]
Elija
Upload
. Tras cargar el esquema, el esquema de la tabla será similar a la siguiente captura de pantalla:Seleccione Enviar para completar la creación de la tabla.
-
Ahora, asocie la etiqueta LF
Sensitive=True
a las columnasvendorid
yfare_amount
.En la página Tablas, seleccione la tabla que ha creado
(source_data_col_lvl)
.En el menú Acciones, elija Esquema.
Seleccione la columna
vendorid
y elija Editar etiquetas LF.En Teclas asignadas, seleccione Sensible.
En Valores, elija Verdadero.
Seleccione Guardar.
-
A continuación, asocie la etiqueta LF
Confidential=False
acol_tag_database
. Esto es necesariolf-data-analyst
para poder describir la base de datoscol_tag_database
al iniciar sesión desde ella Amazon Athena.En la página Bases de datos, busque y seleccione
col_tag_database
.En el menú Acciones, elija Editar etiquetas LF.
Seleccione Asignar una nueva etiqueta LF.
En Claves asignadas, elija la etiqueta LF
Confidential
que creó anteriormente.En Valores, elija
False
.Seleccione Guardar.
Paso 4: Conceder permisos de tabla
Conceda permisos a los analistas de datos para el uso de las bases de datos tag_database
y la tabla col_tag_database
utilizando etiquetas LF Confidential
y Sensitive
.
-
Siga estos pasos para conceder permisos al usuario
lf-data-analyst
sobre los objetos asociados a la etiqueta LFConfidential=True
(base de datos: tag_database) para obtener el permisoDescribe
sobre la base de datos y el permisoSelect
sobre las tablas.Inicie sesión en la consola de Lake Formation en https://console.aws.amazon.com/lakeformation/
as lf-data-engineer
.En Permisos, seleccione Permisos de lago de datos.
Elija Conceder.
En Entidades principales, seleccione Roles y usuarios de IAM.
En Roles y usuarios de IAM, elija
lf-data-analyst
.En la sección Etiquetas LF o recursos del catálogo, seleccione Recursos que coincidan con las etiquetas LF.
Elija Añadir etiquetas LF.
En Clave, elija
Confidential
.En Valores, elija
True
.En Permisos de base de datos, seleccione
Describe
.En Permisos de tabla, elija Seleccionar y Describir.
Elija Conceder.
-
A continuación, repita los pasos para conceder permisos a los analistas de datos para la expresión
Confidential=False
de las etiquetas LF. Esta Etiqueta LF se utiliza para describir la tablacol_tag_database
y la tablasource_data_col_lvl
cuando se inicia sesión comolf-data-analyst
desde Amazon Athena.Inicie sesión en la consola de Lake Formation en https://console.aws.amazon.com/lakeformation/
as lf-data-engineer
.En la página Bases de datos, seleccione la base de datos
col_tag_database
.Elija Acciones y Conceder.
En Entidades principales, seleccione Roles y usuarios de IAM.
En Roles y usuarios de IAM, elija
lf-data-analyst
.Seleccione Recursos que coincidan con las etiquetas LF.
Seleccione Agregar etiqueta LF.
En Clave, elija
Confidential
.En Valores, elija
False
.En Permisos de base de datos, seleccione
Describe
.En Permisos de tabla, no seleccione nada.
Elija Conceder.
-
A continuación, repita los pasos para conceder permisos a los analistas de datos para la expresión de etiquetas LF para
Confidential=False
ySensitive=True
. Esta Etiqueta LF se utiliza para describir la tablacol_tag_database
y la tablasource_data_col_lvl
(nivel de columna) cuando se inicia sesión comolf-data-analyst
desde Amazon Athena.Inicie sesión en la consola de Lake Formation en https://console.aws.amazon.com/lakeformation/
as lf-data-engineer
.En la página Bases de datos, seleccione la base de datos
col_tag_database
.Elija Acciones y Conceder.
En Entidades principales, seleccione Roles y usuarios de IAM.
En Roles y usuarios de IAM, elija
lf-data-analyst
.Seleccione Recursos que coincidan con las etiquetas LF.
Elija Añadir etiquetas LF.
En Clave, elija
Confidential
.En Valores, elija
False
.Elija Añadir etiquetas LF.
En Clave, elija
Sensitive
.En Valores, elija
True
.En Permisos de base de datos, seleccione
Describe
.En Permisos de tabla, seleccione
Select
yDescribe
.Elija Conceder.
Paso 5: Ejecutar una consulta en Amazon Athena para verificar los permisos
En este paso, utilice Amazon Athena para ejecutar consultas SELECT
en las dos tablas (source_data and source_data_col_lvl)
. Utilice la ruta de Amazon S3 como ubicación de los resultados de la consulta (s3://lf-tagbased-demo-
.Account-ID
/athena-results/)
-
Inicie sesión en la consola de Athena en https://console.aws.amazon.com/athena/
as. lf-data-analyst
En el editor de consultas de Athena, selecciona
tag_database
en el panel izquierdo.Seleccione el icono de opciones de menú adicionales (tres puntos verticales) situado junto a
source_data
y elija Vista previa de la tabla.Elija Ejecutar consulta.
La consulta tardará unos minutos en ejecutarse. La consulta muestra todas las columnas de la salida porque la etiqueta LF está asociada a nivel de base de datos y la tabla
source_data
heredó automáticamente laLF-tag
de la base de datostag_database
.Ejecute otra consulta con
col_tag_database
ysource_data_col_lvl
.La segunda consulta devuelve las dos columnas que estaban etiquetadas como
Non-Confidential
ySensitive
.También puede comprobar el comportamiento de la política de acceso basada en etiquetas de Lake Formation en las columnas para las que no tiene concesiones de política. Cuando se selecciona una columna sin etiquetar de la tabla
source_data_col_lvl
, Athena devuelve un error. Por ejemplo, puede ejecutar la siguiente consulta para elegir columnasgeolocationid
sin etiquetar:SELECT geolocationid FROM "col_tag_database"."source_data_col_lvl" limit 10;
Paso 6: Limpiar AWS los recursos
Para evitar que se le cobren cargos no deseados Cuenta de AWS, puede eliminar los AWS recursos que utilizó para este tutorial.
-
Inicie sesión en la consola de Lake Formation como
lf-data-engineer
y borre las bases de datostag_database
ycol_tag_database
. -
Luego, inicie sesión como
lf-data-steward
y borre todos los Permisos de etiqueta L, los Permisos de datos y los Permisos de ubicación de datos concedidos anteslf-data-engineer
ylf-data-analyst.
. -
Inicie sesión en la consola de Amazon S3 como propietario de la cuenta con las credenciales de IAM que utilizó para implementar la AWS CloudFormation pila.
-
Elimine los buckets siguientes:
lf-tagbased-demo-accesslogs-
acct-id
lf-tagbased-demo-
acct-id
-
Inicie sesión en AWS CloudFormation la consola en https://console.aws.amazon.com/cloudformation
y elimine la pila que creó. Espera a que el estado de la pila cambie a. DELETE_COMPLETE