Autenticar na instância do banco de dados
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
.
Esta página descreve como se autenticar em uma instância do banco de dados Lakebase. Há duas maneiras de se autenticar:
- Obter tokens OAuth e autenticar usando identidades Databricks.
- Use funções nativas do Postgres com senhas.
Autenticar com identidades da Databricks
Ao se autenticar como uma identidade Databricks, o senhor precisa gerar um token OAuth e usá-lo como senha ao se conectar ao Postgres.
Considerações antes de começar
-
Os tokens OAuth expiram após uma hora, mas a expiração é aplicada somente no login. As conexões abertas permanecem ativas mesmo que os tokens expirem. No entanto, qualquer comando PostgreSQL que exija autenticação falhará se os tokens tiverem expirado.
-
OAuth tokens usados para autenticação do Postgres são workspace-scoped e devem pertencer ao mesmo workspace que possui a instância do banco de dados. Não há suporte para autenticação de tokens entreworkspace. Para saber mais sobre autenticação, consulte Autenticação para a CLI da Databricks.
-
A autenticação baseada em tokens requer uma senha de texto simples, portanto, somente conexões SSL são permitidas. Certifique-se de que a biblioteca cliente que o senhor usa para acessar o Postgres com autenticação baseada em tokens esteja configurada para estabelecer uma conexão SSL.
Obter um OAuth tokens em um fluxo de usuário para máquina
Se o senhor for proprietário ou administrador de um banco de dados ou se sua identidade Databricks tiver uma função Postgres correspondente para a instância do banco de dados, poderá obter um token OAuth na interface do usuário, no Databricks CLI ou em um dos SDKs Databricks. O senhor pode restringir o escopo dos tokens adequadamente usando o Databricks CLI.
Para outros usuários de identidade Databricks, consulte Autorizar acesso interativo a Databricks recurso com um usuário account usando OAuth para obter as instruções de autorização de nível workspacepara obter OAuth tokens.
- UI
- CLI
- Python SDK
- Java SDK
Quando o status da instância do banco de dados for Disponível , use a interface do usuário Databricks para obter um token OAuth:
- Na página de detalhes da instância do banco de dados , clique em Get OAuth tokens . Um sinalizador indica quando os tokens foram criados.
- Clique em Copy OAuthToken para copiar os tokens para a área de transferência. O senhor deve substituir esse valor nas cadeias de conexão fornecidas na próxima etapa.
- Clique no ícone de cópia que segue as cadeias de conexão fornecidas.
Quando o status da instância do banco de dados for Disponível , use o Databricks CLI v0.256.0 e posterior para obter tokens OAuth:
-
Use o comando a seguir para buscar tokens.
Bashdatabricks database generate-database-credential \
--request-id $(uuidgen) \
--json '{
"instance_names": ["db-instance-name"]
}' -
Isso gera uma resposta no formato a seguir. Copie o
token
da resposta.JSON{
"expiration_time": "2025-08-24T14:15:22Z",
"token": "<string>"
}
Para obter mais informações sobre o uso do Databricks CLI para obter tokens OAuth, consulte OAuth autenticação user-to-machine (U2M).
O senhor pode gerar um OAuth tokens usando o Databricks SDK para Python. As ligações do Databricks SDK estão disponíveis no Databricks SDK para Python versão v0.56.0.
Se o senhor estiver usando uma versão mais antiga do SDK, execute esses comandos primeiro.
%pip install --upgrade databricks-sdk
%restart_python
O Databricks SDK para Python gera tokens OAuth seguros, cred
, para sua instância de banco de dados. Insira o nome da instância do banco de dados quando necessário.
from databricks.sdk import WorkspaceClient
import uuid
w = WorkspaceClient()
instance_name = "<YOUR INSTANCE>"
cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])
O senhor pode gerar um OAuth tokens usando o Databricks SDK para Java. As associações do banco de dados SDK estão disponíveis em Databricks SDK para Java versão v0.53.0 ou acima. Se o senhor estiver usando uma versão mais antiga do SDK, talvez seja necessário refresh o SDK importado. Para obter mais informações, consulte aqui.
%scala
import com.databricks.sdk.WorkspaceClient
import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
import com.databricks.sdk.service.database.DatabaseInstance
import com.databricks.sdk.service.database.DatabaseCredential
import java.util.Collections
import java.util.UUID
val w = new WorkspaceClient()
val instanceName = "<YOUR INSTANCE>"
// Generate database credential
val cred = w.database().generateDatabaseCredential(
new GenerateDatabaseCredentialRequest()
.setRequestId(UUID.randomUUID().toString())
.setInstanceNames(Collections.singletonList(instanceName))
)
// Print out credential details
System.out.println("Credential: " + cred.getToken())
Obter um OAuth tokens em um fluxo máquina a máquina
Para permitir o acesso seguro e automatizado (máquina a máquina) à instância do banco de dados, o senhor deve obter tokens OAuth usando uma entidade de serviço Databricks. Esse processo envolve a configuração da entidade de serviço, a geração de credenciais e a criação de tokens OAuth para autenticação.
- Configurar uma entidade de serviço com credenciais de duração indefinida. Para obter instruções, consulte Autorizar o acesso autônomo a Databricks recurso com uma entidade de serviço usando OAuth.
- Mint new OAuth tokens como a entidade de serviço.
- CLI
- Python SDK
- Java SDK
Quando o status da instância do banco de dados for Disponível , use o Databricks CLI v0.256.0 e posterior para obter tokens OAuth:
-
Use o comando a seguir para buscar tokens.
Bashdatabricks database generate-database-credential \
--request-id $(uuidgen) \
--json '{
"instance_names": ["db-instance-name"]
}' -
Isso gera uma resposta no formato a seguir. Copie o
token
da resposta.JSON{
"expiration_time": "2025-08-24T14:15:22Z",
"token": "<string>"
}
O senhor pode gerar um OAuth tokens usando o Databricks SDK para Python. As ligações do Databricks SDK estão disponíveis no Databricks SDK para Python versão v0.56.0.
Se o senhor estiver usando uma versão mais antiga do SDK, execute esses comandos primeiro.
%pip install --upgrade databricks-sdk
%restart_python
O Databricks SDK para Python gera tokens OAuth seguros, cred
, para sua instância de banco de dados. Insira o nome da instância do banco de dados quando necessário.
from databricks.sdk import WorkspaceClient
import uuid
w = WorkspaceClient(
host = "https://<YOUR WORKSPACE URL>/",
client_id = "<YOUR SERVICE PRINCIPAL ID>",
client_secret = "REDACTED"
)
instance_name = "<YOUR INSTANCE>"
cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])
O senhor pode gerar um OAuth tokens usando o Databricks SDK para Java. As associações do banco de dados SDK estão disponíveis em Databricks SDK para Java versão v0.53.0 ou acima. Se o senhor estiver usando uma versão mais antiga do SDK, talvez seja necessário refresh o SDK importado. Para obter mais informações, consulte aqui.
%scala
import com.databricks.sdk.WorkspaceClient
import com.databricks.sdk.core.DatabricksConfig
import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
import com.databricks.sdk.service.database.DatabaseInstance
import com.databricks.sdk.service.database.DatabaseCredential
import java.util.Collections
import java.util.UUID
val config = new DatabricksConfig() // See https://github.com/databricks/databricks-sdk-java#authentication
val w = new WorkspaceClient(config)
val instanceName = "<YOUR INSTANCE>"
// Generate database credential
val cred = w.database().generateDatabaseCredential(
new GenerateDatabaseCredentialRequest()
.setRequestId(UUID.randomUUID().toString())
.setInstanceNames(Collections.singletonList(instanceName))
)
// Print out credential details
System.out.println("Credential: " + cred.getToken())
Gire os tokens OAuth antes da expiração por hora:
- Verifique o tempo de expiração dos tokens OAuth em cada uso e refresh quando necessário.
- Como alternativa, configure um thread em segundo plano para refresh os tokens OAuth atuais periodicamente.
Autentique-se com funções e senhas do Postgres
Se você tiver clientes que não suportam rotação de credenciais após uma hora, você pode criar funções nativas do Postgres com senhas:
-
Clique em Computação na barra lateral do workspace.
-
Clique em Database instances (Instâncias de banco de dados ) tab.
-
Selecione a instância do banco de dados que você deseja atualizar.
-
Clique em Editar no canto superior direito.
-
Ative a opção Ativar login da função nativa do Postgres .
-
Clique em Salvar .
-
Faça login no Postgres ou use o SQL Editor para criar uma função com uma senha.
SQLCREATE ROLE new_role LOGIN PASSWORD 'your strong password';
-
Conceda permissões adicionais do Postgres para a nova função. Consulte os privilégios concedidos às funções do Postgres utilizando o PostgreSQL.
Próximas etapas
Depois de obter uma credencial (tokensOAuth ou senha), o senhor pode se conectar à instância do banco de dados: