Logo Zéphyrnet

Centralisez la gouvernance de votre lac de données à l'aide d'AWS Lake Formation tout en permettant une architecture de données moderne avec Amazon Redshift Spectrum

Date :

De nombreux clients modernisent leur architecture de données à l'aide d'Amazon Redshift pour permettre l'accès à toutes leurs données à partir d'un emplacement de données central. Ils recherchent un moyen plus simple, évolutif et centralisé de définir et d'appliquer des politiques d'accès sur leurs lacs de données sur Service de stockage simple Amazon (Amazon S3). Ils souhaitent que les politiques d'accès permettent aux consommateurs de leurs lacs de données d'utiliser le service d'analyse de leur choix, en fonction des opérations qu'ils souhaitent effectuer sur les données. Bien que la méthode existante d'utilisation des stratégies de compartiment Amazon S3 pour gérer le contrôle d'accès soit une option, lorsque le nombre de combinaisons de niveaux d'accès et d'utilisateurs augmente, la gestion des stratégies au niveau du compartiment peut ne pas évoluer.

Formation AWS Lake permet de simplifier et de centraliser la gestion des accès. Il permet aux organisations de gérer le contrôle d'accès pour les lacs de données basés sur Amazon S3 à l'aide de concepts familiers de bases de données, de tables et de colonnes (avec plus options avancées comme la sécurité au niveau des lignes et des cellules). Lake Formation utilise le Colle AWS Catalogue de données pour fournir un contrôle d'accès au lac de données Amazon S3 avec les services d'analyse AWS les plus couramment utilisés, tels que Redshift d'Amazon (Via Spectre Amazon Redshift), Amazone Athéna, AWS Glue ETL et Amazon DME (pour les notebooks basés sur Spark). Ces services respectent le modèle d'autorisations prêt à l'emploi de Lake Formation, ce qui permet aux clients de simplifier, de standardiser et d'adapter facilement la gestion de la sécurité des données pour les lacs de données.

Avec Amazon Redshift, vous pouvez créer une architecture de données moderne pour étendre de manière transparente votre entrepôt de données à votre lac de données et lire toutes les données (données de votre entrepôt de données et données de votre lac de données) sans créer plusieurs copies de données. La fonctionnalité Amazon Redshift Spectrum permet d'interroger directement votre lac de données S3, et de nombreux clients en profitent pour moderniser leur plate-forme de données. Vous pouvez utiliser le stockage géré Amazon Redshift pour les données fréquemment consultées et déplacer les données moins fréquemment consultées vers le lac de données Amazon S3 et y accéder en toute sécurité à l'aide de Redshift Spectrum.

Dans cet article, nous expliquons comment vous pouvez utiliser AWS Lake Formation pour centraliser la gouvernance des données et la gestion de l'accès aux données tout en utilisant Amazon Redshift Spectrum pour interroger votre lac de données. Lake Formation vous permet d'accorder et de révoquer des autorisations sur des bases de données, des tables et des objets de catalogue de colonnes créés sur le lac de données Amazon S3. C'est plus facile pour les clients, car cela s'apparente à la gestion des autorisations sur les bases de données relationnelles.

Dans le premier article de cette série en deux parties, nous nous concentrons sur les ressources au sein du même compte AWS. Dans le deuxième article, nous étendons la solution à tous les comptes AWS à l'aide de Lake Formation fonction de partage de données.

Vue d'ensemble de la solution

Le diagramme suivant illustre notre architecture de solution.

