Logotipo de Zephyrnet

Implemente el control de acceso basado en etiquetas para su lago de datos y el uso compartido de datos de Amazon Redshift con AWS Lake Formation | Servicios web de Amazon

Fecha:

Las organizaciones basadas en datos tratan los datos como un activo y los utilizan en diferentes líneas de negocio (LOB) para generar conocimientos oportunos y mejores decisiones comerciales. Muchas organizaciones tienen herramientas e infraestructura distribuidas en varias unidades de negocio. Esto lleva a tener datos en muchas instancias de almacenes de datos y lagos de datos utilizando un arquitectura de datos moderna en cuentas de AWS separadas.

Desplazamiento al rojo de Amazon compartir datos le permite compartir de forma segura datos en vivo y transaccionales consistentes en uno Desplazamiento al rojo de Amazon almacén de datos con otro almacén de datos de Redshift dentro de la misma cuenta de AWS, entre cuentas y entre regiones, sin necesidad de copiar o mover datos de un clúster a otro. Los clientes quieren poder administrar sus permisos en un lugar central en todos sus activos. Anteriormente, la administración de los recursos compartidos de datos de Redshift se limitaba solo a Amazon Redshift, lo que dificultaba la administración de los permisos de su lago de datos y los permisos de Amazon Redshift en un solo lugar. Por ejemplo, tenía que navegar a una cuenta individual para ver y administrar la información de acceso para Amazon Redshift y el lago de datos en Servicio de almacenamiento simple de Amazon (Amazon S3). A medida que una organización crece, los administradores quieren un mecanismo para administrar de manera central y efectiva el intercambio de datos entre lagos de datos y almacenes de datos para el gobierno y la auditoría, y para hacer cumplir un control de acceso detallado.

Recientemente anunciamos la integración del uso compartido de datos de Amazon Redshift con Formación del lago AWS. Con esta característica, los clientes de Amazon Redshift ahora pueden administrar el uso compartido, aplicar políticas de acceso de manera centralizada y escalar el permiso de manera efectiva mediante etiquetas LF.

Lake Formation ha sido una opción popular para los lagos de datos de gobierno central respaldados por Amazon S3. Ahora, con el soporte de Lake Formation para el uso compartido de datos de Amazon Redshift, abre nuevos patrones de diseño y amplía la postura de gobierno y seguridad en los almacenes de datos. Con esta integración, puede usar Lake Formation para definir un control de acceso detallado en tablas y vistas que se comparten con el uso compartido de datos de Amazon Redshift para federados. Gestión de identidades y accesos de AWS (IAM) usuarios y roles de IAM. Lake Formation también proporciona control de acceso basado en etiquetas (TBAC), que se puede usar para simplificar y escalar la gobernanza de los objetos del catálogo de datos, como bases de datos y tablas.

En esta publicación, analizamos esta nueva función y cómo implementar TBAC para su lago de datos y el uso compartido de datos de Amazon Redshift en Lake Formation.

Resumen de la solución

Control de acceso basado en etiquetas de Lake Formation (LF-TBAC) le permite agrupar similares Pegamento AWS Reúna los recursos de Data Catalog y defina la política de concesión o revocación de permisos mediante una expresión LF-Tag. Las etiquetas LF son jerárquicas porque cuando una base de datos se etiqueta con una etiqueta LF, todas las tablas de esa base de datos heredan la etiqueta, y cuando se aplica una etiqueta LF a una tabla, todas las columnas dentro de esa tabla heredan la etiqueta. Las etiquetas heredadas se pueden anular si es necesario. A continuación, puede crear políticas de acceso dentro de Lake Formation utilizando expresiones LF-Tag para otorgar a los principales acceso a los recursos etiquetados mediante una expresión LF-Tag. Ver Gestión de etiquetas LF para control de acceso a metadatos para más información.

Para demostrar LF-TBAC con capacidad de gobierno central de acceso a datos, utilizamos el escenario en el que dos unidades de negocios separadas poseen conjuntos de datos particulares y necesitan compartir datos entre equipos.

