Saltar al contenido

¿Cómo comparto las bases de datos y tablas del catálogo de datos de AWS Glue entre cuentas mediante AWS Lake Formation?

10 minutos de lectura
0

Quiero compartir las bases de datos y tablas del catálogo de datos de AWS Glue entre cuentas mediante AWS Lake Formation.

Resolución

Con la característica entre cuentas de Lake Formation, puedes conceder acceso a otras cuentas de AWS para escribir y compartir datos desde o hacia el lago de datos. Los recursos se pueden compartir mediante un control de acceso basado en etiquetas o mediante recursos con nombre. Este artículo se centra en la concesión de acceso entre cuentas a los recursos del catálogo de datos mediante el método de recurso con nombre.

Asegurarse de que se cumplen los requisitos previos

Ten en cuenta los siguientes requisitos previos antes de compartir los recursos del catálogo de datos con otra cuenta o acceder a los recursos compartidos desde otra cuenta:

Revocación de los permisos de Lake Formation

Revoca todos los permisos de Lake Formation del grupo IAMAllowedPrincipals para el recurso del catálogo de datos.

Impedir que las tablas nuevas tengan permisos Super

En el caso de las bases de datos del catálogo de datos que contienen tablas que puede compartir, evita que las tablas nuevas tengan una concesión predeterminada de Super a IAMAllowedPrincipals:

  1. Abre la consola de Lake Formation.
  2. En el panel de navegación, en Catálogo de datos, selecciona Bases de datos.
  3. Selecciona la base de datos que desees actualizar.
  4. Elige Acciones y, a continuación, Editar.
  5. En Permisos predeterminados para las tablas de nueva creación, desactiva Usar solo el control de acceso de IAM para las tablas nuevas de esta base de datos.
  6. Selecciona Guardar.

Para obtener más información, consulta Super.

Adición de los permisos necesarios para el acceso entre cuentas

Si la política de recursos del catálogo de datos de AWS Glue ya está habilitada en la cuenta, puedes eliminar la política o agregar nuevos permisos a la política que son necesarios para las concesiones entre cuentas. El siguiente es un ejemplo de política de recursos para proporcionar acceso entre cuentas a AWS Glue a la cuenta 5555666677778888 desde la cuenta 1111222233334444.

Para obtener más información, consulta Concesión de acceso entre cuentas.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ram.amazonaws.com"
      },
      "Action": "glue:ShareResource",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::5555666677778888:root"
      },
      "Action": "glue:*",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    }
  ]
}

Permitir el uso compartido con las organizaciones

Si los recursos del catálogo de datos se comparten entre organizaciones, habilita el uso compartido con AWS Organizations mediante la consola de AWS RAM. El usuario o rol de AWS Identity and Access Management (IAM) que habilite esta opción debe tener el permiso ram:EnableSharingWithAwsOrganization de IAM.

Para obtener más información, consulta Requisitos previos para el acceso entre cuentas.

Concesión de los permisos de IAM necesarios

Cuenta de origen: Para utilizar el método de recursos con nombre para conceder permisos entre cuentas, debes tener los permisos de IAM necesarios para AWS Glue y AWS Resource Access Manager (AWS RAM). Puedes elegir la política administrada de AWS AWSLakeFormationCrossAccountManager que concede estos permisos o crear una nueva política basada en esta política.

Cuenta de destino: Los administradores de lagos de datos de las cuentas de destino deben tener la siguiente política adicional. Esta política permite al administrador aceptar las invitaciones para compartir recursos de AWS RAM y habilitar el uso compartido de recursos con las organizaciones:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:AcceptResourceShareInvitation",
        "ram:RejectResourceShareInvitation",
        "ec2:DescribeAvailabilityZones",
        "ram:EnableSharingWithAwsOrganization"
      ],
      "Resource": "*"
    }
  ]
}