Le workflow de la solution comprend les étapes suivantes :

  1. Les données stockées dans un lac de données Amazon S3 sont analysées à l'aide d'un robot d'exploration AWS Glue.
  2. Le robot d'exploration déduit les métadonnées des données sur Amazon S3 et les stocke sous la forme d'une base de données et de tables dans le catalogue de données AWS Glue.
  3. Vous enregistrez le compartiment Amazon S3 en tant qu'emplacement du lac de données auprès de Lake Formation. Il est nativement intégré au catalogue de données.
  4. Vous utilisez Lake Formation pour accorder des autorisations au niveau de la base de données, de la table et de la colonne à des Gestion des identités et des accès AWS (IAM).
  5. Vous créez des schémas externes dans Amazon Redshift pour gérer l'accès des équipes marketing et financières.
  6. Vous fournissez l'accès aux groupes marketing et finance à leurs schémas externes respectifs et associez les rôles IAM appropriés à assumer. Le rôle d'administrateur et le groupe d'administrateurs sont limités au travail d'administration.
  7. Les utilisateurs du marketing et de la finance peuvent désormais assumer leurs rôles IAM respectifs et interroger les données à l'aide de l'éditeur de requête SQL sur leurs schémas externes dans Amazon Redshift.

Paramètres de sécurité par défaut de Lake Formation

Pour maintenir la rétrocompatibilité avec AWS Glue, Lake Formation dispose des paramètres de sécurité initiaux suivants :

  • La super autorisation est accordée au groupe IAMAllowedPrincipals sur toutes les ressources Data Catalog existantes.
  • Les paramètres permettant d'utiliser uniquement le contrôle d'accès IAM sont activés pour les nouvelles ressources Data Catalog.

Pour modifier les paramètres de sécurité, consultez Modification des paramètres de sécurité par défaut de votre Data Lake.

Remarque : laissez les paramètres par défaut tels quels jusqu'à ce que vous soyez prêt à passer complètement au modèle d'autorisation Lake Formation. Vous pouvez mettre à jour les paramètres au niveau de la base de données si vous souhaitez que les autorisations définies par Lake Formation prennent effet. Pour plus de détails sur les mises à niveau, reportez-vous à Mise à niveau des autorisations de données AWS Glue vers le modèle AWS Lake Formation.

Nous vous déconseillons de revenir du modèle d'autorisation Lake Formation à un modèle d'autorisation IAM uniquement. Vous pouvez également commencer par déployer la solution dans un nouveau compte de test.

Pré-requis

Pour configurer cette solution, vous avez besoin d'une connaissance de base du Console de gestion AWS, un Compte AWS, et l'accès aux services AWS suivants :

Créer l'administrateur du lac de données

Les administrateurs de lac de données sont initialement les seuls utilisateurs ou rôles IAM qui peuvent accorder des autorisations Lake Formation sur les emplacements de données et les ressources Data Catalog à n'importe quel mandataire.

Pour configurer un utilisateur IAM en tant qu'administrateur de lac de données, ajoutez la stratégie en ligne fournie à l'utilisateur IAM ou au rôle IAM que vous utilisez pour provisionner les ressources de cette solution de blog. Pour plus de détails, reportez-vous à Créer un administrateur de lac de données.

  1. Sur la console IAM, choisissez Utilisateurs, puis choisissez l'utilisateur IAM que vous souhaitez désigner comme administrateur du lac de données.
  2. Selectionnez Ajouter une politique en ligne sur le Permissions et ajoutez la stratégie suivante :
    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "lakeformation:GetDataLakeSettings", "lakeformation:PutDataLakeSettings" ], "Resource": "*" } ]
    }

  3. Indiquez un nom de stratégie.
  4. Vérifiez et enregistrez vos paramètres.

Remarque : Si vous utilisez un utilisateur/rôle d'administrateur existant, vous l'avez peut-être déjà provisionné.

  1. Connectez-vous à la console de gestion AWS en tant qu'utilisateur ou rôle IAM administrateur de lac de données désigné pour cette solution.

Remarque : Le modèle CloudFormation ne fonctionne pas si vous ignorez l'étape ci-dessous.

  1. Si c'est la première fois que vous utilisez la console Lake Formation, sélectionnez Ajouter moi-même et choisissez Commencez.

Vous pouvez également vous ajouter en tant qu'administrateur de lac de données en accédant à Rôles et tâches administratives sous Permissions, sélectionnez Choisissez les administrateurs, et en vous ajoutant en tant qu'administrateur si vous l'avez manqué dans l'écran de bienvenue initial.

Provisionner des ressources avec CloudFormation

