Pular para o conteúdo principal

Transferir a propriedade de objetos do Postgres

info

Lakebase autoscale é a versão mais recente do Lakebase, com recursos como autoscale compute, escala-to-zero, branching e instant restore. Para regiões compatíveis, consulte Disponibilidade por região. Se você é usuário de provisionamento Lakebase , consulte ProvisionamentoLakebase.

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

nota

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

Pré-requisitos

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

Transferir a propriedade de um único objeto

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

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

    SQL
    GRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners;
  3. Conceder a adesão temporária ao proprietário atual e ao grupo-alvo:

    SQL
    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:

    SQL
    ALTER TABLE <target_table> OWNER TO temp_table_owners;
  5. No seu projeto Lakebase , clique em Conectar , selecione a função <databricks_group_name> no menu suspenso Funções e clique em Copiar tokens OAuth .

  6. Conecte-se como a função <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. Transfira a tabela para a função de grupo do Databricks:

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

    Text
    \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, visualizações, visualizações materializadas, sequências, funções, esquemas e tipos.

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

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

    SQL
    GRANT USAGE, CREATE ON SCHEMA public TO temp_table_owners;
  3. Conceder a adesão temporária ao proprietário atual e ao grupo-alvo:

    SQL
    GRANT temp_table_owners TO "<current_owner>";
    GRANT temp_table_owners TO "<databricks_group_name>";
  4. Reatribua todos os objetos pertencentes ao proprietário atual à função temporária:

    SQL
    REASSIGN OWNED BY "<current_owner>" TO temp_table_owners;
  5. No seu projeto Lakebase , clique em Conectar , selecione a função <databricks_group_name> no menu suspenso Funções e clique em Copiar tokens OAuth .

  6. Conecte-se como a função <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. Reatribua todos os objetos da função temporária ao grupo Databricks:

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

REASSIGN OWNED apresenta o seguinte comportamento:

  • execução no contexto do banco de dados atual. execute-o em cada banco de dados onde você precisa transferir a propriedade.
  • Apenas reatribui a propriedade. Não altera as permissões GRANT existentes nem os privilégios default .

Próximos passos