Partager via


Créer des rôles Postgres

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.

Lorsque vous créez un projet, Lakebase crée plusieurs rôles Postgres dans le projet :

  • Rôle Postgres pour l’identité Azure Databricks du propriétaire du projet (par exemple, user@databricks.com), qui possède la base de données par défaut databricks_postgres
  • Un databricks_superuser rôle administratif

La databricks_postgres base de données est créée pour vous permettre de vous connecter et d’essayer Lakebase immédiatement après la création du projet.

Plusieurs rôles gérés par le système sont également créés. Il s’agit de rôles internes utilisés par les services Azure Databricks pour la gestion, la supervision et les opérations de données.

Note

Les rôles Postgres contrôlent l’accès à la base de données (qui peut interroger des données). Pour les autorisations de projet (qui peuvent gérer l’infrastructure), consultez Autorisations de projet. Pour obtenir un didacticiel sur la configuration des deux, consultez Tutoriel : Accorder l’accès au projet et à la base de données à un nouvel utilisateur.

Consultez les rôles précréés et les rôles système.

Créer des rôles Postgres

Lakebase prend en charge deux types de rôles Postgres pour l’accès à la base de données :

  • Rôles OAuth pour les identités Azure Databricks : Créez-les à l’aide de l’extension databricks_auth et de SQL. Permet aux identités Azure Databricks (utilisateurs, principaux de service et groupes) de se connecter à l’aide de jetons OAuth.
  • Rôles de mot de passe Postgres natifs : Créez-les à l’aide de l’interface utilisateur Lakebase ou de SQL. Utilisez n’importe quel nom de rôle valide avec l’authentification par mot de passe.

Pour obtenir des conseils sur le choix du type de rôle à utiliser, consultez vue d’ensemble de l’authentification. Chacun est conçu pour différents cas d’usage.

Créer un rôle OAuth pour une identité Azure Databricks à l’aide de SQL

Pour permettre aux identités Azure Databricks (utilisateurs, principaux de service ou groupes) de se connecter à l’aide de jetons OAuth, vous devez créer leurs rôles Postgres à l’aide de l’extension databricks_auth . La création d’un rôle pour un groupe permet à tous les membres du groupe de s’authentifier à l’aide du rôle de groupe, ce qui simplifie la gestion des autorisations.

Pour obtenir des instructions détaillées sur l’obtention de jetons OAuth dans des flux d’ordinateur à ordinateur et d’ordinateur à machine, consultez Obtenir un jeton OAuth dans un flux utilisateur à machine et obtenir un jeton OAuth dans un flux d’ordinateur à ordinateur dans la documentation d’authentification.

Configuration requise :

  • Vous devez disposer des autorisations CREATE et CREATE ROLE sur la base de données
  • Vous devez être authentifié en tant qu’identité Azure Databricks avec un jeton OAuth valide
  • Les sessions authentifiées Postgres natives ne peuvent pas créer de rôles OAuth

Pour créer un rôle OAuth :

  1. Créez l’extension databricks_auth . Chaque base de données Postgres doit avoir sa propre extension.

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  2. Utilisez la databricks_create_role fonction pour créer un rôle Postgres pour l’identité Azure Databricks :

    SELECT databricks_create_role('identity_name', 'identity_type');
    

    Pour un utilisateur Azure Databricks :

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

    Pour un service principal Azure Databricks :

    SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08', 'SERVICE_PRINCIPAL');
    

    Pour un groupe Azure Databricks :

    SELECT databricks_create_role('My Group Name', 'GROUP');
    

    Le nom du groupe respecte la casse et doit correspondre exactement comme il apparaît dans votre espace de travail Azure Databricks. Lorsque vous créez un rôle Postgres pour un groupe, tout membre direct ou indirect (utilisateur ou principal de service) de ce groupe Databricks peut s’authentifier auprès de Postgres en tant que rôle de groupe à l’aide de son jeton OAuth individuel. Cela vous permet de gérer les autorisations au niveau du groupe dans Postgres au lieu de conserver des autorisations pour des utilisateurs individuels.

  3. Accordez des autorisations de base de données au rôle nouvellement créé.