Contamos con un equipo de atención al cliente que administra y posee la base de datos de información del cliente, incluidos los datos demográficos del cliente. Y tenga un equipo de marketing que posea un conjunto de datos de clientes potenciales, que incluye información sobre clientes potenciales y contactos potenciales.

Para poder ejecutar campañas efectivas, el equipo de marketing necesita acceder a los datos del cliente. En esta publicación, demostramos el proceso de compartir estos datos que se almacenan en el almacén de datos y dar acceso al equipo de marketing. Además, hay columnas de información de identificación personal (PII) dentro del conjunto de datos del cliente a las que solo debe acceder un subconjunto de usuarios avanzados según sea necesario. De esta forma, los analistas de datos dentro de marketing solo pueden ver las columnas que no son PII para poder ejecutar un análisis de segmento de clientes anónimo, pero un grupo de usuarios avanzados puede acceder a las columnas PII (por ejemplo, la dirección de correo electrónico del cliente) para poder ejecutar campañas o encuestas para grupos específicos de clientes.

El siguiente diagrama muestra la estructura de los conjuntos de datos con los que trabajamos en esta publicación y una estrategia de etiquetado para proporcionar un acceso detallado a nivel de columna.

Más allá de nuestra estrategia de etiquetado en los recursos de datos, la siguiente tabla brinda una descripción general de cómo debemos otorgar permisos a nuestras dos personas a través de etiquetas.

Rol de IAM Persona Tipo de Recurso Permiso Expresión de etiqueta LF
analista de marketing Un analista de datos en el equipo de marketing. DB describir (departamento:marketing O departamento:cliente) Y clasificación:privado
. Mesa selecciona (departamento:marketing O departamento:cliente) Y clasificación:privado
. . . . .
usuario avanzado de marketing Un usuario privilegiado en el equipo de marketing DB describir (departamento:marketing O departamento:cliente) Y clasificación: privado
. Tabla (Columna) selecciona (departamento:marketing O departamento:cliente) Y (clasificación:privado O clasificación:pii-sensible)

El siguiente diagrama ofrece una descripción general de alto nivel de la configuración que implementamos en esta publicación.

La siguiente es una descripción general de alto nivel sobre cómo usar Lake Formation para controlar los permisos de uso compartido de datos:

Configuración del productor:

  1. En la cuenta de AWS de los productores, el administrador de Amazon Redshift que posee la base de datos del cliente crea un recurso compartido de datos de Redshift en el clúster de productores y otorga uso a AWS Glue Data Catalog en la misma cuenta.
  2. El administrador del clúster de productores autoriza la cuenta de Lake Formation para acceder al recurso compartido de datos.
  3. En Lake Formation, el administrador de Lake Formation descubre y registra los recursos compartidos de datos. Deben descubrir los ARN de AWS Glue a los que tienen acceso y asociar los recursos compartidos de datos con un ARN de AWS Glue Data Catalog. Si estás usando el Interfaz de línea de comandos de AWS (AWS CLI), puede descubrir y aceptar datos compartidos con las operaciones de Redshift CLI describe-data-shares y Associate-data-share-consumer. Para registrar un recurso compartido de datos, utilice la operación de registro de recursos de la CLI de Lake Formation.
  4. El administrador de Lake Formation crea una base de datos federada en AWS Glue Data Catalog; asigna etiquetas a las bases de datos, tablas y columnas; y configura los permisos de Lake Formation para controlar el acceso de los usuarios a los objetos dentro del recurso compartido de datos. Para obtener más información acerca de las bases de datos federadas en AWS Glue, consulte Administrar permisos para datos en un recurso compartido de datos de Amazon Redshift.

Configuración del consumidor:

  1. Del lado del consumidor (marketing), el administrador de Amazon Redshift descubre los ARN de la base de datos de AWS Glue a los que tiene acceso, crea una base de datos externa en el clúster de consumidores de Redshift utilizando un ARN de la base de datos de AWS Glue y otorga el uso a usuarios de bases de datos autenticados con credenciales de IAM para comenzar a consultar la base de datos Redshift.
  2. Los usuarios de la base de datos pueden usar las vistas SVV_EXTERNAL_TABLES y SVV_EXTERNAL_COLUMNS para encontrar todas las tablas o columnas dentro de la base de datos de AWS Glue a las que tienen acceso; luego pueden consultar las tablas de la base de datos de AWS Glue.

