Tutoriel : Accorder l'accès au projet et à la base de données à un nouvel utilisateur
Découvrez comment configurer un nouvel utilisateur avec accès à votre projet et à votre base de données Lakebase. Ce tutoriel couvre les autorisations au niveau du projet (pour la gestion des ressources Lakebase) et les autorisations au niveau de la base de données (pour l'accès aux données via Postgres).
À propos des deux systèmes d'autorisation
Lakebase Postgres utilise deux couches d'autorisations :
-
Autorisations de projet (ACL) : Contrôlent les actions au niveau de la plateforme, telles que la création de Branch, la gestion des computes et la gestion des paramètres de projet. Celles-ci sont gérées via l'application Lakebase.
-
Autorisations de rôle Postgres : contrôlez l'accès aux données au sein de la base de données elle-même. Ceux-ci sont gérés via des commandes Postgres
GRANTstandard.
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 à la base de données.
- Accordez uniquement les autorisations de projet aux utilisateurs qui gèrent l’infrastructure mais n’ont pas besoin de query les données.
- N'accordez l'accès à la base de données qu'aux utilisateurs qui ont besoin d'interroger des données mais pas de gérer les ressources Lakebase (ils peuvent se connecter à l'aide d'outils comme
psqlavec les détails de connexion).
Ce tutoriel montre comment configurer les deux couches d'accès :
- Accorder des autorisations de projet afin que les utilisateurs puissent travailler avec les ressources de la plateforme Lakebase (ce tutoriel utilise CAN MANAGE pour un accès complet, et vous pouvez également accorder CAN USE pour un accès en affichage et utilisation uniquement)
- Créez un rôle Postgres avec les privilèges de base de données appropriés pour vous connecter à la base de données et l'interroger
Autorisations default
Tous les utilisateurs du Workspace héritent de la permission CAN CREATE par défaut, ce qui permet de visualiser 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 explicitement attribuer CAN USE ou CAN MANAGE.
Prérequis
- Un projet Lakebase avec une base de données
- Administrateur Workspace ou permission CAN MANAGE sur le projet
- L’identité Databricks de l’utilisateur (adresse e-mail) dans le même Workspace où le projet a été créé
Scénario : Ajouter un data analyst avec un accès en lecture-écriture
Voyons comment ajouter un data analyst nommé Alex Lopez qui a besoin de :
- Possibilité de créer et de gérer des branches, des computes et des bases de données (CAN MANAGE)
- Accès en lecture et en écriture aux tables du schéma
publicde votre base de données Postgres - Possibilité de créer de nouvelles tables pour l'analyse
Étape 1 : Accorder les autorisations du projet
Tout d'abord, accordez à l'utilisateur l'autorisation CAN MANAGE afin qu'il puisse effectuer des actions de gestion de projet.
- Accédez à votre projet dans l'application Lakebase.
- Cliquez sur Paramètres dans la barre latérale gauche.
- Faites défiler jusqu'à la section **Autorisations du projet**.
- Cliquez sur Accorder l'autorisation .
- Recherchez et sélectionnez l'utilisateur.
- Select CAN MANAGE permission.
- Cliquez sur Accorder .

Ce que CAN MANAGE permet :
- Créer et supprimer des branches
- Gérer le compute 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 sur les Opérations de projet
CAN MANAGE octroie un contrôle total sur le projet, y compris de nombreuses autres actions. CAN USE permet de visualiser et d'utiliser les ressources (lister, afficher, obtenir l'URI de connexion et certaines opérations de branch) sans gestion complète. Pour une liste complète de tous les niveaux d'autorisation et des actions spécifiques autorisées par chacun, consultez les listes de contrôle d'accès de 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 en utilisant son identité Databricks avec des jetons OAuth. En tant que propriétaire du projet, vous disposez des autorisations nécessaires pour créer des rôles.
-
Ouvrez l'Éditeur SQL Lakebase et connectez-vous à votre projet.
-
Créez l'extension
databricks_auth(si elle n'est pas déjà activée) :SQLCREATE EXTENSION IF NOT EXISTS databricks_auth; -
Utilisez la fonction
databricks_create_rolepour créer le rôle OAuth Postgres pour Alex :SQLSELECT databricks_create_role('alex.lopez@databricks.com', 'USER');
Ceci crée un rôle OAuth qui :
- Porte le même nom que leur identité Databricks (
alex.lopez@databricks.com) - Possibilité de s'authentifier à l'aide de jetons OAuth.
- Possède les privilèges de connexion
- N'a pas encore de permissions de base de données (nous les accorderons ensuite)
À propos des rôles OAuth :
- Les rôles OAuth s'authentifient à l'aide de jetons à durée limitée (ils expirent après 1 heure).
- Les utilisateurs obtiennent des jetons à partir de la boîte de dialogue de connexion de l'application Lakebase
- Idéal pour les sessions interactives et les workflows intégrés au Workspace.
- Pour plus d’informations, consultez À propos de l’authentification
Étape 3 : Accorder les autorisations de base de données Postgres
Accordez maintenant à Alex les permissions de base de données dont il a besoin. Nous leur accorderons un accès en lecture-é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";
Ce que ces autorisations permettent :
CONNECT: Se connecter à la base de donnéesUSAGEsur le schéma : Accédez aux objets au sein du schémaCREATEsur le schéma : créer de nouvelles tables, vues, fonctionsSELECT, INSERT, UPDATE, DELETEsur les tables : lire et écrire les données- Autorisations de séquence : Utiliser des colonnes à incrémentation automatique
Étape 4 : Tester la connexion
Demandez à Alex de vérifier qu’il peut se connecter à la base de données et y accéder.
Utilisation de l'éditeur SQL Lakebase :
-
Alex ouvre l'application Lakebase et navigue jusqu'à votre projet.
-
Alex ouvre l'éditeur SQL Lakebase.
-
Dans l'éditeur SQL, Alex devrait pouvoir exécuter les queries suivantes pour vérifier les autorisations :
SQL-- 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()
);
Alternativement, en utilisant PSQL :
Alex peut également se connecter à partir d’outils externes comme psql:
- Depuis le tableau de bord du projet, cliquez sur Connecter .
- Sélectionnez la Branch, le compute et la base de données.
- Dans la liste déroulante **Rôles**,
alex.lopez@databricks.comsélectionnez. - Copiez l'extrait de connexion
psql. - Cliquez sur Copier le jeton OAuth pour obtenir un jeton d'authentification.
- Connectez-vous en utilisant la commande
psqlcopiée et saisissez le jeton OAuth lorsque le mot de passe vous est demandé. - Exécutez les mêmes requêtes de vérification présentées ci-dessus.
Alternative : Accès à la base de données en lecture seule
Pour les utilisateurs qui ont seulement besoin d'interroger les 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 l'accès au projet en lecture et en utilisation uniquement (par exemple, URI de connexion, listez les Branch). Accordez CAN MANAGE pour permettre 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";
Ceci accorde :
- Accès en lecture à toutes les tables
- Afficher la structure de la base de données
- Impossible de modifier les données (pas d'INSERT, d'UPDATE, de DELETE)
- Impossible de créer des tables ou d'autres objets.
Travailler avec les groupes et les Service Principal
Vous pouvez suivre le même processus pour accorder l’accès aux groupes Databricks et aux principaux de service. Accordez les autorisations de projet via l'interface utilisateur de l'application Lakebase, créez des rôles OAuth à l'aide de databricks_create_role() et accordez des autorisations de base de données. Pour plus d’information, consultez Groupes et Principaux de service.
Utilisation des rôles de mot de passe natifs de Postgres
Comme alternative aux rôles OAuth, vous pouvez créer des rôles de mot de passe natifs Postgres pour les applications qui ne peuvent pas refresh 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 Manage Postgres roles.