La fonction databricks_create_role() crée un rôle Postgres avec uniquement les permissions LOGIN. Après avoir créé le rôle, vous devez accorder les privilèges et autorisations de base de données appropriés sur les bases de données, schémas ou tables spécifiques auxquels l’utilisateur doit accéder. Découvrez comment : gérer les autorisations

Authentification basée sur un groupe

Lorsque vous créez un rôle Postgres pour un groupe Azure Databricks, vous activez l’authentification basée sur un groupe. Cela permet à tout membre du groupe Azure Databricks de s’authentifier auprès de Postgres à l’aide du rôle du groupe, ce qui simplifie la gestion des autorisations.

Fonctionnement :

  1. Créez un rôle Postgres pour un groupe Databricks à l'aide de databricks_create_role('Group Name', 'GROUP').
  2. Accordez des autorisations de base de données au rôle de groupe dans Postgres. Consultez Gérer les autorisations.
  3. Tout membre direct ou indirect (utilisateur ou principal de service) du groupe Databricks peut se connecter à Postgres à l’aide de son jeton OAuth individuel.
  4. Lors de la connexion, le membre s’authentifie en tant que rôle de groupe et hérite de toutes les autorisations accordées à ce rôle.

Flux d’authentification :

Lorsqu’un membre du groupe se connecte, il spécifie le nom du rôle Postgres du groupe comme nom d’utilisateur et son propre jeton OAuth comme mot de passe :

export PGPASSWORD='<OAuth token of a group member>'
export GROUP_ROLE_NAME='<pg-case-sensitive-group-role-name>'

psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUP_ROLE_NAME

Considérations importantes :

  • Validation de l’appartenance au groupe : L’appartenance au groupe est validée uniquement au moment de l’authentification. Si un membre est supprimé du groupe Azure Databricks après avoir établi une connexion, la connexion reste active. Les nouvelles tentatives de connexion des membres supprimés sont rejetées.
  • Étendue de l’espace de travail : Seuls les groupes affectés au même espace de travail Azure Databricks que le projet sont pris en charge pour l’authentification basée sur un groupe. Pour savoir comment affecter des groupes à un espace de travail, consultez Gérer les groupes.
  • Sensibilité de la casse : Le nom du groupe utilisé dans databricks_create_role() doit correspondre exactement au nom du groupe tel qu’il apparaît dans votre espace de travail Azure Databricks, y compris le cas.
  • Gestion des autorisations : La gestion des autorisations au niveau du groupe dans Postgres est plus efficace que la gestion des autorisations utilisateur individuelles. Lorsque vous accordez des autorisations au rôle de groupe, tous les membres actuels et futurs du groupe héritent automatiquement de ces autorisations.

Note

Les noms de rôles ne peuvent pas dépasser 63 caractères et certains noms ne sont pas autorisés. En savoir plus : Gérer les rôles

Créer un rôle de mot de passe Postgres natif

Vous pouvez créer des rôles de mot de passe Postgres natifs à l’aide de l’interface utilisateur Lakebase ou des commandes SQL standard.

Utilisation de l’interface utilisateur :

  1. Dans l’application Lakebase, accédez à la page vue d’ensemble de votre branche, puis à l’onglet Rôles et bases de données de la branche.
  2. Cliquez sur Ajouter un rôle et spécifiez un nom de rôle (n’importe quel nom de rôle Postgres valide).

Ajouter un rôle Postgres

  1. Cliquez sur Créer.
  2. Copiez le mot de passe généré et fournissez-le en toute sécurité à l’utilisateur qui utilisera ce rôle.

L’interface utilisateur Lakebase génère automatiquement un mot de passe sécurisé avec l’entropie 60 bits. Les rôles créés via l’interface utilisateur reçoivent automatiquement l’appartenance au databricks_superuser rôle, qui fournit des privilèges de base de données étendus.

Utilisation de SQL :

Vous pouvez également créer des rôles de mot de passe Postgres natifs à l’aide de commandes Postgres SQL standard :

CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';

Lors de la création de rôles avec SQL, le mot de passe doit comporter au moins 12 caractères avec un mélange de caractères minuscules, majuscules, nombre et symboles. Les mots de passe définis par l’utilisateur sont validés au moment de la création pour garantir l’entropie 60 bits.

Afficher les rôles Postgres

IU

