Transferir a propriedade do objeto Postgres

Important

O Dimensionamento Automático do Lakebase é a versão mais recente do Lakebase, com computação de dimensionamento automático, escala para zero, ramificação e restauração instantânea. Para regiões com suporte, consulte a disponibilidade da região. Se você for um usuário provisionado do Lakebase, consulte Lakebase Provisioned.

No Lakebase, use uma função compartilhada temporária como uma etapa intermediária para transferir a propriedade do objeto Postgres entre funções. Você não pode fazer isso diretamente com um comando padrão ALTER TABLE ... OWNER TO .

Note

Esta página aborda a transferência de propriedade para uma função de grupo Azure Databricks. Para conceder acesso a objetos sem alterar a propriedade, consulte Gerenciar permissões de banco de dados.

Pré-requisitos

  • O grupo de Azure Databricks de destino existe em seu workspace. Para criar um grupo: No Lakehouse, vá para Configurações>Identidade e acesso>Grupos>Adicionar Grupo.
  • O proprietário do objeto atual é um membro do grupo de destino. Para adicionar um membro: no Lakehouse, vá para Configurações>Identidade e acesso>Grupos> seu grupo >Adicionar membro.
  • Existe uma função Postgres para o grupo Azure Databricks. Consulte Criar uma função OAuth para identidades Azure Databricks para adicionar uma função Postgres ao grupo.

Transferir a propriedade de um único objeto

  1. Conecte-se como a <current_owner> função (a função que atualmente possui a tabela) e crie uma função de propriedade compartilhada temporária:

    CREATE ROLE temp_table_owners NOLOGIN;
    
  2. Conceda permissões de esquema à função temporária:

    GRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners;
    
  3. Conceda a associação na função temporária ao proprietário atual e ao grupo de destino:

    GRANT temp_table_owners TO "<current_owner>";
    GRANT temp_table_owners TO "<databricks_group_name>";
    
  4. Transferir a propriedade da tabela para a função temporária:

    ALTER TABLE <target_table> OWNER TO temp_table_owners;
    
  5. Em seu projeto do Lakebase, clique em Conectar, selecione a <databricks_group_name> função na lista suspensa Funções e clique em Copiar Token OAuth.

  6. Conecte-se como a <databricks_group_name> função:

    export PGPASSWORD='<oauth_token>'
    psql -h <lakebase_hostname> -p 5432 \
      -d <database_name> \
      -U "<databricks_group_name>" \
      --set=sslmode=require
    
  7. Transfira a tabela para o grupo de funções do Azure Databricks:

    ALTER TABLE <target_table> OWNER TO "<databricks_group_name>";
    
  8. Verifique a transferência:

    \dt
    

    A coluna Proprietário para <target_table> mostra <databricks_group_name>.

Transferir a propriedade de vários objetos

REASSIGN OWNED transfere todos os objetos pertencentes a uma função, incluindo tabelas, exibições, exibições materializadas, sequências, funções, esquemas e tipos.

  1. Conecte-se como a <current_owner> função e crie uma função de propriedade compartilhada temporária:

    CREATE ROLE temp_table_owners NOLOGIN;
    
  2. Conceda permissões de esquema à função temporária:

    GRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners;
    
  3. Conceda a associação na função temporária ao proprietário atual e ao grupo de destino:

    GRANT temp_table_owners TO "<current_owner>";
    GRANT temp_table_owners TO "<databricks_group_name>";
    
  4. Reatribua todos os objetos de propriedade do proprietário atual para a função temporária:

    REASSIGN OWNED BY "<current_owner>" TO temp_table_owners;
    
  5. Em seu projeto do Lakebase, clique em Conectar, selecione a <databricks_group_name> função na lista suspensa Funções e clique em Copiar Token OAuth.

  6. Conecte-se como a <databricks_group_name> função:

    export PGPASSWORD='<oauth_token>'
    psql -h <lakebase_hostname> -p 5432 \
      -d <database_name> \
      -U "<databricks_group_name>" \
      --set=sslmode=require
    
  7. Reatribua todos os objetos da função temporária para o grupo Azure Databricks:

    REASSIGN OWNED BY temp_table_owners TO "<databricks_group_name>";
    

Note

REASSIGN OWNED tem o seguinte comportamento:

  • É executado no contexto atual do banco de dados. Execute-o em cada banco de dados em que você deve transferir a propriedade.
  • Reatribui apenas a propriedade. Ele não altera permissões existentes GRANT ou privilégios padrão.

Próximas Etapas