Dans cette étape, nous créons les ressources de la solution à l'aide d'un Modèle CloudFormation. Le modèle effectue les actions suivantes :

  • Crée un compartiment S3 pour copier des exemples de fichiers de données et de scripts SQL
  • Enregistre l'emplacement du lac de données S3 auprès de Lake Formation
  • Crée des rôles et des politiques IAM selon les besoins de l'environnement
  • Attribue des mandataires (rôles IAM) pour gérer les paramètres du lac de données
  • Crée des ressources Lambda et Step Functions pour charger les données nécessaires
  • Exécute des tâches d'exploration AWS Glue pour créer des tables de catalogue de données
  • Configure les autorisations de Lake Formation
  • Crée un cluster Amazon Redshift
  • Exécute un script SQL pour créer le groupe de base de données, l'utilisateur de la base de données et les schémas externes pour les groupes admin, marketing et finance

Pour créer vos ressources, procédez comme suit :

  1. Lancer le modèle fourni dans la région AWS us-east-1.
  2. Selectionnez Suivant.
  3. Pour Nom de la pile, vous pouvez conserver le nom de pile par défaut ou le modifier.
  4. Pour Mot de passe Db, fournissez un mot de passe sécurisé au lieu d'utiliser le mot de passe fourni par défaut.
  5. Pour Trafic entrant, remplacez la plage d'adresses IP par l'adresse IP de votre machine locale au format CIDR au lieu d'utiliser la valeur par défaut.
  6. Selectionnez Suivant.
  7. Selectionnez Suivant jusqu'à ce que vous arriviez à la page de révision.
  8. Sélectionnez Je reconnais qu'AWS CloudFormation peut créer des ressources IAM avec des noms personnalisés.
  9. Selectionnez Créer une pile.

La pile prend environ 10 minutes pour se déployer avec succès. Une fois terminé, vous pouvez afficher les sorties sur la console AWS CloudFormation.

Mettre à jour les paramètres par défaut de Lake Formation

Vous devez également mettre à jour les paramètres par défaut au niveau de la base de données Lake Formation. Cela garantit que les autorisations Lake Formation que le modèle CloudFormation configure pendant le provisionnement peuvent prendre effet sur les paramètres par défaut.

  1. Sur la console Lake Formation, sous Catalogue de données dans le volet de navigation, choisissez Bases de données.
  2. Choisissez la base de données que vous avez créée avec le modèle CloudFormation.
  3. Selectionnez Modifier.
  4. Désélectionner Utiliser uniquement le contrôle d'accès IAM pour les nouvelles tables de la base de données.
  5. Selectionnez Épargnez.

Cette action est importante car elle supprime le modèle de contrôle IAM de cette base de données et permet uniquement à Lake Formation d'y accorder/révoquer l'accès de sécurité. Cette étape permet de s'assurer que les autres étapes de cette solution réussissent.

  1. Selectionnez Bases de données dans le volet de navigation.
  2. Sélectionnez la même base de données.
  3. Sur le Actions menu, choisissez Afficher les autorisations.

Vous pouvez consulter les autorisations activées pour cette base de données.

  1. Sélectionnez le IAMAllowedPrincipals groupe et choisis Révoquer pour supprimer les paramètres d'autorisation par défaut pour cette base de données individuelle.

La IAMAllowedPrincipal ligne n'apparaît plus dans la liste sur le Permissions .

De même, nous devons supprimer le IAMAllowedPrincipal groupe au niveau de la table. Le modèle CloudFormation a créé six tables pour cette base de données. Voyons comment utiliser les autorisations du lac de données pour supprimer l'accès au niveau de la table.

  1. Sur la console Lake Formation, choisissez Autorisations du lac de données dans le volet de navigation.
  2. Filtrer par Principal:IAMAllowedPrincipals et Database:<<database name>>.

Vous pouvez consulter toutes les tables pour lesquelles nous devons mettre à jour les autorisations.

  1. Sélectionnez chaque tableau un par un et choisissez Révoquer.