Cuando el administrador del clúster de productores decide dejar de compartir los datos con el clúster de consumidores, el administrador del clúster de productores puede revocar el uso, desautorizar o eliminar el recurso compartido de datos de Amazon Redshift. Los permisos y objetos asociados en Lake Formation no se eliminan automáticamente.

Requisitos previos:

Para seguir los pasos de esta publicación, debe cumplir con los siguientes requisitos previos:

Implemente el entorno, incluidos los clústeres Redshift de productores y consumidores

Para seguir los pasos descritos en esta publicación, implemente lo siguiente Formación en la nube de AWS pila que incluye los recursos necesarios para demostrar el tema de esta publicación:

  1. Elige Pila de lanzamiento para implementar una plantilla de CloudFormation.
  2. Proporcione un rol de IAM que ya haya configurado como administrador de Lake Formation.
  3. Complete los pasos para implementar la plantilla y deje todas las configuraciones como predeterminadas.
  4. Seleccione Reconozco que AWS CloudFormation podría crear recursos de IAM, A continuación, elija Enviar.

Esta pila de CloudFormation crea los siguientes recursos:

  • Clúster Redshift productor – Es propiedad del equipo de atención al cliente y contiene datos demográficos y de clientes.
  • Clúster de corrimiento al rojo del consumidor – Es propiedad del equipo de marketing y se utiliza para analizar datos en almacenes de datos y lagos de datos.
  • Lago de datos S3 – Contiene la actividad web y conjuntos de datos de clientes potenciales.
  • Otros recursos necesarios para demostrar el proceso de compartir datos – Por ejemplo, roles de IAM, configuración de Lake Formation y más. Para obtener una lista completa de los recursos creados por la pila, examine la plantilla de CloudFormation.

Después de implementar esta plantilla de CloudFormation, los recursos creados incurrirán en costos para su cuenta de AWS. Al final del proceso, asegúrese de limpiar los recursos para evitar cargos innecesarios.

Después de que la pila de CloudFormation se implemente correctamente (el estado se muestra como CREAR_COMPLETO), tome nota de los siguientes elementos en la Salidas lengüeta:

  • ARN del rol de analista de marketing
  • ARN de rol de usuario avanzado de marketing
  • URL para la contraseña de administrador de Amazon Redshift almacenada en Director de secretos de AWS

Cree un recurso compartido de datos Redshift y agregue tablas relevantes

En Consola de administración de AWS, cambiar al rol que nombró como administrador de Lake Formation al implementar la plantilla de CloudFormation. Luego ve a Editor de consultas v2. Si es la primera vez que usa Query Editor V2 en su cuenta, siga estos pasos para configura tu cuenta de AWS.

El primer paso en el Editor de consultas es iniciar sesión en el clúster de Redshift del cliente con las credenciales de administrador de la base de datos para convertir su función de administrador de IAM en un administrador de base de datos en la base de datos.

  1. Elija el menú de opciones (tres puntos) al lado del lfunified-customer-dwh cluster y elige Crear conexión.

  2. Seleccione Nombre de usuario y contraseña de la base de datos.
  3. Abandonar Base de datos as dev.
  4. nombre de usuario, introduzca admin.
  5. Contraseña, completa los siguientes pasos:
    1. Vaya a la URL de la consola, que es el valor de la RedShiftClusterPassword Salida de CloudFormation en el paso anterior. La URL es la consola de Secrets Manager para esta contraseña.
    2. Desplázate hacia abajo hasta Valor secreto sección y elegir Recuperar valor secreto.
    3. Tome nota de la contraseña para usarla más tarde cuando se conecte al clúster de marketing Redshift.
    4. Introduzca este valor para Contraseña.
  6. Elige Crear conexión.

Crear un recurso compartido de datos usando un comando SQL

