Comment partager des bases de données et des tables du catalogue de données AWS Glue entre comptes à l'aide d'AWS Lake Formation ?

Dernière mise à jour : 05/05/2022

Je souhaite partager des bases de données et des tables du catalogue de données AWS Glue entre comptes à l'aide d'AWS Lake Formation.

Solution

Avec la fonctionnalité entre comptes de Lake Formation, vous pouvez accorder l'accès à d'autres comptes AWS pour écrire et partager des données vers ou depuis le lac de données. Les ressources peuvent être partagées via un contrôle d'accès basé sur des balises ou via des ressources nommées. Cet article se concentre sur l'octroi d'un accès entre comptes aux ressources du catalogue de données à l'aide de la méthode des ressources nommées.

Assurez-vous que les conditions préalables sont remplies

Gardez à l'esprit les conditions préalables suivantes avant de partager les ressources de votre catalogue de données avec un autre compte ou d'accéder aux ressources partagées à partir d'un autre compte :

Révoquer les autorisations Lake Formation

Révoquez toutes les autorisations Lake Formation du groupe IAMAllowedPrincipals pour la ressource du catalogue de données.

Empêcher les nouvelles tables d'avoir des autorisations Super

Pour les bases de données du catalogue de données qui contiennent des tables que vous êtes susceptible de partager, empêchez les nouvelles tables d'avoir une allocation par défaut du type Super à IAMAllowedPrincipals :

  1. Ouvrez la console AWS Lake Formation.
  2. Dans le panneau de navigation, sous Catalogue de données, choisissez Bases de données.
  3. Sélectionnez la base de données que vous souhaitez mettre à jour.
  4. Choisissez Actions, puis Modifier.
  5. Sous Autorisations par défaut des tables nouvellement créées, désactivez Use only IAM access control for new tables in this database (Utiliser uniquement le contrôle d'accès IAM pour les nouvelles tables de cette base de données).
  6. Choisissez Save (Enregistrer).

Pour plus d'informations, consultez Super.

Ajoutez les autorisations requises pour l'accès entre comptes

Si la politique des ressources du catalogue de données AWS Glue est déjà activée dans le compte, vous pouvez soit la supprimer ou y ajouter de nouvelles autorisations qui sont requises pour les allocations entre comptes. Voici un exemple de politique des ressources pour fournir un accès AWS Glue entre comptes au compte 5555666677778888 à partir du compte 1111222233334444.

Pour plus d'informations, consultez Accord d’accès entre comptes.

{
  "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"
      ]
    }
  ]
}

Permettre le partage avec les organisations

Si les ressources du catalogue de données sont partagées entre les organisations, alors activez le partage avec AWS Organizations à l'aide de la console AWS RAM. L'utilisateur ou le rôle AWS Identity and Access Management (IAM) qui active cette option doit disposer de l'autorisation IAM ram:EnableSharingWithAwsOrganization.

Pour plus d'informations, consultez Conditions préalables à l'accès entre comptes.

Accorder les autorisations IAM requises

Compte source : pour utiliser la méthode des ressources nommées afin d'accorder des autorisations entre comptes, vous devez disposer des autorisations IAM requises pour AWS Glue et AWS Resource Access Manager (AWS RAM). Vous pouvez choisir la politique gérée par AWS AWSLakeFormationCrossAccountManager qui accorde ces autorisations, ou créer une nouvelle politique basée sur cette politique.

Compte cible : les administrateurs de lacs de données des comptes cibles doivent appliquer la politique supplémentaire suivante. Cette politique permet à l'administrateur d'accepter les invitations de partage de ressources AWS RAM et d'activer le partage de ressources avec les organisations :

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

Remarque : l'utilisateur ou le rôle IAM qui reçoit l'invitation de partage de ressources dans AWS RAM doit disposer des autorisations IAM requises pour glue:PutResourcePolicy.

Partager une base de données et ses tables avec le compte cible