Avec ces étapes, nous nous sommes assurés que les paramètres par défaut au niveau du compte Lake Formation sont toujours en place et mis à jour manuellement uniquement pour la base de données et les tables avec lesquelles nous allons travailler dans cet article. Lorsque vous êtes prêt à passer complètement à un modèle d'autorisation Lake Formation, vous pouvez mettre à jour les paramètres au niveau du compte au lieu de les mettre à jour individuellement. Pour plus de détails, voir Modifier le modèle d'autorisation par défaut.

Valider les ressources provisionnées

Le modèle CloudFormation provisionne automatiquement de nombreuses ressources pour créer votre environnement. Dans cette section, nous examinons certaines des ressources clés pour mieux les comprendre.

Ressources du lac Formation

Sur la console Lake Formation, vérifiez qu'un nouvel emplacement de lac de données est enregistré avec un rôle IAM sur le Emplacements des lacs de données .

Il s'agit du rôle IAM que tout service intégré comme Amazon Redshift assume pour accéder aux données sur l'emplacement Amazon S3 enregistré. Cette intégration est prête à l'emploi lorsque les bons rôles et politiques sont appliqués. Pour plus de détails, voir Conditions requises pour les rôles utilisés pour enregistrer des emplacements.

Vérifiez la Rôles et tâches administratives confirmer que l'utilisateur connecté est ajouté en tant qu'administrateur du lac de données et IAMAllowedPrincipals est ajouté en tant que créateur de la base de données.

Vérifiez ensuite les tables créées par les robots d'exploration AWS Glue dans la base de données Data Catalog. Ces tables sont des entités logiques, car les données se trouvent dans un emplacement Amazon S3. Après avoir créé ces objets, vous pouvez y accéder via différents services.

Enfin, vérifiez les autorisations définies par le modèle à l'aide du modèle d'autorisation Lake Formation sur les tables accessibles aux utilisateurs financiers et marketing d'Amazon Redshift.

La capture d'écran suivante montre que le rôle financier a accès à toutes les colonnes du store et item tables, mais uniquement les colonnes répertoriées pour store_sales tableau.

De même, vous pouvez vérifier l'accès du rôle marketing, qui a accès à toutes les colonnes du customer_activity et store_sales les tables.

Ressources Amazon S3

Le modèle CloudFormation crée deux buckets S3 :

  • lac de données – Contient les données utilisées pour ce post
  • scénario – Contient le SQL que nous utilisons pour créer des objets de base de données Amazon Redshift

Ouvrez le script bucket pour voir les scripts. Vous pouvez les télécharger et les ouvrir pour visualiser le code SQL utilisé.

La setup_lakeformation_demo.sql Le script vous donne le code SQL pour créer le schéma de base de données externe et attribuer différents rôles à des fins de gouvernance des données. Le schéma externe est destiné aux objets basés sur AWS Glue Data Catalog qui pointent vers des données dans le lac de données. Nous accordons ensuite l'accès à différents groupes de bases de données et utilisateurs pour gérer la sécurité des utilisateurs financiers et marketing.

Les scripts s'exécutent dans l'ordre suivant :

  1. sp_create_db_group.sql
  2. sp_create_db_user.sql
  3. setup_lakeformation_demo.sql

Ressources Amazon Redshift

Sur la console Amazon Redshift, choisissez Clusters dans le volet de navigation et choisissez le cluster que vous avez créé avec le modèle CloudFormation. Choisissez ensuite le biens languette.

La Autorisations de cluster section répertorie trois rôles attachés. Le modèle a utilisé le rôle d'administrateur pour provisionner les objets au niveau de la base de données Amazon Redshift. Le rôle financier est attaché au schéma financier dans Amazon Redshift, et le rôle marketing est attaché au schéma marketing.

Chacun de ces rôles reçoit des autorisations de manière à pouvoir utiliser l'éditeur de requête Amazon Redshift pour interroger les tables du catalogue de données à l'aide de Redshift Spectrum. Pour plus de détails, voir Utilisation de Redshift Spectrum avec AWS Lake Formation et Interroger les données dans le lac de données à l'aide d'Amazon Redshift Spectrum.

Interroger les données