Complete los siguientes pasos para crear un recurso compartido de datos en el clúster de productores de datos (atención al cliente) y compártalo con Lake Formation:

  1. En la consola de Amazon Redshift, en el panel de navegación, elija Editora, entonces Editor de consultas V2.
  2. Elija (haga clic con el botón derecho) el nombre del clúster y elija Editar conexión or Crear conexión.
  3. Autenticación, seleccione Credenciales temporales con su identidad de IAM.

Consulte Conexión a una base de datos de Amazon Redshift para obtener más información sobre los diversos métodos de autenticación.

  1. Base de datos, ingrese un nombre de base de datos (para esta publicación, dev).
  2. Elige Crear conexión para conectarse a la base de datos.
  3. Ejecute los siguientes comandos SQL para crear el recurso compartido de datos y agregar los objetos de datos que se compartirán:
    create datashare customer_ds;
    ALTER DATASHARE customer_ds ADD SCHEMA PUBLIC;
    ALTER DATASHARE customer_ds ADD TABLE customer;

  4. Ejecute el siguiente comando SQL para compartir los datos compartidos del cliente con la cuenta actual a través de AWS Glue Data Catalog:
    GRANT USAGE ON DATASHARE customer_ds TO ACCOUNT '<aws-account-id>' via DATA CATALOG;

  5. Verifique que se haya creado el recurso compartido de datos y que se hayan compartido los objetos ejecutando el siguiente comando SQL:
    DESC DATASHARE customer_ds;

Tome nota del espacio de nombre del clúster del productor de recursos compartidos de datos y el ID de la cuenta, que se usarán en el siguiente paso. Puede completar las siguientes acciones en la consola, pero para simplificar, usamos los comandos de la CLI de AWS.

  1. Vaya a CloudShell o su CLI de AWS y ejecute el siguiente comando de la CLI de AWS para autorizar el recurso compartido de datos al catálogo de datos para que Lake Formation pueda administrarlos:
    aws redshift authorize-data-share --data-share-arn 'arn:aws:redshift:<aws-region>:<aws-account-id>:datashare:<producer-cluster-namespace>/customer_ds' --consumer-identifier DataCatalog/<aws-account-id>

El siguiente es un ejemplo de salida:

 { "DataShareArn": "arn:aws:redshift:us-east-2:<aws-account-id>:datashare:cd8d91b5-0c17-4567-a52a-59f1bdda71cd/customer_ds", "ProducerArn": "arn:aws:redshift:us-east-2:<aws-account-id>:namespace:cd8d91b5-0c17-4567-a52a-59f1bdda71cd", "AllowPubliclyAccessibleConsumers": false, "DataShareAssociations": [{ "ConsumerIdentifier": "DataCatalog/<aws-account-id>XX", "Status": "AUTHORIZED", "CreatedDate": "2022-11-09T21:10:30.507000+00:00", "StatusChangeDate": "2022-11-09T21:10:50.932000+00:00" }]
}

Tome nota del ARN de su recurso compartido de datos que usó en este comando para usarlo en los próximos pasos.

Acepte el recurso compartido de datos en el catálogo de Lake Formation

Para aceptar el intercambio de datos, complete los siguientes pasos:

  1. Ejecute el siguiente comando de la CLI de AWS para aceptar y asociar el recurso compartido de datos de Amazon Redshift al catálogo de datos de AWS Glue:
    aws redshift associate-data-share-consumer --data-share-arn 'arn:aws:redshift:<aws-region>:<aws-account-id>:datashare:<producer-cluster-namespace>/customer_ds' --consumer-arn arn:aws:glue:<aws-region>:<aws-account-id>:catalog

El siguiente es un ejemplo de salida:

