Aller au contenu principal

Transfert de la propriété d'objet Postgres

Dans Lakebase, utilisez un rôle partagé temporaire comme étape intermédiaire pour transférer la propriété d'objet Postgres entre les rôles. Vous ne pouvez pas faire cela directement avec une commande ALTER TABLE ... OWNER TO standard.

remarque

Cette page explique comment transférer la propriété à un rôle de groupe Databricks. Pour accorder l'accès aux objets sans modifier la propriété, consultez Gérer les autorisations de base de données.

Prérequis

  • Le groupe Databricks cible existe dans votre workspace. Pour créer un groupe : dans Lakehouse, accédez à Paramètres > Identité et accès > Groupes > Ajouter un groupe .
  • Le propriétaire actuel de l'objet est membre du groupe cible. Pour ajouter un membre : Dans Lakehouse, accédez à **Paramètres** > **Identité et accès** > **Groupes** > votre groupe > **Ajouter un membre**.
  • Un rôle Postgres existe pour le groupe Databricks. Consultez Créer un rôle OAuth pour les identités Databricks pour ajouter un rôle Postgres pour le groupe.

Transférer la propriété d'un objet unique

  1. Connectez-vous en tant que rôle <current_owner> (le rôle qui possède actuellement la table), puis créez un rôle de propriété partagée temporaire :

    SQL
    CREATE ROLE temp_table_owners NOLOGIN;
  2. Accordez les autorisations de schéma au rôle temporaire :

    SQL
    GRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners;
  3. Accordez l’adhésion au rôle temporaire au propriétaire actuel et au groupe cible :

    SQL
    GRANT temp_table_owners TO "<current_owner>";
    GRANT temp_table_owners TO "<databricks_group_name>";
  4. Transférer la propriété de la table au rôle temporaire :

    SQL
    ALTER TABLE <target_table> OWNER TO temp_table_owners;
  5. Dans votre projet Lakebase, cliquez sur Connect , sélectionnez le rôle <databricks_group_name> dans la liste déroulante Roles , puis cliquez sur Copy OAuth Token .

  6. Connectez-vous en tant que rôle <databricks_group_name> :

    Bash
    export PGPASSWORD='<oauth_token>'
    psql -h <lakebase_hostname> -p 5432 \
    -d <database_name> \
    -U "<databricks_group_name>" \
    --set=sslmode=require
  7. Transférez la table au rôle de groupe Databricks :

    SQL
    ALTER TABLE <target_table> OWNER TO "<databricks_group_name>";
  8. Vérifiez le transfert :

    Text
    \dt

    La colonne **Propriétaire** pour <target_table> <databricks_group_name>affiche.

Transférer la propriété de plusieurs objets

REASSIGN OWNED transfère tous les objets possédés par un rôle, y compris les tables, les vues, les vues matérialisées, les séquences, les fonctions, les schémas et les types.

  1. Connectez-vous en tant que rôle <current_owner>, puis créez un rôle de propriété partagée temporaire :

    SQL
    CREATE ROLE temp_table_owners NOLOGIN;
  2. Accordez les autorisations de schéma au rôle temporaire :

    SQL
    GRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners;
  3. Accordez l’adhésion au rôle temporaire au propriétaire actuel et au groupe cible :

    SQL
    GRANT temp_table_owners TO "<current_owner>";
    GRANT temp_table_owners TO "<databricks_group_name>";
  4. Réattribuer tous les objets appartenant au propriétaire actuel au rôle temporaire :

    SQL
    REASSIGN OWNED BY "<current_owner>" TO temp_table_owners;
  5. Dans votre projet Lakebase, cliquez sur Connect , sélectionnez le rôle <databricks_group_name> dans la liste déroulante Roles , puis cliquez sur Copy OAuth Token .

  6. Connectez-vous en tant que rôle <databricks_group_name> :

    Bash
    export PGPASSWORD='<oauth_token>'
    psql -h <lakebase_hostname> -p 5432 \
    -d <database_name> \
    -U "<databricks_group_name>" \
    --set=sslmode=require
  7. Réaffectez tous les objets du rôle temporaire au groupe Databricks :

    SQL
    REASSIGN OWNED BY temp_table_owners TO "<databricks_group_name>";
remarque

REASSIGN OWNED a le comportement suivant :

  • S’exécute dans le contexte de la base de données actuelle. Exécutez-la dans chaque base de données où vous devez transférer la propriété.
  • Réattribue uniquement la propriété. Il ne modifie pas les autorisations existantes de GRANT ou les privilèges default.

Ressources supplémentaires