Pour partager une base de données et toutes ses tables avec le compte cible qui ne fait pas partie de l'organisation, procédez comme suit :

Remarque : si vous partagez toutes les tables d'une base de données dans le compte source, toute nouvelle table créée dans le compte source est automatiquement partagée avec le compte cible.

Dans le compte source, procédez comme suit :

  1. Ouvrez la console AWS Lake Formation et connectez-vous en tant qu'administrateur de lacs de données.
  2. Dans le panneau de navigation, choisissez Databases (Bases de données).
  3. Sélectionnez la base de données que vous souhaitez partager.
  4. Choisissez Actions, puis Accorder.
  5. Sélectionnez Compte externe.
  6. Pour ID de compte AWS ou ID d'organisation AWS, saisissez l'ID de compte du compte cible.
  7. Pour Tableau, assurez-vous que l'option Toutes les tables est sélectionnée.
  8. Pour Autorisations de tables et Autorisations accordables, sélectionnez les autorisations d'accès que vous souhaitez accorder.
  9. Choisissez Accorder.

Dans le compte cible, procédez comme suit :

  1. Ouvrez la console AWS RAM.
  2. Dans le panneau de navigation, sous Partagé avec moi, choisissez Partages de ressources.
  3. Consultez la liste des partages de ressources auxquels l'accès vous a été accordé.
  4. Afin d’accepter l'invitation pour la ressource partagée à partir du compte source, sélectionnez l'ID de partage de ressources, puis choisissez Accepter le partage de ressources.
  5. Ouvrez la console AWS Lake Formation.
  6. Dans le panneau de navigation, choisissez Databases (Bases de données).
    Vous pouvez consulter la base de données partagée dans la liste. L'ID du compte propriétaire de cette base de données indique l'ID de compte du compte source.
  7. Sélectionnez la base de données partagée, puis choisissez Actions.
  8. Sélectionnez Créer un lien vers des ressources.
  9. Sur la page Créer un lien vers des ressources, procédez comme suit :
    Pour Nom du lien vers des ressources, saisissez le nom du lien vers des ressources.
    Pour Base de données partagée, assurez-vous que le nom de la base de données partagée est sélectionné.
    Pour ID du propriétaire de la base de données partagée, saisissez l'ID de compte du compte source.
  10. Sélectionnez Créer.
    Le lien vers des ressources est créé.

Les liens vers des ressources sont des objets du catalogue de données qui sont des liens vers des bases de données et des tables de métadonnées, généralement vers des bases de données et des tables partagées provenant d'autres comptes AWS. Ils permettent un accès entre comptes aux données du lac de données. Une fois le lien vers des ressources créé, vous pouvez interroger les tables de la base de données partagée avec l'accès de l’administrateur de lacs de données.

Pour accorder l'accès aux utilisateurs/principaux IAM pour la base de données partagée, accordez les autorisations requises pour le lien vers des ressources et la base de données partagée. Cela permet aux utilisateurs/principaux IAM d'afficher la base de données partagée et le lien vers les ressources dans leur console AWS Lake Formation. Les utilisateurs IAM peuvent également consulter la base de données et le lien vers les ressources dans leur console Amazon Athena ou Amazon Redshift Spectrum.

Pour accorder l'accès aux utilisateurs IAM pour le lien vers les ressources, procédez comme suit :

  1. Ouvrez la console AWS Lake Formation et connectez-vous en tant qu'administrateur de lacs de données.
  2. Dans le panneau de navigation, choisissez Databases (Bases de données).
  3. Sélectionnez le lien vers les ressources que vous avez créées.
  4. Choisissez Actions, puis Accorder.
  5. Sous Principaux, sélectionnez Utilisateurs et rôles IAM.
  6. Pour Utilisateurs et rôles IAM, sélectionnez l'utilisateur/principal auquel vous souhaitez accorder l'accès.
  7. Sous Autorisations des liens vers les ressources, sélectionnez Describe (Description).
  8. Choisissez Accorder.

Pour accorder l'accès aux utilisateurs IAM pour les bases de données partagées, procédez comme suit :

  1. Ouvrez la console AWS Lake Formation et connectez-vous en tant qu'administrateur de lacs de données.
  2. Dans le panneau de navigation, choisissez Databases (Bases de données).
  3. Sélectionnez la base de données partagée.
  4. Choisissez Actions, puis Accorder.
  5. Sous Principaux, sélectionnez Utilisateurs et rôles IAM.
  6. Pour Utilisateurs et rôles IAM, sélectionnez l'utilisateur/principal auquel vous souhaitez accorder l'accès.
  7. Sous Autorisations de base de données, sélectionnez Description.
    Remarque : Cette étape fournit les autorisations minimales permettant aux utilisateurs de consulter la base de données partagée.
  8. Choisissez Accorder.

Pour accorder l'accès à toutes les tables ou à des tables spécifiques de la base de données, sélectionnez l'option Toutes les tables :

  1. Sélectionnez le lien vers des ressources.
  2. Choisissez Actions, puis Accorder.
  3. Sélectionnez Utilisateurs et rôles IAM.
  4. Pour Utilisateurs et rôles IAM, sélectionnez l'utilisateur/principal auquel vous souhaitez accorder l'accès.
  5. Sous Étiquettes LF ou ressources du catalogue, procédez comme suit :
    Pour accorder l'accès à toutes les tables de la base de données, pour Tables - facultatif, sélectionnez Toutes les tables.
    Pour n'accorder l'accès qu'à des tables spécifiques de la base de données, pour Tables - facultatif, sélectionnez les tables.
  6. Pour Autorisations des tables et Autorisations accordables, sélectionnez Sélectionner et Décrire.
  7. Choisissez Accorder.

Remarque : vous ne pouvez accorder que les autorisations que vous avez sélectionnées pour les Autorisations accordables dans le compte source.

Après avoir accordé les autorisations requises, vous pouvez bien interroger la table dans Athena à partir du compte cible.

Partager uniquement les tables avec le compte cible

Pour partager des tables individuelles avec le compte cible, suivez les instructions de la section précédente avec les modifications suivantes.

Compte source :

Pour accorder l'accès au compte cible à partir de la console AWS Lake Formation, sélectionnez les tables individuelles au lieu de sélectionner la base de données.

Compte cible :

  • Acceptez le partage de ressources dans la console AWS RAM pour accéder à la table partagée dans la console AWS Lake Formation.
  • Créez un lien vers des ressources pour la table partagée. Une fois le lien vers des ressources créé, vous pouvez interroger la table partagée avec l'accès de l’administrateur de lacs de données.
  • Pour accorder l'accès aux utilisateurs/principaux IAM pour la table partagée, vous devez accorder des autorisations pour le lien vers des ressources.

Examiner d’autres considérations

  • Lorsque vous accordez des autorisations sur la table, vous pouvez restreindre l'accès uniquement aux colonnes spécifiques de la table. Dans ce cas, le compte cible ne peut afficher que ces colonnes de la table partagée.
  • Assurez-vous que les utilisateurs/principaux IAM du compte cible ont accès au chemin d'accès Amazon Simple Storage Service (Amazon S3) dans le compte source.
  • Si vous révoquez les autorisations précédemment accordées par le compte source, le compte cible ne peut pas accéder à la base de données ou à la table partagée. Toutefois, le lien vers des ressources que vous avez créé dans le compte cible n'est pas automatiquement supprimé. Vous devez supprimer manuellement le lien vers des ressources.
  • Lorsque vous supprimez une base de données ou une table, les partages de ressources dans AWS RAM ne sont pas supprimés automatiquement. Par conséquent, vous devez révoquer manuellement les autorisations entre comptes avant de supprimer une base de données ou une table partagée.