{ "DataShareArn": "arn:aws:redshift:us-east-2:<aws-account-id>:datashare:cfd5fcbd-3492-42b5-9507-dad5d87f7427/customer_ds", "ProducerArn": "arn:aws:redshift:us-east-2:<aws-account-id>:namespace:cfd5fcbd-3492-42b5-9507-dad5d87f7427", "AllowPubliclyAccessibleConsumers": false, "DataShareAssociations": [ { "ConsumerIdentifier": "arn:aws:glue:us-east-2:<aws-account-id>:catalog", "Status": "ACTIVE", "ConsumerRegion": "us-east-2", "CreatedDate": "2023-05-18T12:25:11.178000+00:00", "StatusChangeDate": "2023-05-18T12:25:11.178000+00:00" } ]
}

  1. Registre el intercambio de datos en Lake Formation:
    aws lakeformation register-resource --resource-arn arn:aws:redshift:<aws-region>:<producer-aws-account-id>:datashare:<producer-cluster-namespace>/customer_ds

  2. Cree la base de datos de AWS Glue que apunte al recurso compartido de datos Redshift aceptado:
    aws glue create-database --region <aws-region> --cli-input-json '{ "CatalogId": "<aws-account-id>", "DatabaseInput": { "Name": "customer_db_shared", "FederatedDatabase": { "Identifier": "arn:aws:redshift:<aws-region>:<producer-aws-account-id>:datashare:<producer-cluster-namespace>/customer_ds", "ConnectionName": "aws:redshift" } }
    }'

  3. Para verificar, vaya a la consola de Lake Formation y verifique que la base de datos customer_db_shared es creado.

Ahora, el administrador del lago de datos puede ver y otorgar acceso tanto a la base de datos como a las tablas a las personas del equipo de consumidores de datos (marketing) que usan Lake Formation TBAC.

Asigne etiquetas de formación de lagos a los recursos

Antes de otorgar acceso apropiado a los principales IAM del analista de datos y usuario avanzado dentro del equipo de marketing, debemos asignar etiquetas LF a las tablas y columnas del customer_db_shared base de datos. Luego otorgamos a estos principales permiso para las etiquetas LF apropiadas.

Para asignar etiquetas LF, siga estos pasos:

  1. Asigne la etiqueta LF de departamento y clasificación a customer_db_shared (Redshift datashare) basado en la tabla de estrategia de etiquetado en la descripción general de la solución. Puede ejecutar las siguientes acciones en la consola, pero para esta publicación, usamos el siguiente comando de AWS CLI:
    aws lakeformation add-lf-tags-to-resource --cli-input-json '{ "CatalogId": "<aws-account-id>", "Resource": { "Database": { "CatalogId": "<aws-account-id>", "Name": "customer_db_shared" } }, "LFTags": [ { "CatalogId": "<aws-account-id>", "TagKey": "department", "TagValues": [ "customer"] }, { "CatalogId": "<aws-account-id>", "TagKey": "classification", "TagValues": [ "private"] } ] }'

Si el comando es exitoso, debería obtener una respuesta como la siguiente:

{ "Failures": []
}

  1. Asigne el departamento apropiado y la etiqueta LF de clasificación a marketing_db (en el lago de datos S3):
    aws lakeformation add-lf-tags-to-resource --cli-input-json '{ "CatalogId": "<aws-account-id>", "Resource": { "Database": { "CatalogId": "<aws-account-id>", "Name": "lfunified_marketing_dl_db" } }, "LFTags": [ { "CatalogId": "<aws-account-id>", "TagKey": "department", "TagValues": [ "marketing"] }, { "CatalogId": "<aws-account-id>", "TagKey": "classification", "TagValues": [ "private"] } ] }'

Tenga en cuenta que aunque solo asigne la etiqueta de departamento y clasificación en el nivel de la base de datos, las tablas y columnas dentro de esa base de datos la heredan.

  1. Asignar la clasificación pii-sensitive Etiqueta LF a columnas PII del customer tabla para anular el valor heredado del nivel de la base de datos:
    aws lakeformation add-lf-tags-to-resource --cli-input-json '{ "CatalogId": "<aws-account-id>", "Resource": { "TableWithColumns": { "CatalogId": "<aws-account-id>", "DatabaseName": "customer_db_shared", "Name": "public.customer", "ColumnNames":["c_first_name","c_last_name","c_email_address"] } }, "LFTags": [ { "CatalogId": "<aws-account-id>", "TagKey": "classification", "TagValues": [ "pii-sensitive"] } ] }'

Otorgar permiso basado en la asociación de etiquetas LF

