Partager via


Tutoriel : Accorder l’accès au projet et à la base de données à un nouvel utilisateur

Important

La mise à l’échelle automatique Lakebase est en version bêta dans les régions suivantes : eastus2, westeurope, westus.

La version Autoscaling de Lakebase est la dernière de Lakebase, offrant l'autoscaling, la mise à l'échelle à zéro, la bifurcation et la restauration instantanée. Pour la comparaison des fonctionnalités avec Lakebase Provisioned, consultez le choix entre les versions.

Découvrez comment configurer un nouvel utilisateur avec accès à votre projet et base de données Lakebase. Ce tutoriel traite des autorisations au niveau du projet (pour la gestion des ressources Lakebase) et des autorisations au niveau de la base de données (pour accéder aux données via Postgres).

À propos des deux systèmes d’autorisation

Lakebase Postgres utilise deux couches d’autorisations :

  1. Autorisations de projet (ACL) : contrôlez les actions au niveau de la plateforme, telles que la création de branches, la gestion des calculs et la gestion des paramètres de projet. Celles-ci sont gérées via l’application Lakebase.

  2. Autorisations de rôle Postgres : contrôlez l’accès aux données au sein de la base de données elle-même. Ces commandes sont gérées par le biais de commandes Postgres GRANT standard.

Ces systèmes n’ont aucune synchronisation automatique. Vous pouvez accorder ces autorisations indépendamment ou ensemble, en fonction des exigences de votre organisation :

  • Accordez les deux couches aux utilisateurs qui ont besoin d’un accès à la plateforme et à l’accès à la base de données.
  • Accordez uniquement des autorisations de projet aux utilisateurs qui gèrent l’infrastructure, mais n’ont pas besoin d’interroger des données.
  • Accordez uniquement l’accès à la base de données aux utilisateurs qui ont besoin d’interroger des données, mais n’ont pas besoin de gérer les ressources Lakebase (ils peuvent se connecter à l’aide d’outils tels que psql les détails de connexion).

Ce tutoriel montre comment configurer les deux couches d’accès :

  • Accordez des autorisations de projet afin que les utilisateurs puissent utiliser des ressources de plateforme Lakebase (ce didacticiel utilise CAN MANAGE pour un accès complet, et vous pouvez également accorder l’autorisation CAN USE pour l’accès en mode et utilisation uniquement)
  • Créer un rôle Postgres avec des privilèges de base de données appropriés pour la connexion et l’interrogation de la base de données

Autorisations par défaut

Tous les utilisateurs de l’espace de travail héritent de l’autorisation CAN CREATE par défaut, ce qui permet d’afficher et de créer des projets. Pour accorder un accès supplémentaire aux ressources et bases de données de votre projet, vous devez affecter explicitement CAN USE ou CAN MANAGE.

Prerequisites

  • Projet Lakebase avec une base de données
  • Administrateur de l’espace de travail ou autorisation CAN MANAGE sur le projet
  • Identité Azure Databricks de l’utilisateur (adresse e-mail) dans le même espace de travail que celui où le projet a été créé

Scénario : Ajouter un analyste de données avec un accès en lecture-écriture

Passons en revue l’ajout d’un analyste de données nommé Alex Lopez qui a besoin des éléments suivants :

  • Possibilité de créer et de gérer des branches, des calculs et des bases de données (CAN MANAGE)
  • Accès en lecture et écriture aux tables dans le public schéma de votre base de données Postgres
  • Possibilité de créer de nouvelles tables pour l’analyse

Étape 1 : Accorder des autorisations de projet

Tout d’abord, accordez à l’utilisateur l’autorisation CAN MANAGE afin qu’il puisse effectuer des actions de gestion de projet.

  1. Accédez à votre projet dans l’application Lakebase.
  2. Cliquez sur Paramètres dans la barre latérale gauche.
  3. Faites défiler jusqu’à la section Autorisations du projet .
  4. Cliquez sur Accorder l’autorisation.
  5. Recherchez et sélectionnez l’utilisateur.
  6. Sélectionnez « CAN MANAGE ».
  7. Cliquez sur Accorder.

Accorder l’autorisation CAN MANAGE

Ce que CAN MANAGE autorise :

  • Créer et supprimer des branches
  • Gérer les calculs et configurer les paramètres du projet
  • Créer et gérer des bases de données et des rôles Postgres
  • Contrôle total des opérations de projet

Note

CAN MANAGE accorde un contrôle total sur le projet, y compris de nombreuses autres actions. CAN USE permet d’afficher et d’utiliser des ressources (liste, affichage, URI de connexion et certaines opérations de branche) sans gestion complète. Pour obtenir la liste complète de tous les niveaux d’autorisation et des actions spécifiques, consultez les listes de contrôle d’accès du projet Lakebase.

Étape 2 : Créer un rôle Postgres pour l’utilisateur

Créez maintenant un rôle OAuth qui permet à Alex de s’authentifier à l’aide de leur identité Azure Databricks avec des jetons OAuth. En tant que propriétaire du projet, vous disposez des autorisations nécessaires pour créer des rôles.

  1. Ouvrez l’Éditeur SQL Lakebase et connectez-vous à votre projet.

  2. Créez l’extension (si elle n’est databricks_auth pas déjà activée) :

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  3. Utilisez la databricks_create_role fonction pour créer le rôle OAuth Postgres pour Alex :

    SELECT databricks_create_role('alex.lopez@databricks.com', 'USER');
    

Cela crée un rôle OAuth qui :

  • A le même nom que leur identité Azure Databricks (alex.lopez@databricks.com)
  • Peut s’authentifier à l’aide de jetons OAuth
  • Dispose de privilèges LOGIN
  • N’a pas encore d’autorisations de base de données (nous allons accorder ces autorisations suivantes)

Note

À propos des rôles OAuth :

  • Les rôles OAuth s’authentifient à l’aide de jetons limités dans le temps (expirent après 1 heure)
  • Les utilisateurs obtiennent des jetons à partir de la boîte de dialogue de connexion Lakebase App
  • Idéal pour les sessions interactives et les workflows intégrés à l’espace de travail
  • Pour plus d’informations, consultez À propos de l’authentification

Étape 3 : Accorder des autorisations de base de données Postgres

Accordez maintenant à Alex les autorisations de base de données dont ils ont besoin. Nous leur donnerons un accès en lecture et écriture au schéma public.

-- Grant CONNECT permission on the database
GRANT CONNECT ON DATABASE databricks_postgres TO "alex.lopez@databricks.com";

-- Grant USAGE permission on the public schema (required to access objects in it)
GRANT USAGE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant CREATE permission on the public schema (allows creating new tables)
GRANT CREATE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant read-write access to all existing tables in public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future tables (so Alex can access new tables automatically)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "alex.lopez@databricks.com";

-- Grant permission to use sequences (needed for SERIAL columns)
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future sequences
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT USAGE, SELECT ON SEQUENCES TO "alex.lopez@databricks.com";

Les autorisations suivantes autorisent :

  • CONNECT: Se connecter à la base de données
  • USAGE sur le schéma : Accéder aux objets dans le schéma
  • CREATE sur le schéma : Créer des tables, des vues, des fonctions
  • SELECT, INSERT, UPDATE, DELETE sur les tables : Lire et écrire des données
  • Autorisations de séquence : utiliser des colonnes incrémentées automatiquement

Étape 4 : Tester la connexion

Demandez à Alex de vérifier qu'il peut se connecter et accéder à la base de données.

Utilisation de l’éditeur SQL Lakebase :

  1. Alex ouvre l’application Lakebase et accède à votre projet.

  2. Alex ouvre l’éditeur SQL Lakebase.

  3. Dans l’éditeur SQL, Alex doit pouvoir exécuter les requêtes suivantes pour vérifier les autorisations :

    -- Check role memberships
    SELECT rolname FROM pg_roles WHERE rolname = 'alex.lopez@databricks.com';
    
    -- Verify can read data
    SELECT * FROM your_table LIMIT 5;
    
    -- Verify can write data
    INSERT INTO your_table (column1, column2) VALUES ('test', 'value');
    
    -- Verify can create tables
    CREATE TABLE alex_analysis (
        id SERIAL PRIMARY KEY,
        notes TEXT,
        created_at TIMESTAMP DEFAULT NOW()
    );
    

Vous pouvez également utiliser psql :

Alex peut également se connecter à partir d’outils externes comme psql:

  1. Dans le tableau de bord du projet, cliquez sur Se connecter.
  2. Sélectionnez la branche, le calcul et la base de données.
  3. Dans la liste déroulante Rôles , sélectionnez alex.lopez@databricks.com.
  4. Copiez l'extrait de code de connexion psql.
  5. Cliquez sur Copier le jeton OAuth pour obtenir un jeton d’authentification.
  6. Connectez-vous à l’aide de la commande copiée psql et entrez le jeton OAuth lorsque vous y serez invité pour le mot de passe.
  7. Exécutez les mêmes requêtes de vérification indiquées ci-dessus.

Alternative : Accès à la base de données en lecture seule

Pour les utilisateurs qui ont uniquement besoin d’interroger des données sans les modifier, accordez les mêmes autorisations de projet, mais utilisez des autorisations de base de données plus restrictives :

Autorisations du projet

Accordez CAN USE pour un accès au projet en mode consultation et usage uniquement (par exemple, l'URI de connexion, la liste des branches). Accordez CAN MANAGE pour autoriser la création de bases de données, de rôles et d’autres opérations de projet.

Autorisations de base de données

-- Create OAuth role
SELECT databricks_create_role('analyst@databricks.com', 'USER');

-- Grant CONNECT permission
GRANT CONNECT ON DATABASE databricks_postgres TO "analyst@databricks.com";

-- Grant USAGE on the public schema
GRANT USAGE ON SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT ON TABLES TO "analyst@databricks.com";

-- Grant USAGE on sequences (needed to view sequence values)
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "analyst@databricks.com";

Cela accorde :

  • Accès en lecture à toutes les tables
  • Afficher la structure de base de données
  • Impossible de modifier les données (pas de INSERT, UPDATE, DELETE)
  • Impossible de créer des tables ou d’autres objets

Utilisation de groupes et d'entités de services

Vous pouvez suivre le même processus pour accorder l’accès aux groupes et principaux de service Azure Databricks. Accordez des autorisations de projet via l’interface utilisateur de l’application Lakebase, créez des rôles OAuth à l’aide databricks_create_role()et accordez des autorisations de base de données. Pour plus d’informations, consultez Groupes et entités principales de service.

Utilisation de rôles de mot de passe Postgres natifs

En guise d’alternative aux rôles OAuth, vous pouvez créer des rôles de mot de passe Postgres natifs pour les applications qui ne peuvent pas actualiser les jetons toutes les heures, les processus de longue durée ou les outils externes qui ne prennent pas en charge OAuth. Pour obtenir des instructions sur la création et la gestion des rôles de mot de passe, consultez Gérer les rôles Postgres.

Étapes suivantes