Nous utilisons Éditeur de requête Amazon Redshift v2 pour interroger le schéma externe et les tables du catalogue de données (tables externes). Le schéma externe est déjà créé dans le cadre du modèle CloudFormation. Lorsque le schéma externe est créé à l'aide du catalogue de données, les tables de la base de données sont automatiquement créées et sont disponibles via Amazon Redshift en tant que tables externes.

  1. Sur la console Amazon Redshift, choisissez Éditeur de requête v2.
  2. Selectionnez Configurer le compte.
  3. Choisissez le cluster de base de données.
  4. Pour Base de données, Entrer dev.
  5. Pour nom d'utilisateur, Entrer awsuser.
  6. Pour Authentification, sélectionnez Identifiants temporaires.
  7. Selectionnez Créer une connexion.

Lorsque vous êtes connecté et connecté en tant qu'utilisateur administrateur, vous pouvez voir les schémas et les tables locaux et externes, comme illustré dans la capture d'écran suivante.

Valider les autorisations de formation de lac basées sur les rôles dans Amazon Redshift

Ensuite, nous validons le fonctionnement des paramètres de sécurité de Lake Formation pour les utilisateurs marketing et financiers.

  1. Dans l'éditeur de requêtes, choisissez (clic droit) la connexion à la base de données.
  2. Selectionnez Modifier la connexion.
  3. Pour nom d'utilisateur, Entrer marketing_ro.
  4. Selectionnez Modifier la connexion.
  5. Après connexion en tant que maketing_ro, choisissez la base de données de développement sous le cluster et accédez au customer_activity tableau.
  6. Choisissez l'icône d'actualisation.
  7. Répétez ces étapes pour modifier la connexion et mettre à jour l'utilisateur pour finance_ro.
  8. Réessayez d'actualiser le dev base de données.

Comme prévu, cet utilisateur n'a accès qu'au schéma et aux tables autorisés.

Avec cette solution, vous pouvez séparer différents utilisateurs au niveau du schéma et utiliser Lake Formation pour vous assurer qu'ils ne peuvent voir que les tables et les colonnes autorisées par leur rôle.

Sécurité au niveau des colonnes avec les autorisations Lake Formation

Lake Formation vous permet également de définir les colonnes qu'un principal peut ou ne peut pas voir dans un tableau. Par exemple, lorsque vous sélectionnez store_sales car marketing_ro utilisateur, vous voyez de nombreuses colonnes, comme customer_purchase_estimate. Cependant, comme le finance_ro utilisateur, vous ne voyez pas ces colonnes.

Contrôle d'accès manuel via la console Lake Formation

Dans cet article, nous avons travaillé avec un modèle CloudFormation
, qui est un moyen automatisé de créer des modèles d'environnement et de simplifier les opérations.

Dans cette section, nous montrons comment vous pouvez configurer toutes les configurations via la console, et nous utilisons un autre tableau comme exemple pour vous guider à travers les étapes.

Comme démontré dans les étapes précédentes, l'utilisateur marketing de cet environnement a accès à toutes les colonnes des tables customer_activity et store_sales dans le schéma externe retail_datalake_marketing. Nous en modifions certaines manuellement pour voir comment cela fonctionne à l'aide de la console.

  1. Sur la console Lake Formation, choisissez Autorisations du lac de données.
  2. Filtrer par le principal RedshiftMarketingRole.
  3. Sélectionnez le principal pour le store_sales table et choisissez Révoquer.
  4. Confirmez en choisissant Révoquer nouveau.

Un message de réussite s'affiche et la ligne d'autorisation n'est plus répertoriée.

  1. Selectionnez Subvention pour configurer un nouveau niveau d'autorisation pour l'utilisateur marketing sur le store_sales tableau au niveau des colonnes.
  2. Sélectionnez Utilisateurs et rôles IAM et choisissez votre rôle.
  3. Dans le LF-Tags ou ressources de catalogue section, sélectionnez Ressources de catalogue de données nommées.
  4. Pour Bases de données, choisissez votre base de données.
  5. Pour Tables, choisir la store_sales tableau.
  6. Pour Droits de tableChèque Sélectionnez.
  7. Dans le Autorisations de données section, sélectionnez Accès simple basé sur les colonnes.
  8. Sélectionnez Exclure les colonnes.
  9. Choisissez les colonnes comme indiqué dans la capture d'écran suivante.
  10. Selectionnez Subvention.