Ejecute los siguientes dos comandos de la CLI de AWS para permitir que el analista de datos de marketing acceda a la tabla de clientes, excluyendo el pii-sensitive (PII) columnas. Reemplace el valor de DataLakePrincipalIdentifier con el MarketingAnalystRoleARN que anotó en los resultados de la pila de CloudFormation:

aws lakeformation grant-permissions --cli-input-json '{ "CatalogId": "<aws-account-id>", "Principal": {"DataLakePrincipalIdentifier" : "<MarketingAnalystRoleARN-from-CloudFormation-Outputs>"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "DATABASE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": []
}'
aws lakeformation grant-permissions --cli-input-json '{ "CatalogId": "<aws-account-id>", "Principal": {"DataLakePrincipalIdentifier" : "<MarketingAnalystRoleARN-from-CloudFormation-Outputs>"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "TABLE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": []
}'

Ahora hemos otorgado a los analistas de marketing acceso a la base de datos de clientes y a las tablas que no son pii-sensitive.

Para permitir que los usuarios avanzados de marketing accedan a las columnas de la tabla con etiquetas LF restringidas (columnas PII), ejecute el siguiente comando de la CLI de AWS:

aws lakeformation grant-permissions --cli-input-json '{ "CatalogId": "<aws-account-id>", "Principal": {"DataLakePrincipalIdentifier" : "<MarketingPowerUserRoleARN-from-CloudFormation-Outputs>"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "DATABASE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": []
}'
aws lakeformation grant-permissions --cli-input-json '{ "CatalogId": "<aws-account-id>", "Principal": {"DataLakePrincipalIdentifier" : "<MarketingPowerUserRoleARN-from-CloudFormation-Outputs>"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "TABLE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private", "pii-sensitive"]}] } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": []
}'

Podemos combinar las concesiones en una sola llamada de permisos de concesión por lotes:

aws lakeformation batch-grant-permissions --region us-east-1 --cli-input-json '{ "CatalogId": "<aws-account-id>", "Entries": [ { "Id": "1", "Principal": {"DataLakePrincipalIdentifier" : "arn:aws:iam:: <aws-account-id>:role/Blog-MarketingAnalystRole-1CYV6JSNN14E3"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "DATABASE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": [] }, { "Id": "2", "Principal": {"DataLakePrincipalIdentifier" : "arn:aws:iam:: <aws-account-id>:role/Blog-MarketingAnalystRole-1CYV6JSNN14E3"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "TABLE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": [] }, { "Id": "3", "Principal": {"DataLakePrincipalIdentifier" : "arn:aws:iam:: <aws-account-id>:role/Blog-MarketingPoweruserRole-RKKM0TWQBP0W"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "DATABASE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private", "pii-sensitive"]}] } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": [] }, { "Id": "4", "Principal": {"DataLakePrincipalIdentifier" : "arn:aws:iam:: <aws-account-id>:role/Blog-MarketingPoweruserRole-RKKM0TWQBP0W"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "TABLE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private", "pii-sensitive"]}] } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": [] } ] }'

Validar la solución

En esta sección, repasamos los pasos para probar el escenario.

Consumir el recurso compartido de datos en el almacén de datos del consumidor (marketing)

Para permitir que los consumidores (equipo de marketing) accedan a los datos de los clientes compartidos con ellos a través del recurso compartido de datos, primero tenemos que configurar Query Editor v2. Esta configuración es para utilizar las credenciales de IAM como principal para los permisos de Lake Formation. Complete los siguientes pasos:

  1. Inicie sesión en la consola con la función de administrador que designó al ejecutar el paso de la plantilla de CloudFormation.
  2. En la consola de Amazon Redshift, vaya a Query Editor v2.
  3. Elija el ícono de ajustes en el panel de navegación, luego elija Configuración de la cuenta.
  4. under Ajustes de conexión, seleccione Autenticarse con credenciales de IAM.
  5. Elige Guardar.

