Authentifier à une instance de base de données
Lakebase Provisioned est l'offre originale de Lakebase qui utilise un compute provisionné que vous mettez à l'échelle manuellement. Pour les régions prises en charge, consultez la disponibilité des régions. Pour la dernière version de Lakebase, avec compute à dimensionnement automatique, mise à l'échelle jusqu'à zéro, création de branches et restauration instantanée, consultez Lakebase Autoscaling.
Depuis le 12 mars 2026, les nouvelles instances Lakebase sont créées en tant que projets de dimensionnement automatique. Les instances provisionnées existantes sont mises à niveau automatiquement vers la mise à l'échelle automatique, à compter de juin 2026. Pour plus de détails, consultez Mise à niveau vers le dimensionnement automatique Lakebase.
Les identités Databricks et les rôles Postgres sont des systèmes distincts. Il n'y a pas de synchronisation automatique entre eux. Vous devez créer des rôles Postgres pour les identités Databricks qui nécessitent un accès PostgreSQL. Voir rôles Postgres.
Cette page décrit comment s'authentifier à une instance de base de données Lakebase. Il existe deux façons de s'authentifier :
- Obtenez un jeton OAuth et authentifiez-vous à l'aide des identités Databricks.
- Utilisez les rôles Postgres natifs avec des mots de passe.
Authentifiez-vous avec les identités Databricks
Lorsque vous vous authentifiez en tant qu'identité Databricks, vous devez générer un jeton OAuth et l'utiliser comme mot de passe lors de la connexion à Postgres.
Considérations avant de commencer
-
Les jetons OAuth expirent après une heure, mais l'expiration n'est appliquée qu'à la connexion. Les connexions ouvertes restent actives même si le jeton expire. Cependant, toute commande PostgreSQL qui requiert une authentification échoue si le jeton a expiré.
-
Les jetons OAuth utilisés pour l'authentification Postgres sont limités au Workspace et doivent appartenir au même Workspace qui possède l'instance de base de données. L'authentification par jeton inter-Workspace n'est pas prise en charge. Pour en savoir plus sur l'authentification, consultez Authentification pour le CLI Databricks.
-
L'authentification basée sur des jetons nécessite un mot de passe en texte clair, donc seules les connexions SSL sont autorisées. Assurez-vous que la bibliothèque cliente que vous utilisez pour accéder à Postgres avec une authentification basée sur des jetons est configurée pour établir une connexion SSL.
Obtenez un jeton OAuth dans un flux utilisateur-machine
Si vous êtes propriétaire ou administrateur de base de données, ou si votre identité Databricks a un rôle Postgres correspondant pour l'instance de base de données, vous pouvez obtenir un jeton OAuth à partir de l'interface utilisateur, de l'interface CLI Databricks ou de l'un des SDK Databricks. Vous pouvez restreindre la portée du jeton de manière appropriée à l'aide du CLI Databricks.
Pour les autres utilisateurs d'identité Databricks, consultez Autoriser l'accès des utilisateurs à Databricks avec OAuth pour obtenir les instructions d'autorisation au niveau du Workspace afin d'obtenir des jetons OAuth.
- UI
- CLI
- Python SDK
- Java SDK
Lorsque le statut de votre instance de base de données est Disponible , utilisez l'interface utilisateur de Databricks pour obtenir un jeton OAuth :
- Cliquez sur
Applications dans le coin supérieur droit et sélectionnez Lakebase Postgres .
- Cliquez sur **Provisionné** pour ouvrir la page **Instances provisionnées**.
- Recherchez et cliquez sur le nom de l'instance de base de données pour laquelle vous souhaitez obtenir un jeton OAuth.
- Cliquez sur l'onglet Connection details tab.
- Cliquez sur **Obtenir le jeton OAuth**. Un indicateur signale la création du jeton.
- Cliquez sur Copier le jeton OAuth pour copier le jeton dans votre presse-papiers.
Lorsque le Statut de votre instance de base de données est Disponible , utilisez la CLI Databricks v0.256.0 et versions ultérieures pour obtenir un jeton OAuth :
-
Utilisez la commande suivante pour récupérer un jeton.
Bashdatabricks database generate-database-credential \
--request-id $(uuidgen) \
--json '{"instance_names": ["db-instance-name"]}' -
Ceci génère une réponse dans le format suivant. Copiez le
tokende la réponse.JSON{
"expiration_time": "2025-08-24T14:15:22Z",
"token": "<string>"
}
Pour plus d'informations sur l'utilisation du CLI Databricks pour obtenir un jeton OAuth, consultez l'authentification OAuth utilisateur-machine (U2M).
Vous pouvez générer un jeton OAuth à l'aide du SDK Databricks pour Python. Les liaisons du Databricks SDK sont disponibles dans le Databricks SDK pour Python version v0.56.0.
Si vous exécutez une ancienne version du SDK, exécutez d’abord ces commandes.
%pip install databricks-sdk==0.56.0
%restart_python
Le SDK Databricks pour Python génère un jeton OAuth sécurisé, cred, pour votre instance de base de données. Saisissez vos identifiants si nécessaire.
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])
Vous pouvez générer un jeton OAuth à l’aide du SDK Databricks pour Java. Les liaisons du SDK de base de données sont disponibles dans le Databricks SDK pour Java version v0.53.0 ou supérieure. Si vous utilisez une ancienne version du SDK, vous devrez peut-être refresh le SDK importé. Pour plus d’informations, consultez ici.
**Compatibilité Serverless** Databricks recommande de ne plus
%scalautiliser, car il n'est pas compatible avec l'architecture de compute serverless de Databricks. Utilisez PySpark ou une tâche de Job JAR à la place.
%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())
Obtenez un jeton OAuth dans un flux machine à machine
Pour activer un accès sécurisé et automatisé (machine-à-machine) à l'instance de base de données, vous devez obtenir un jeton OAuth à l'aide d'un Service Principal Databricks. Ce processus implique la configuration du Service Principal, la génération des identifiants et la création de jetons OAuth pour l'authentification.
- Configurez un service principal avec des identifiants à durée de vie illimitée. Pour obtenir des instructions, consultez Autoriser l'accès du Service Principal à Databricks avec OAuth.
- Créez de nouveaux jetons OAuth en tant que Service Principal.
- CLI
- Python SDK
- Java SDK
Lorsque le Statut de votre instance de base de données est Disponible , utilisez la CLI Databricks v0.256.0 et versions ultérieures pour obtenir un jeton OAuth :
-
Utilisez la commande suivante pour récupérer un jeton.
Bashdatabricks database generate-database-credential \
--request-id $(uuidgen) \
--json '{"instance_names": ["db-instance-name"]}' -
Ceci génère une réponse dans le format suivant. Copiez le
tokende la réponse.JSON{
"expiration_time": "2025-08-24T14:15:22Z",
"token": "<string>"
}
Vous pouvez générer un jeton OAuth à l'aide du SDK Databricks pour Python. Les liaisons du Databricks SDK sont disponibles dans le Databricks SDK pour Python version v0.56.0.
Si vous exécutez une ancienne version du SDK, exécutez d’abord ces commandes.
%pip install --upgrade databricks-sdk
%restart_python
Le SDK Databricks pour Python génère un jeton OAuth sécurisé, cred, pour votre instance de base de données. Saisissez le nom de votre instance de base de données le cas échéant.
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])
Vous pouvez générer un jeton OAuth à l’aide du SDK Databricks pour Java. Les liaisons du SDK de base de données sont disponibles dans le Databricks SDK pour Java version v0.53.0 ou supérieure. Si vous utilisez une ancienne version du SDK, vous devrez peut-être effectuer une mise à jour vers un SDK plus récent. Pour plus d’informations, consultez ici.
%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())
Renouveler les jetons OAuth avant l'expiration horaire :
- Vérifiez la date d'expiration du jeton OAuth à chaque utilisation et refresh si nécessaire.
- Vous pouvez également configurer un thread d’arrière-plan pour refresh périodiquement le jeton OAuth actuel.
Dépanner l'identité du jeton
Si l'identité de votre jeton ne correspond pas à l'étiquette de sécurité, vous pourriez recevoir un message d'erreur comme celui-ci.
A valid oauth token was supplied but the token's identity "<USER>" did not match the security label configured for role "<SERVICE PRINCIPAL>". Please ensure that the token is generated for the correct databricks identity.
Exécutez la commande suivante pour vérifier quelle identité Databricks est renvoyée :
- CLI
- Python SDK
- Java SDK
databricks current-user me
w.current_user.me().user_name
w.currentUser.me().getUserName()
Si l'identité attendue n'est pas renvoyée, vérifiez que les bons identifiants ont été utilisés lors de l'initialisation du client du workspace.
S’authentifier en tant que groupe Databricks
Les groupes et les appartenances aux groupes ne sont pas synchronisés de Databricks vers Postgres, pas plus que les autorisations Unity Catalog. Cependant, après qu'un groupe Databricks est ajouté à Postgres, tout utilisateur Databricks du groupe peut se connecter en tant que groupe en utilisant le mot de passe de l'utilisateur. Cela vous permet de gérer les autorisations au niveau du groupe dans Postgres. Tout membre direct ou indirect (utilisateur ou Service Principal) de l'identité de groupe Databricks peut s'authentifier auprès de Postgres et se connecter en tant que rôle Postgres du groupe Databricks.
Lors de l'authentification en tant qu'identité de groupe à l'aide d'un jeton d'utilisateur ou de Service Principal, l'appartenance au groupe est validée uniquement au moment de l'authentification. Toute connexion ouverte avec un jeton de membre de groupe reste ouverte si le membre est retiré du groupe après l'authentification. Toute nouvelle demande de connexion d'un membre de groupe supprimé est rejetée lors de l'authentification.
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
Seuls les groupes attribués au Workspace Databricks de l'instance de base de données sont pris en charge pour la connexion Postgres basée sur les groupes. Pour savoir comment attribuer un groupe à un workspace, consultez Attribuer un groupe à un workspace.
Authentifiez-vous avec les rôles et les mots de passe Postgres.
Si vous avez des clients qui ne prennent pas en charge la rotation des identifiants après une heure, vous pouvez créer des rôles Postgres natifs avec des mots de passe :
-
Cliquez sur
Applications dans le coin supérieur droit et sélectionnez Lakebase Postgres .
-
Cliquez sur **Provisionné** pour ouvrir la page **Instances provisionnées**.
-
Sélectionnez l'instance de base de données que vous souhaitez mettre à jour.
-
Cliquez sur **Modifier** en haut à droite.
-
Activer Activer la connexion au rôle natif Postgres .
-
Cliquez sur Enregistrer .
-
Connectez-vous à Postgres, ou utilisez l'éditeur SQL, pour créer un rôle avec un mot de passe.
SQLCREATE ROLE new_role LOGIN PASSWORD 'your strong password'; -
Accordez des autorisations Postgres supplémentaires au nouveau rôle. Voir accorder des privilèges aux rôles Postgres en utilisant PostgreSQL.
Ressources supplémentaires
Après avoir obtenu un identifiant (jeton OAuth ou mot de passe), vous pouvez vous connecter à votre instance de base de données.