Configurar el acceso multicuenta a un catálogo de datos de AWS Glue compartido con Amazon Athena - Recomendaciones de AWS

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.

Configurar el acceso multicuenta a un catálogo de datos de AWS Glue compartido con Amazon Athena

Creado por Denis Avdonin () AWS

Resumen

Este patrón proporciona step-by-step instrucciones, incluidos ejemplos de políticas de AWS Identity and Access Management (IAM), para configurar el uso compartido entre cuentas de un conjunto de datos almacenado en un depósito de Amazon Simple Storage Service (Amazon S3) mediante el catálogo de datos de AWS Glue. Puede almacenar el conjunto de datos en un bucket de S3. Un rastreador de AWS Glue recopila los metadatos y los coloca en el catálogo de datos de AWS Glue. El depósito S3 y el catálogo de datos de AWS Glue residen en una AWS cuenta denominada cuenta de datos. Puede proporcionar acceso a IAM los principales de otra AWS cuenta, denominada cuenta de consumidor. Los usuarios pueden consultar los datos de la cuenta del consumidor mediante el motor de consultas sin servidor Amazon Athena.

Requisitos previos y limitaciones

Requisitos previos 

Versiones de producto

Este patrón solo funciona con la versión 2 del motor Athena y la versión 3 del motor Athena. Le recomendamos que actualice a la versión 3 del motor Athena. Si no puede actualizar de la versión 1 del motor Athena a la versión 3 del motor Athena, siga el enfoque del acceso multicuenta al catálogo de datos de AWS Glue con Amazon Athena en el blog sobre big data. AWS

Arquitectura

Pila de tecnología de destino

  • Amazon Athena

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Glue

  • AWSIdentity and Access Management (IAM)

  • AWSServicio de administración de claves (AWSKMS)

El siguiente diagrama muestra una arquitectura que usa IAM permisos para compartir datos de un bucket de S3 en una AWS cuenta (cuenta de datos) con otra cuenta (AWScuenta de consumidor) a través del catálogo de datos de AWS Glue.

Compartir un conjunto de datos en un bucket de S3 entre una cuenta de datos y una cuenta de consumidor mediante el catálogo de datos de AWS Glue.

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. La política de bucket de S3 de la cuenta de datos concede permisos a un IAM rol en la cuenta de consumidor y al rol del servicio AWS Glue crawler en la cuenta de datos.

  2. La política AWS KMS clave de la cuenta de datos concede permisos al IAM rol en la cuenta de consumidor y al rol del servicio AWS Glue crawler en la cuenta de datos.

  3. El rastreador AWS Glue de la cuenta de datos descubre el esquema de los datos que están almacenados en el depósito de S3.

  4. La política de recursos del catálogo de datos de AWS Glue de la cuenta de datos permite el acceso al IAM rol en la cuenta del consumidor.

  5. Un usuario crea una referencia de catálogo con nombre en la cuenta del consumidor mediante un AWS CLI comando.

  6. Una IAM política otorga a un IAM rol de la cuenta del consumidor acceso a los recursos de la cuenta de datos. La política de confianza del IAM rol permite a los usuarios de la cuenta de consumidor asumir el IAM rol.

  7. Un usuario de la cuenta de consumidor asume el IAM rol y accede a los objetos del catálogo de datos mediante SQL consultas.

  8. El motor sin servidor Athena ejecuta las consultas. SQL

nota

IAMlas prácticas recomendadas recomiendan conceder permisos a un IAM rol y utilizar la federación de identidades.

Herramientas

  • Amazon Athena es un servicio de consultas interactivo que le ayuda a analizar los datos directamente en Amazon S3 mediante el uso estándar. SQL

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

  • AWSGlue es un servicio de extracción, transformación y carga (ETL) totalmente gestionado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.

  • AWSIdentity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.

  • AWSEl Servicio de administración de claves (AWSKMS) le ayuda a crear y controlar claves criptográficas para proteger sus datos.

Epics

TareaDescripciónHabilidades requeridas

Conceder acceso a los datos al bucket de S3.

Cree una política de bucket de S3 basada en la siguiente plantilla y asígnela al bucket en el que se almacenan los datos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }

La política de bucket concede permisos al IAM rol en la cuenta de consumidor y al rol del servicio AWS Glue Crawler en la cuenta de datos.

Administrador de la nube

(Si es necesario) Conceda acceso a la clave de cifrado de datos.

Si el depósito de S3 está cifrado mediante una AWS KMS clave, conceda kms:Decrypt permiso sobre la clave al IAM rol de la cuenta de consumidor y al rol del servicio AWS Glue crawler de la cuenta de datos.

Actualice la política de claves con la siguiente declaración:

{ "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Administrador de la nube

Conceda al rastreador acceso a los datos.

Adjunta la siguiente IAM política a la función de servicio del rastreador:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }
Administrador de la nube

(Si es necesario) Conceda acceso al rastreador a la clave de cifrado de datos.

Si el depósito de S3 está cifrado mediante una AWS KMS clave, conceda kms:Decrypt permiso sobre la clave para que desempeñe la función de servicio del rastreador adjuntándole la siguiente política:

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Administrador de la nube

Conceda al IAM rol de la cuenta de consumidor y al rastreador acceso al catálogo de datos.

  1. Inicie sesión en la consola AWS de administración y abra la consola AWS Glue.

  2. En el panel de navegación, en Data Catalog (Catálogo de datos), elija Settings (Configuración).

  3. En la sección Permissions (Permisos), añada la siguiente declaración y, a continuación, seleccione Save (Guardar).

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action" : "glue:*", "Resource" : [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

Esta política permite todas las acciones de AWS Glue en todas las bases de datos y tablas de la cuenta de datos. Puede personalizar la política para conceder únicamente los permisos necesarios a las entidades principales consumidoras. Por ejemplo, puede proporcionar acceso de solo lectura a tablas o vistas específicas de una base de datos.

Administrador de la nube
TareaDescripciónHabilidades requeridas

Cree una referencia con nombre para el catálogo de datos.

Para crear una referencia de catálogo de datos con nombre, utilice CloudShello instale AWS CLI localmente el siguiente comando:

aws athena create-data-catalog --name <shared catalog name> --type GLUE --parameters catalog-id=<data account id>
Administrador de la nube

Conceda acceso a los datos al IAM rol de la cuenta del consumidor.

Adjunta la siguiente política a la IAM función en la cuenta de consumidor para conceder a la función acceso a los datos entre cuentas:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" }, { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

A continuación, utilice la siguiente plantilla para especificar qué usuarios pueden aceptar el IAM rol en su política de confianza:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<consumer account id>:user/<IAM user>" }, "Action": "sts:AssumeRole" } ] }

Por último, conceda permisos a los usuarios para que asuman el IAM rol adjuntando la misma política al grupo de usuarios al que pertenecen.

Administrador de la nube

(Si es necesario) Conceda al IAM usuario de la cuenta de consumidor acceso a la clave de cifrado de datos.

Si el depósito de S3 está cifrado mediante una AWS KMS clave, conceda kms:Decrypt permiso sobre la clave al IAM rol de la cuenta de consumidor adjuntándole la siguiente política:

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Administrador de la nube

Cambie al IAM rol de la cuenta de consumidor para acceder a los datos.

Como consumidor de datos, cambie al IAM rol de acceso a los datos de la cuenta de datos.

Consumidor de datos

Acceda a los datos.

Realizar consultas mediante Athena. Por ejemplo, abra el editor de consultas de Athena y ejecute la siguiente consulta:

SELECT * FROM <shared catalog name>.<database name>.<table name>

En lugar de utilizar una referencia de catálogo con nombre, también puedes hacer referencia al catálogo por su nombre de recurso de Amazon (ARN).

nota

Si utiliza una referencia de catálogo dinámica en una consulta o vista, escriba la referencia entre comillas dobles en forma de escape (\»). Por ejemplo:

SELECT * FROM \"glue:arn:aws:glue:<region>:<data account id>:catalog\".<database name>.<table name>

Para obtener más información, consulte Acceso entre cuentas a los catálogos de datos de AWS Glue en la Guía del usuario de Amazon Athena.

Consumidor de datos

Recursos relacionados

Información adicional

Uso de Lake Formation como alternativa para compartir entre cuentas

También puedes usar AWS Lake Formation para compartir el acceso a los objetos del catálogo de AWS Glue entre cuentas. Lake Formation proporciona un control de acceso detallado a nivel de columnas y filas, control de acceso basado en etiquetas, tablas gobernadas para ACID transacciones y otras funciones. Aunque Lake Formation está bien integrado con Athena, requiere una configuración adicional en comparación con el enfoque exclusivo IAM de este patrón. Le recomendamos que considere la decisión de utilizar Lake Formation o controles IAM de acceso exclusivos en el contexto más amplio de la arquitectura general de su solución. Las consideraciones incluyen qué otros servicios están involucrados y cómo se integran con ambos enfoques.