Ahora conectémonos al clúster de Redshift de marketing y hagamos que la base de datos de clientes esté disponible para el equipo de marketing.

  1. Elija el menú de opciones (tres puntos) al lado del Serverless:lfunified-marketing-wg agrupar y elegir Crear conexión.
  2. Seleccione Nombre de usuario y contraseña de la base de datos.
  3. Abandonar Base de datos as dev.
  4. nombre de usuario, introduzca admin.
  5. Contraseña, ingrese la misma contraseña que obtuvo de Secrets Manger en un paso anterior.
  6. Elige Crear conexión.
  7. Una vez conectado con éxito, elija el signo más y elija Editora para abrir una nueva pestaña del Editor de consultas.
  8. Asegúrese de especificar el Serverless: lfunified-marketing-wg workgroup y dev base de datos.
  9. Para crear la base de datos Redshift desde la base de datos del catálogo compartido, ejecute el siguiente comando SQL en la nueva pestaña:
    CREATE DATABASE ext_customerdb_shared FROM ARN 'arn:aws:glue:<aws-region>:<aws-account-id>:database/customer_db_shared' WITH DATA CATALOG SCHEMA "customer_db_shared"

  10. Ejecute los siguientes comandos SQL para crear y otorgar uso en la base de datos Redshift a los roles de IAM para los usuarios avanzados y el analista de datos. Puede obtener los nombres de roles de IAM de los resultados de la pila de CloudFormation:
    CREATE USER IAMR:"lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX" password disable;
    GRANT USAGE ON DATABASE ext_customerdb_shared to IAMR:"lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX"; CREATE USER IAMR:"lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY" password disable;
    GRANT USAGE ON DATABASE ext_customerdb_shared to IAMR:"lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY";

Cree el esquema del lago de datos en AWS Glue y permita que la función de poder de marketing consulte los datos de actividades web y de clientes potenciales.

Ejecute los siguientes comandos SQL para que los datos de clientes potenciales en el lago de datos de S3 estén disponibles para el equipo de marketing:

create external schema datalake from data catalog
database 'lfunified_marketing_dl_db' iam_role 'SESSION'
catalog_id '<aws-account-id>';
GRANT USAGE ON SCHEMA datalake TO IAMR:"lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX";
GRANT USAGE ON SCHEMA datalake TO IAMR:"lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY";

Consultar el conjunto de datos compartido como usuario analista de marketing

Para validar que los analistas del equipo de marketing (rol IAM marketing-analyst-role) tienen acceso a la base de datos compartida, realice los siguientes pasos:

  1. Inicie sesión en la consola (para mayor comodidad, puede usar un navegador diferente) y cambia tu rol a lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX.
  2. En la consola de Amazon Redshift, vaya a Query Editor v2.
  3. Para conectarse al clúster de consumidores, elija el Serverless: lfunified-marketing-wg almacén de datos del consumidor en el panel de navegación.
  4. Cuando se le solicite, para Autenticación, seleccione usuario federado.
  5. Base de datos, ingrese el nombre de la base de datos (para esta publicación, dev).
  6. Elige Guardar.
  7. Una vez que esté conectado a la base de datos, puede validar el usuario conectado actual con el siguiente comando SQL:
    select current_user;

  8. Para encontrar las bases de datos federadas creadas en la cuenta del consumidor, ejecute el siguiente comando SQL:
    SHOW DATABASES FROM DATA CATALOG ACCOUNT '<aws-account-id>';

  9. Para validar los permisos para el rol de analista de marketing, ejecute el siguiente comando SQL:
    select * from ext_customerdb_shared.public.customer limit 10;

Como puede ver en la siguiente captura de pantalla, el analista de marketing puede acceder con éxito a los datos del cliente, pero solo a los atributos que no son PII, que era nuestra intención.

  1. Ahora validemos que el analista de marketing no tenga acceso a las columnas PII de la misma tabla:
    select c_customer_email from ext_customerdb_shared.public.customer limit 10;

Consulta los conjuntos de datos compartidos como un usuario avanzado de marketing