Nous interrogeons à nouveau la table d'Amazon Redshift pour confirmer que les modifications effectives correspondent aux contrôles placés par Lake Formation. Dans la requête suivante, nous sélectionnons une colonne non autorisée :

/* Selecting columns not authorized will result in error. */
select s_country, ss_net_profit from retail_datalake_marketing.store_sales;

Comme prévu, nous obtenons une erreur.

Nettoyer

Nettoyez les ressources créées par le modèle CloudFormation pour éviter des coûts inutiles pour votre compte AWS. Vous pouvez supprimer la pile CloudFormation en sélectionnant la pile sur la console AWS CloudFormation et en choisissant Supprimer. Cette action supprime toutes les ressources qu'elle a provisionnées. Si vous avez mis à jour manuellement une ressource provisionnée par modèle, vous pouvez rencontrer des problèmes lors du nettoyage et vous devez les nettoyer manuellement.

Résumé

Dans cet article, nous avons montré comment vous pouvez intégrer Lake Formation à Amazon Redshift pour contrôler de manière transparente l'accès au lac de données Amazon S3. Nous avons également montré comment interroger votre lac de données à l'aide de Redshift Spectrum et de tables externes. Il s'agit d'un mécanisme puissant qui vous aide à créer une architecture de données moderne pour interroger facilement les données sur votre lac de données et vos entrepôts de données ensemble. Nous avons également vu comment vous pouvez utiliser les modèles CloudFormation pour automatiser la création de ressources avec l'infrastructure en tant que code. Vous pouvez l'utiliser pour simplifier vos opérations, en particulier lorsque vous souhaitez répliquer la configuration des ressources du développement au paysage de production pendant vos cycles de projet.

Enfin, nous avons expliqué comment les administrateurs de lac de données peuvent contrôler manuellement la recherche sur les objets du catalogue de données et accorder ou révoquer l'accès au niveau de la base de données, de la table et de la colonne. Nous vous encourageons à essayer les étapes décrites dans cet article et à utiliser le modèle CloudFormation pour configurer la sécurité dans Lake Formation afin de contrôler l'accès au lac de données depuis Redshift Spectrum.

Dans le deuxième article de cette série, nous nous concentrons sur la façon dont vous pouvez prendre ce concept et l'appliquer à tous les comptes en utilisant une fonction de partage de données de Lake Formation dans une topographie en étoile.


À propos des auteurs

Vaibhav Agrawal est architecte de solutions spécialisées en analyse chez AWS. Tout au long de sa carrière, il s'est attaché à aider les clients à concevoir et à créer des plateformes d'analyse et d'aide à la décision bien architecturées.

Jason Pedreza est un architecte de solutions spécialiste de l'analyse chez AWS avec plus de 13 ans d'expérience dans l'entreposage de données. Avant AWS, il a créé des solutions d'entrepôt de données sur Amazon.com. Il se spécialise dans Amazon Redshift et aide les clients à créer des solutions analytiques évolutives.

Rajesh François est spécialiste senior de l'expérience client Analytics chez AWS. Il est spécialisé dans Amazon Redshift et se concentre sur l'aide au développement du marché AWS et de la stratégie technique pour les services d'entreposage et d'analyse de données. Rajesh travaille en étroite collaboration avec de grands clients stratégiques pour les aider à adopter nos nouveaux services et fonctionnalités, développer des partenariats à long terme et transmettre les exigences des clients à nos équipes de développement de produits pour guider notre feuille de route de produits.

Source : https://aws.amazon.com/blogs/big-data/centralize-governance-for-your-data-lake-using-aws-lake-formation-while-enabling-a-modern-data-architecture- avec-amazon-redshift-spectre/

spot_img

Dernières informations

spot_img

Discutez avec nous

Salut! Comment puis-je t'aider?