Pular para o conteúdo principal

Criar e gerenciar funções do Postgres para identidades do Databricks

info

Visualização

Esse recurso está em Public Preview nas seguintes regiões: us-east-1, us-west-2, eu-west-1, ap-southeast-1, ap-southeast-2, eu-central-1, us-east-2, ap-south-1.

Uma função Postgres para a identidade Databricks do proprietário da instância do banco de dados Lakebase é criada automaticamente. Inicialmente, somente o proprietário da instância pode log in e acessar a instância por meio do Postgres. Para permitir que outras Databricks identidades acessem log in a instância do banco de dados, o proprietário precisa criar as funções correspondentes do Postgres.

Esta página descreve como adicionar e gerenciar funções adicionais baseadas em identidade da Databricks no PostgreSQL.

Criar funções do Postgres com base nas identidades do Databricks

Antes de criar novas funções do Postgres, verifique se você atende aos seguintes requisitos:

  • Você deve ter as permissões CREATE e CREATE ROLE no banco de dados.
  • O senhor deve se autenticar e acessar log in como uma identidade Databricks (usuário, entidade de serviço ou grupo). As sessões autenticadas do Postgres nativo não podem criar funções do Databricks.
  • Seus tokens de autenticação devem ser válidos e não ter expirado no momento da criação da função.

Use a função databricks_create_role para adicionar e criar funções do PostgreSQL baseadas em identidade da Databricks. A extensão personalizada do PostgreSQL databricks_auth fornece a função databricks_create_role.

  1. Crie a extensão databricks_auth. Cada banco de dados Postgres deve ter sua própria extensão.

    SQL
    CREATE EXTENSION IF NOT EXISTS databricks_auth;
  2. Use a função databricks_create_role para adicionar e criar novas funções do Postgres para identidades do Databricks. A função ainda não deve existir. Se existir uma função com o mesmo nome, elimine-a antes de criar a função baseada em identidade do Databricks.

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

    Os parâmetros identity_name e identity_type dependem do tipo de identidade do Databricks:

    • Usuário da Databricks:

      • identity_name: e-mail do usuário, por exemplo. myuser@databricks.com
      • tipo_identidade: USER
      SQL
      SELECT databricks_create_role('myuser@databricks.com','USER');
    • Databricks entidade de serviço:

      • identity_name: ID do aplicativo da entidade de serviço, por exemplo. 8c01cfb1-62c9-4a09-88a8-e195f4b01b08
      • tipo_identidade: SERVICE_PRINCIPAL
      SQL
      SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08','SERVICE_PRINCIPAL');
    • Grupo Databricks:

      • identity_name: Nome do grupo (diferencia maiúsculas de minúsculas): My Group 123
      • tipo_identidade: GROUP
      SQL
      SELECT databricks_create_role('My Group 123','GROUP');

Conceder privilégios às funções do Postgres

Uma função criada usando databricks_create_role só tem privilégios concedidos a PUBLIC após a criação. Para conceder ou revogar privilégios adicionais, use o comando padrão de gerenciamento de privilégios do Postgres GRANT e REVOKE.

Dê permissão de leitura à função para acessar uma tabela.

SQL
GRANT SELECT ON "my_schema"."my_table" TO <role-name>;

Remova o acesso de gravação a uma tabela da função.

SQL
REVOKE INSERT, UPDATE, DELETE ON TABLE "my_schema"."my_table" FROM <role-name>;

Revogue todo o acesso da função a um banco de dados.

SQL
REVOKE CONNECT ON DATABASE "example_database" FROM <role-name>;

Visualizar Databricks funções de identidade

Para listar todas as funções de identidade Databricks criadas por default e usando a função databricks_create_role, use a função databricks_list_roles na extensão databricks_auth. Lista todos os usuários do Databricks, entidade de serviço e grupos adicionados para autenticação como funções do Postgres.

SQL
CREATE EXTENSION IF NOT EXISTS databricks_auth;
SQL
SELECT * from databricks_list_roles;

Autenticar como funções do Postgres baseadas em identidade da Databricks

Depois que uma função do Postgres é criada para uma identidade do Databricks seguindo as etapas acima, ela pode ser usada para fazer login no Postgres com base no tipo de identidade:

Autenticar como usuário ou entidade de serviço Databricks

A autenticação no Postgres com um usuário ou entidade de serviço Databricks é o mesmo que a autenticação no Postgres com tokensOAuth.

Autenticar como grupo Databricks

Os grupos e as associações de grupos não são sincronizados do Databricks para o Postgres, nem as permissões do Unity Catalog. No entanto, depois que um grupo Databricks é adicionado ao Postgres, qualquer usuário Databricks do grupo pode log in como o grupo usando a senha do usuário. Isso permite que o senhor gerencie as permissões no nível do grupo no Postgres. Qualquer membro direto ou indireto (usuário ou entidade de serviço) da identidade do grupo Databricks pode se autenticar no Postgres e no log in como a função Postgres do grupo Databricks.

Ao autenticar como uma identidade de grupo usando tokens de usuário ou de entidade de serviço, a associação ao grupo só é validada no momento da autenticação. Qualquer conexão aberta anteriormente com tokens de um membro do grupo não será fechada se o membro for removido do grupo após a autenticação. Qualquer nova solicitação de conexão de um membro do grupo removido será rejeitada durante a autenticação.

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

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

Somente os grupos atribuídos a Databricks workspace da instância do banco de dados são compatíveis com o login do Postgres baseado em grupo. Para saber como atribuir um grupo a um workspace, consulte Atribuir um grupo a um workspace.

Eliminar uma função Postgres baseada em identidade da Databricks

Uma função do Postgres baseada em identidade da Databricks pode ser descartada e removida da mesma forma que qualquer outra função do Postgres. Para obter mais detalhes, consulte a documentação do PostgreSQL sobre eliminação de funções. Depois que uma função baseada em identidade Databricks é descartada, ela não pode ser usada para autenticação baseada em tokens e acesso ao Postgres.