¿Cómo se comparten las bases de datos y las tablas de AWS Glue Data Catalog entre cuentas mediante AWS Lake Formation?

10 minutos de lectura
0

Deseo compartir bases de datos y tablas de AWS Glue Data Catalog entre cuentas mediante AWS Lake Formation.

Resolución

Con la función entre cuentas de Lake Formation, puede conceder acceso a otras cuentas de AWS para escribir y compartir datos hacia o desde el lago de datos. Los recursos se pueden compartir mediante el control de acceso basado en etiquetas o los 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.

Asegúrese de que se cumplen los requisitos previos

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

Revocar los permisos de Lake Formation

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

Evitar que las tablas nuevas tengan Superpermisos

En el caso de las bases de datos de Data Catalog que contienen tablas que se podrían compartir, evite que las nuevas tablas tengan una concesión predeterminada de Super a IAMAllowedPrincipals:

  1. Abra la consola de Lake Formation.
  2. En el panel de navegación, en Data Catalog, elija Bases de datos.
  3. Seleccione la base de datos que desea actualizar.
  4. Elija Actions (Acciones) y, a continuación, elija Edit (Editar).
  5. En Default permissions for newly created tables (Permisos predeterminados para tablas recién creadas), desactive Use only IAM access control for new tables in this database (Usar solo el control de acceso de IAM para tablas nuevas en esta base de datos).
  6. Elija Save (Guardar).

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

Agregue los permisos necesarios para el acceso entre cuentas

Si la política de recursos de AWS Glue Data Catalog ya está habilitada en la cuenta, puede entonces eliminar la política o agregar los nuevos permisos a la política que se requieren para las concesiones entre cuentas. El siguiente es un ejemplo de política de recursos para proporcionar acceso entre cuentas de AWS Glue a la cuenta 5555666677778888 a partir de la cuenta 1111222233334444.

Para obtener más información, consulte Conceder 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"
      ]
    }
  ]
}

Habilitar el uso compartido con las organizaciones

Si los recursos del catálogo de datos se comparten entre organizaciones, habilite 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 de IAM ram:EnableSharingWithAwsOrganization.

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

Conceder los permisos de IAM necesarios

Cuenta de origen: para utilizar el método de recursos con nombre para conceder permisos entre cuentas, debe tener los permisos de IAM necesarios para AWS Glue y AWS Resource Access Manager (AWS RAM). Puede 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 recibe la invitación para compartir recursos en AWS RAM debe tener los permisos de IAM necesarios para glue:PutResourcePolicy.

Compartir 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, haga lo siguiente:

Nota: Si comparte 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, haga lo siguiente:

  1. Abra la consola de Lake Formation e inicie sesión como administrador del lago de datos.
  2. En el panel de navegación, elija Bases de datos.
  3. Seleccione la base de datos que desea compartir.
  4. Elija Actions (Acciones) y, a continuación, elija Grant (Conceder).
  5. Seleccione External account (Cuenta externa).
  6. En AWS account ID or AWS organization ID (ID de cuenta de AWS o ID de organización de AWS), ingrese el ID de cuenta de la cuenta de destino.
  7. En Table (Tabla), asegúrese de que esté seleccionada la opción All tables (Todas las tablas).
  8. En Table permissions (Permisos de tabla) y Grantable permissions (Permisos concedibles), seleccione los permisos de acceso que desea conceder.
  9. Elija Grant (Conceder).

En la cuenta de destino, haga lo siguiente:

  1. Abra la consola de AWS RAM.
  2. En el panel de navegación, en Shared with me (Compartido conmigo), elija Resource shares (Recursos compartidos).
  3. Revise la lista de recursos compartidos a los que se le ha concedido acceso.
  4. Para aceptar la invitación para el recurso compartido desde la cuenta de origen, seleccione el ID del recurso compartido y elija Aceptar recurso compartido.
  5. Abra la consola de Lake Formation.
  6. En el panel de navegación, elija Bases de datos.
    Puede ver la base de datos compartida en la lista. El Owner account ID (ID de cuenta de propietario) de esta base de datos muestra el ID de cuenta de la cuenta de origen.
  7. Seleccione la base de datos compartida y, a continuación, elija Actions (Acciones).
  8. Elija Create resource link (Crear enlace de recurso).
  9. En la página Crear enlace de recurso, haga lo siguiente:
    En Resource link name (Nombre del enlace de recurso), ingrese el nombre del enlace de recurso.
    En Shared database (Base de datos compartida), asegúrese de que el nombre de la base de datos compartida esté seleccionado.
    En Shared database's owner ID (ID de propietario de la base de datos compartida), ingrese el ID de cuenta de la cuenta de origen.
  10. Elija Create (Crear).
    Se creará el enlace de recursos.

Los enlaces a 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 habilitar el acceso entre cuentas a los datos del lago de datos. Una vez creado el enlace de recursos, puede consultar las tablas de la base de datos compartida con el acceso de administrador del lago de datos.

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

Para conceder acceso a los usuarios de IAM para el enlace de recursos, haga lo siguiente:

  1. Abra la consola de Lake Formation e inicie sesión como administrador del lago de datos.
  2. En el panel de navegación, elija Bases de datos.
  3. Seleccione el enlace del recurso que ha creado.
  4. Elija Acciones y, a continuación, elija Conceder.
  5. En Entidades principales, seleccione Usuarios y roles de IAM.
  6. En Usuarios y roles de IAM, seleccione el usuario o la entidad principal de IAM al que necesita conceder acceso.
  7. En Permisos del enlace de recursos, seleccione Describir.
  8. Elija Conceder.

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

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

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

  1. Seleccione el enlace del recurso.
  2. Elija Actions (Acciones) y, a continuación, elija Grant (Conceder).
  3. Seleccione IAM users and roles (Usuarios y roles de IAM).
  4. En IAM users and roles (Usuarios y roles de IAM), seleccione el usuario o entidad principal al que desea conceder acceso.
  5. EnLF-Tags or catalog resources (Etiquetas LF o recursos del catálogo), haga lo siguiente:
    Para conceder acceso a todas las tablas de la base de datos, en Tables - optional (Tablas: opcional), seleccione All tables (Todas las tablas).
    Para conceder acceso solo a tablas específicas de la base de datos, en Tables - optional (Tablas: opcional), seleccione las tablas.
  6. En Table permissions (Permisos de tabla) y Grantable permissions (Permisos concedibles), seleccione Select (Seleccionar) y Describe (Describir).
  7. Elija Grant (Conceder).

Nota: Solo puede conceder los permisos que haya seleccionado para Grantable permissions (Permisos concedibles) en la cuenta de origen.

Después de conceder los permisos necesarios, podrá consultar 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, siga las instrucciones de la sección anterior con los siguientes cambios.

Cuenta de origen:

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

Cuenta de destino:

  • Acepte el recurso compartido en la consola de AWS RAM para acceder a la tabla compartida en la consola de Lake Formation.
  • Cree un enlace de recursos para la tabla compartida. Después de crear el enlace de recursos, podrá consultar la tabla compartida con el acceso del administrador del lago de datos.
  • Para conceder acceso a los usuarios/entidades principales de IAM para la tabla compartida, debe conceder permisos para el enlace del recurso.

Revisión de consideraciones adicionales

  • Al otorgar permisos en las tablas, puede restringir el acceso solo para las columnas específicas de la tabla. En este caso, la cuenta de destino solo podrá ver las columnas de la tabla compartida.
  • Asegúrese de que los usuarios o entidades principales de IAM de la cuenta de destino tienen acceso a la ruta de Amazon Simple Storage Service (Amazon S3) en la cuenta de origen.
  • Si revoca los permisos concedidos anteriormente a la cuenta de origen, la cuenta de destino no podrá acceder a la base de datos o tabla compartida. Sin embargo, el enlace de recursos que creó en la cuenta de destino no se elimina automáticamente. Debe eliminar manualmente el enlace del recurso.
  • Cuando se elimina una base de datos o una tabla, los recursos compartidos en AWS RAM no se eliminan automáticamente. Por lo tanto, debe revocar manualmente los permisos entre cuentas antes de eliminar una base de datos o tabla compartida.

Información relacionada

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

Creación de enlaces a recursos

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

Conceder y revocar permisos en los recursos de Data Catalog

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

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años