Nota: El usuario o rol de IAM que reciba la invitación para compartir recursos en AWS RAM debe tener los permisos de IAM necesarios para glue:PutResourcePolicy.

Uso compartido de una base de datos y sus tablas con la cuenta de destino

Para compartir una base de datos y todas las tablas de la base de datos con la cuenta de destino que no forma parte de la organización, haz lo siguiente:

Nota: Si compartes todas las tablas de una base de datos en la cuenta de origen, cualquier tabla nueva que se cree en la cuenta de origen se compartirá automáticamente con la cuenta de destino.

En la cuenta de origen, haz lo siguiente:

  1. Abre la consola de Lake Formation e inicia sesión como administrador de un lago de datos.
  2. En el panel de navegación, selecciona Bases de datos.
  3. Selecciona la base de datos que quieras compartir.
  4. Elige Acciones y, a continuación, Conceder.
  5. Selecciona Cuenta externa.
  6. Para el ID de la cuenta de AWS o el ID de la organización de AWS, introduce el ID de la cuenta de destino.
  7. En Tabla, asegúrate de que esté seleccionada la opción Todas las tablas.
  8. En **Permisos de la tabla ** y Permisos que se pueden conceder, selecciona los permisos de acceso que desees conceder.
  9. Elige Conceder.

En la cuenta de destino, haz lo siguiente:

  1. Abre la consola de AWS RAM.
  2. En el panel de navegación, en Compartido conmigo, elige Recursos compartidos.
  3. Revisa la lista de recursos compartidos a los que se te ha concedido acceso.
  4. Para aceptar la invitación al recurso compartido desde la cuenta de origen, selecciona el identificador del recurso compartido y elige Aceptar recurso compartido.
  5. Abre la consola de Lake Formation.
  6. En el panel de navegación, selecciona Bases de datos.
    Puedes ver la base de datos compartida en la lista. El ID de la cuenta de propietario de esta base de datos muestra el ID de la cuenta de origen.
  7. Selecciona la base de datos compartida y, a continuación, elige Acciones.
  8. Selecciona Crear enlace del recurso.
  9. En la página Crear enlace del recurso, haz lo siguiente:
    En Nombre del enlace del recurso, introduce el nombre del enlace del recurso.
    En Base de datos compartida, asegúrate de que esté seleccionado el nombre de la base de datos compartida.
    En ID del propietario de la base de datos compartida, introduce el ID de la cuenta de origen.
  10. Selecciona Crear.
    Se crea el enlace del recurso.

Los enlaces de recursos son objetos del catálogo de datos que son enlaces a bases de datos y tablas de metadatos, normalmente a bases de datos y tablas compartidas de otras cuentas de AWS. Ayudan a permitir el acceso entre cuentas a los datos del lago de datos. Una vez creado el enlace del recurso, puedes consultar las tablas de la base de datos compartida con el acceso de administrador del lago de datos.

Para conceder acceso a los usuarios de IAM o entidades principales de la base de datos compartida, concede los permisos necesarios para el enlace del recurso y la base de datos compartida. Esto permite a los usuarios de IAM o entidades principales ver la base de datos compartida y el enlace del recurso en su consola de Lake Formation. Los usuarios de IAM también pueden ver la base de datos y el enlace del recurso en su consola de Amazon Athena o Amazon Redshift Spectrum.

Para conceder acceso a los usuarios de IAM para el enlace del recurso, haz lo siguiente:

  1. Abre la consola de Lake Formation e inicia sesión como administrador de un lago de datos.
  2. En el panel de navegación, selecciona Bases de datos.
  3. Selecciona el enlace del recurso que has creado.
  4. Elige Acciones y, a continuación, Conceder.
  5. En Entidades principales, selecciona Usuarios y roles de IAM.
  6. En usuarios y roles de IAM, selecciona el usuario o entidad principal de IAM al que necesitas conceder acceso.
  7. En Permisos del enlace del recurso, selecciona Describir.
  8. Elige Conceder.

Para conceder acceso a los usuarios de IAM a las bases de datos compartidas, haz lo siguiente:

  1. Abre la consola de Lake Formation e inicia sesión como administrador de un lago de datos.
  2. En el panel de navegación, selecciona Bases de datos.
  3. Selecciona la base de datos compartida.
  4. Elige Acciones y, a continuación, Conceder.
  5. En Entidades principales, selecciona Usuarios y roles de IAM.
  6. En Usuarios y roles de IAM, selecciona el usuario de IAM o entidad principal al que necesitas conceder acceso.
  7. En Permisos de la base de datos, selecciona Describir.
    Nota: Este paso proporciona los permisos mínimos para que los usuarios vean la base de datos compartida.
  8. Elige Conceder.

Para conceder acceso a todas las tablas o a tablas específicas de la base de datos, selecciona la opción Todas las tablas:

  1. Selecciona el enlace del recurso.
  2. Elige Acciones y, a continuación, Conceder.
  3. Selecciona Usuarios y roles de IAM.
  4. En Usuarios y roles de IAM, selecciona el usuario o entidad principal al que quieres conceder acceso.
  5. En Etiquetas LF o recursos del catálogo, haz lo siguiente:
    Para conceder acceso a todas las tablas de la base de datos, en Tablas: opcional, selecciona Todas las tablas.
    Para conceder acceso solo a tablas específicas de la base de datos, en Tablas: opcional, selecciona las tablas.
  6. En **Permisos de la tabla ** y Permisos que se pueden conceder, selecciona Seleccionar y Describir.
  7. Elige Conceder.

Nota: Solo puedes conceder los permisos que hayas seleccionado para los permisos que se pueden conceder en la cuenta de origen.

Tras conceder los permisos necesarios, puedes consultar correctamente la tabla en Athena desde la cuenta de destino.

Compartir solo tablas con la cuenta de destino

Para compartir tablas individuales con la cuenta de destino, sigue las instrucciones de la sección anterior con los cambios siguientes.

Cuenta de origen:

Para conceder acceso a la cuenta de destino desde la consola de Lake Formation, selecciona las tablas individuales en lugar de seleccionar la base de datos.

Cuenta de destino:

  • Acepta el recurso compartido en la consola de AWS RAM para acceder a la tabla compartida en la consola de Lake Formation.
  • Crea un enlace del recurso para la tabla compartida. Una vez creado el enlace del recurso, puedes consultar la tabla compartida con el acceso de administrador del lago de datos.
  • Para conceder acceso a los usuarios de IAM o entidades principales para la tabla compartida, debes conceder permisos para el enlace del recurso.

Revisión de consideraciones adicionales

  • Cuando concedes permisos en la tabla, puedes restringir el acceso solo a las columnas concretas de la tabla. Si lo haces, la cuenta de destino solo podrá ver esas columnas de la tabla compartida.
  • Asegúrate de que los usuarios de IAM o entidades principales de la cuenta de destino tengan acceso a la ruta de Amazon Simple Storage Service (Amazon S3) de la cuenta de origen.
  • Si revocas los permisos que se concedieron anteriormente desde la cuenta de origen, la cuenta de destino no podrá acceder a la base de datos o tabla compartida. Sin embargo, el enlace del recurso que has creado en la cuenta de destino no se elimina automáticamente. Debes eliminarlo manualmente.
  • Al eliminar una base de datos o una tabla, los recursos compartidos de AWS RAM no se eliminan automáticamente. Por lo tanto, debes revocar manualmente los permisos entre cuenta antes de eliminar una base de datos o una tabla compartida.

Información relacionada

Visualización de tablas y bases de datos compartidas del catálogo de datos

Creación de enlaces de recursos

Concesión de permisos de ubicación de datos (cuenta externa)

Concesión y revocación de permisos sobre los recursos del catálogo de datos

Cómo funciona la característica entre cuentas de AWS Lake Formation