Para validar que los usuarios avanzados de marketing (rol de IAM lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY) tener acceso a pii-sensetive columnas en la base de datos compartida, realice los siguientes pasos:

  1. Inicie sesión en la consola (para mayor comodidad, puede usar un navegador diferente) y cambie su rol a lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY.
  2. En la consola de Amazon Redshift, vaya a Query Editor v2.
  3. Para conectarse al clúster de consumidores, elija el Serverless: lfunified-marketing-wg almacén de datos del consumidor en el panel de navegación.
  4. Cuando se le solicite, para Autenticación, seleccione usuario federado.
  5. Base de datos, ingrese el nombre de la base de datos (para esta publicación, dev).
  6. Elige Guardar.
  7. Una vez que esté conectado a la base de datos, puede validar el usuario conectado actual con el siguiente comando SQL:
    select current_user;

  8. Ahora vamos a validar que el rol de poder de marketing tiene acceso a las columnas PII de la tabla de clientes:
    select c_customer_id, c_first_name, c_last_name,c_customer_email from customershareddb.public.customer limit 10;

  9. Valide que los usuarios avanzados dentro del equipo de marketing ahora pueden ejecutar una consulta para combinar datos en diferentes conjuntos de datos a los que tienen acceso para ejecutar campañas efectivas:
    SELECT emailaddress as emailAddress, customer.c_first_name as firstName, customer.c_last_name as lastName, leadsource, contactnotes, usedpromo
    FROM "dev"."datalake"."lead" as lead
    JOIN ext_customerdb_shared.public.customer as customer
    ON lead.emailaddress = customer.c_email_address
    WHERE lead.donotreachout = 'false'

Limpiar

Después de completar los pasos de esta publicación, para limpiar los recursos, elimine la pila de CloudFormation:

  1. En la consola de AWS CloudFormation, seleccione la pila que implementó al comienzo de esta publicación.
  2. Elige Borrar y siga las indicaciones para eliminar la pila.

Conclusión

En esta publicación, mostramos cómo puede usar las etiquetas de Lake Formation y administrar los permisos para su lago de datos y el uso compartido de datos de Amazon Redshift usando Lake Formation. El uso de Lake Formation LF-TBAC para la gobernanza de datos lo ayuda a administrar su lago de datos y los permisos de uso compartido de datos de Amazon Redshift a escala. Además, permite compartir datos entre unidades de negocios con un control de acceso detallado. Administrar el acceso a su lago de datos y los recursos compartidos de datos de Redshift en un solo lugar permite una mejor gobernanza, lo que ayuda con la seguridad y el cumplimiento de los datos.

Si tiene preguntas o sugerencias, envíelas en la sección de comentarios.

Para obtener más información sobre el uso compartido de datos de Amazon Redshift administrado por Lake Formation y el control de acceso basado en etiquetas, consulte Administre de forma centralizada el acceso y los permisos para compartir datos de Amazon Redshift con AWS Lake Formation y Administre fácilmente su lago de datos a escala con el control de acceso basado en etiquetas de formación de lago de AWS.


Acerca de los autores

Praveen Kumar es un arquitecto de soluciones de análisis en AWS con experiencia en el diseño, la creación y la implementación de plataformas modernas de datos y análisis mediante servicios nativos de la nube. Sus áreas de interés son la tecnología sin servidor, los almacenes de datos en la nube modernos, la transmisión y las aplicaciones de aprendizaje automático.

Srividya Parthasarathy es Arquitecto Senior de Big Data en el equipo de AWS Lake Formation. Le gusta crear soluciones de redes de datos y compartirlas con la comunidad.

pablo villena es un arquitecto de soluciones de análisis en AWS con experiencia en la creación de soluciones modernas de datos y análisis para impulsar el valor comercial. Trabaja con los clientes para ayudarlos a aprovechar el poder de la nube. Sus áreas de interés son la infraestructura como código, las tecnologías sin servidor y la codificación en Python.

Mostafa Safipur es arquitecto de soluciones en AWS con sede en Sídney. Trabaja con los clientes para obtener resultados comerciales mediante la tecnología y AWS. Durante la última década, ha ayudado a muchas organizaciones grandes en la región ANZ a construir sus cargas de trabajo de datos, digitales y empresariales en AWS.

punto_img

Información más reciente

punto_img