Pour afficher tous les rôles Postgres dans votre projet, accédez à l’onglet Rôles et bases de données de votre branche dans l’application Lakebase. Tous les rôles créés dans la branche, à l’exception des rôles système, sont répertoriés, y compris les rôles Postgres natifs avec l’authentification par mot de passe.

Afficher le rôle Postgres

PostgreSQL

Affichez tous les rôles avec \du la commande :

Vous pouvez afficher tous les rôles Postgres, y compris les rôles système, à l’aide de la \du méta-commande à partir de n’importe quel client Postgres (par exemple psql) ou de l’éditeur SQL Lakebase :

\du
                                      List of roles
          Role name          |                         Attributes
-----------------------------+------------------------------------------------------------
 cloud_admin                 | Superuser, Create role, Create DB, Replication, Bypass RLS
 my.user@databricks.com      | Create role, Create DB, Bypass RLS
 databricks_control_plane    | Superuser
 databricks_gateway          |
 databricks_monitor          |
 databricks_reader_12345     | Create role, Create DB, Replication, Bypass RLS
 databricks_replicator       | Replication
 databricks_superuser        | Create role, Create DB, Cannot login, Bypass RLS
 databricks_writer_12345     | Create role, Create DB, Replication, Bypass RLS

Cela affiche tous les rôles et leurs attributs (Superutilisateur, Créer un rôle, Créer une base de données, etc.).

Supprimer un rôle Postgres

Vous pouvez supprimer les rôles databricks basés sur les identités et les rôles de mot de passe Postgres natifs.

IU

La suppression d’un rôle est une action permanente qui ne peut pas être annulée. Vous ne pouvez pas supprimer un rôle propriétaire d’une base de données. La base de données doit être supprimée avant de supprimer le rôle propriétaire de la base de données.

Pour supprimer n’importe quel rôle Postgres à l’aide de l’interface utilisateur :

  1. Accédez à l’onglet Rôles et bases de données de votre branche dans l’application Lakebase.
  2. Sélectionnez Supprimer le rôle dans le menu rôle et confirmez la suppression.

PostgreSQL

Vous pouvez supprimer n’importe quel rôle Postgres à l’aide de commandes Postgres standard. Pour plus d’informations, consultez la documentation PostgreSQL sur la suppression de rôles.

Supprimez un rôle :

DROP ROLE role_name;

Une fois qu’un rôle basé sur l’identité Azure Databricks est supprimé, cette identité ne peut plus s’authentifier auprès de Postgres à l’aide de jetons OAuth jusqu’à ce qu’un nouveau rôle soit créé.

Rôles précréés

Une fois qu’un projet est créé, Azure Databricks crée automatiquement des rôles Postgres pour l’administration de projet et la prise en main.

Role Descriptif Privilèges hérités
<project_owner_role> Identité Azure Databricks du créateur de projet (par exemple). my.user@databricks.com Ce rôle possède la base de données par défaut databricks_postgres et peut se connecter et administrer le projet. Membre de databricks_superuser
databricks_superuser Rôle d’administration interne. Permet de configurer et de gérer l’accès dans le projet. Ce rôle reçoit de larges privilèges. Hérite de pg_read_all_data, pg_write_all_dataet pg_monitor.

En savoir plus sur les fonctionnalités et privilèges spécifiques de ces rôles : fonctionnalités de rôle précréé

Rôles système créés par Azure Databricks

Azure Databricks crée les rôles système suivants requis pour les services internes. Vous pouvez afficher ces rôles en émettant une \du commande à partir de psql ou dans l’éditeur SQL Lakebase.

Role Objectif
cloud_admin Rôle superutilisateur utilisé pour la gestion de l’infrastructure cloud
databricks_control_plane Rôle superutilisateur utilisé par les composants Databricks internes pour les opérations de gestion
databricks_monitor Utilisé par les services de collecte de métriques internes
databricks_replicator Utilisé pour les opérations de réplication de base de données
databricks_writer_<dbid> Rôle par base de données utilisé pour créer et gérer des tables synchronisées
databricks_reader_<dbid> Rôle par base de données utilisé pour lire les tables inscrites dans le catalogue Unity
databricks_gateway Utilisé pour les connexions internes pour les services de service de données managées

Pour savoir comment fonctionnent les rôles, les privilèges et les appartenances aux rôles dans Postgres, utilisez les ressources suivantes dans la documentation Postgres :

Étapes suivantes