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.
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
-
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 :SQLCREATE ROLE temp_table_owners NOLOGIN; -
Accordez les autorisations de schéma au rôle temporaire :
SQLGRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners; -
Accordez l’adhésion au rôle temporaire au propriétaire actuel et au groupe cible :
SQLGRANT temp_table_owners TO "<current_owner>";
GRANT temp_table_owners TO "<databricks_group_name>"; -
Transférer la propriété de la table au rôle temporaire :
SQLALTER TABLE <target_table> OWNER TO temp_table_owners; -
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 . -
Connectez-vous en tant que rôle
<databricks_group_name>:Bashexport PGPASSWORD='<oauth_token>'
psql -h <lakebase_hostname> -p 5432 \
-d <database_name> \
-U "<databricks_group_name>" \
--set=sslmode=require -
Transférez la table au rôle de groupe Databricks :
SQLALTER TABLE <target_table> OWNER TO "<databricks_group_name>"; -
Vérifiez le transfert :
Text\dtLa 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.
-
Connectez-vous en tant que rôle
<current_owner>, puis créez un rôle de propriété partagée temporaire :SQLCREATE ROLE temp_table_owners NOLOGIN; -
Accordez les autorisations de schéma au rôle temporaire :
SQLGRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners; -
Accordez l’adhésion au rôle temporaire au propriétaire actuel et au groupe cible :
SQLGRANT temp_table_owners TO "<current_owner>";
GRANT temp_table_owners TO "<databricks_group_name>"; -
Réattribuer tous les objets appartenant au propriétaire actuel au rôle temporaire :
SQLREASSIGN OWNED BY "<current_owner>" TO temp_table_owners; -
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 . -
Connectez-vous en tant que rôle
<databricks_group_name>:Bashexport PGPASSWORD='<oauth_token>'
psql -h <lakebase_hostname> -p 5432 \
-d <database_name> \
-U "<databricks_group_name>" \
--set=sslmode=require -
Réaffectez tous les objets du rôle temporaire au groupe Databricks :
SQLREASSIGN OWNED BY temp_table_owners TO "<databricks_group_name>";
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.