Dela via


Autentiseringsinställningar för Databricks JDBC-drivrutinen

I den här artikeln beskrivs hur du konfigurerar autentiseringsinställningar för Azure Databricks för Databricks JDBC-drivrutinen.

För att konfigurera en Azure Databricks-anslutning för Databricks JDBC-drivrutinen måste du kombinera dina beräkningsresursinställningar, eventuella inställningar för drivrutinsfunktioner och följande autentiseringsinställningar till en JDBC-anslutnings-URL eller en programmatisk samling med JDBC-anslutningsegenskaper.

JDBC-anslutnings-URL:er använder följande format:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]

Programmatiska samlingar av JDBC-anslutningsegenskaper kan användas i Java-kod, till exempel följande exempel:

package org.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;

public class Main {
  public static void main(String[] args) throws Exception {
    Class.forName("com.databricks.client.jdbc.Driver");
    String url = "jdbc:databricks://" + System.getenv("DATABRICKS_SERVER_HOSTNAME") + ":443";
    Properties p = new java.util.Properties();
    p.put("httpPath", System.getenv("DATABRICKS_HTTP_PATH"));
    p.put("<setting1>", "<value1");
    p.put("<setting2>", "<value2");
    p.put("<settingN>", "<valueN");
    try (Connection conn = DriverManager.getConnection(url, p)) {
      Statement stmt = conn.createStatement();
      try (ResultSet rs = stmt.executeQuery("<query>")) {
        ResultSetMetaData md = rs.getMetaData();
        String[] columns = new String[md.getColumnCount()];
        for (int i = 0; i < columns.length; i++) {
          columns[i] = md.getColumnName(i + 1);
        }
        while (rs.next()) {
          System.out.print("Row " + rs.getRow() + "=[");
          for (int i = 0; i < columns.length; i++) {
            if (i != 0) {
              System.out.print(", ");
            }
            System.out.print(columns[i] + "='" + rs.getObject(i + 1) + "'");
          }
          System.out.println(")]");
        }
      }
    }
    System.exit(0);
  }
}
  • DATABRICKS_SERVER_HOSTNAME Ange miljövärdena och DATABRICKS_HTTP_PATH till Azure Databricks-målberäkningsresursens servervärdnamn respektive HTTP-sökvägsvärden. Information om hur du hämtar dessa värden finns i Beräkningsinställningar för Databricks JDBC-drivrutinen. Information om hur du anger miljövariabler finns i dokumentationen till operativsystemet.
  • Ersätt <setting> och efter behov för var och <value> en av anslutningsegenskaperna enligt beskrivningen i följande avsnitt.
  • Du kan också lägga till särskilda eller avancerade inställningar för drivrutinsfunktioner, vanligtvis som ytterligare <setting> och <value> par.
  • I det här exemplet ersätter du <query> med en SQL-frågesträng SELECT .

Om du använder en anslutnings-URL eller en samling anslutningsegenskaper beror på kraven för målappen, verktyget, klienten, SDK:n eller API:et. Exempel på JDBC-anslutnings-URL:er och programmatiska samlingar av JDBC-anslutningsegenskaper finns i den här artikeln för varje Azure Databricks-autentiseringstyp som stöds.

Databricks JDBC-drivrutinen stöder följande Azure Databricks-autentiseringstyper:

Personlig åtkomsttoken för Azure Databricks

Gör följande för att skapa en personlig åtkomsttoken för Azure Databricks:

  1. I din Azure Databricks-arbetsyta klickar du på ditt Användarnamn för Azure Databricks i det övre fältet och väljer sedan Inställningar i listrutan.
  2. Klicka på Utvecklare.
  3. Bredvid Åtkomsttoken klickar du på Hantera.
  4. Klicka på Generera ny token.
  5. (Valfritt) Ange en kommentar som hjälper dig att identifiera den här token i framtiden och ändra tokens standardlivslängd på 90 dagar. Om du vill skapa en token utan livslängd (rekommenderas inte) lämnar du rutan Livslängd (dagar) tom (tom).
  6. Klicka på Generera.
  7. Kopiera den visade token till en säker plats och klicka sedan på Klar.

Kommentar

Se till att spara den kopierade token på en säker plats. Dela inte din kopierade token med andra. Om du förlorar den kopierade token kan du inte återskapa exakt samma token. I stället måste du upprepa den här proceduren för att skapa en ny token. Om du förlorar den kopierade token eller om du tror att token har komprometterats rekommenderar Databricks starkt att du omedelbart tar bort den token från arbetsytan genom att klicka på papperskorgsikonen (Återkalla) bredvid token på sidan Åtkomsttoken .

Om du inte kan skapa eller använda token på din arbetsyta kan det bero på att arbetsyteadministratören har inaktiverat token eller inte har gett dig behörighet att skapa eller använda token. Se din arbetsyteadministratör eller följande:

Om du vill autentisera med en personlig åtkomsttoken för Azure Databricks anger du följande konfiguration.

För en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-token>

För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "3");
p.put("UID", "token");
p.put("PWD", "<personal-access-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
  • I föregående URL eller Java-kod ersätter du <personal-access-token> med Databricks personliga åtkomsttoken för din arbetsyteanvändare.
  • Information om hur du hämtar värdena för <server-hostname> och <http-path>finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.

Microsoft Entra ID-token (tidigare Azure Active Directory)

ODBC- och JDBC-drivrutinerna 2.6.15 och senare stöder Microsoft Entra-ID-token (tidigare Azure Active Directory) för en Azure Databricks-användare eller ett Microsoft Entra ID-tjänsthuvudnamn.

Gör följande för att skapa en Microsoft Entra ID-åtkomsttoken:

Microsoft Entra ID-åtkomsttoken har en standardlivslängd på cirka 1 timme. En åtkomsttoken kan uppdateras programmatiskt för en befintlig session utan att bryta anslutningen genom att köra koden i Uppdatera en Microsoft Entra-ID-åtkomsttoken. Anvisningar om hur du uppdaterar token finns i avsnittet Configuring Authentication > Using OAuth 2.0 i Drivrutinsguiden för Databricks JDBC.

Om du vill autentisera med en Microsoft Entra-ID-token anger du följande konfiguration.

För en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>

För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "0");
p.put("Auth_AccessToken", "<microsoft-entra-id-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
  • I föregående URL eller Java-kod ersätter du <microsoft-entra-id-token> med Microsoft Entra-ID-token.
  • Information om hur du hämtar värdena för <server-hostname> och <http-path>finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.

Mer information Token Pass-through finns i avsnittet i drivrutinsguiden för Databricks JDBC.

OAuth 2.0-token

JDBC-drivrutinen 2.6.36 och senare stöder en OAuth 2.0-token för ett Microsoft Entra ID-tjänsthuvudnamn. Detta kallas även OAuth 2.0-token för direktautentisering.

OAuth 2.0-token har en standardlivslängd på 1 timme. Om du vill generera en ny OAuth 2.0-token upprepar du den här processen.

Om du vill autentisera med OAuth 2.0-tokens direktautentisering anger du följande konfiguration.

För en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>

För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "0");
p.put("Auth_AccessToken", "<oauth-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
  • I föregående URL eller Java-kod ersätter du <oauth-token> med Azure Databricks OAuth-token. (Microsoft Entra ID-token stöds inte för OAuth 2.0-tokens direktautentisering.)
  • Information om hur du hämtar värdena för <server-hostname> och <http-path>finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.

Mer information Token Pass-through finns i avsnittet i drivrutinsguiden för Databricks JDBC.

OAuth-autentisering från användare till dator (U2M)

JDBC-drivrutinen 2.6.36 och senare stöder OAuth-autentisering från användare till dator (U2M) för en Azure Databricks-användare. Detta kallas även OAuth 2.0 webbläsarbaserad autentisering.

OAuth U2M- eller OAuth 2.0-webbläsarbaserad autentisering har inga krav. OAuth 2.0-token har en standardlivslängd på 1 timme. OAuth U2M- eller OAuth 2.0-webbläsarbaserad autentisering bör uppdatera OAuth 2.0-token som upphört att gälla automatiskt.

Kommentar

OAuth U2M- eller OAuth 2.0-webbläsarbaserad autentisering fungerar endast med program som körs lokalt. Det fungerar inte med serverbaserade eller molnbaserade program.

Om du vill autentisera med OAuth från användare till dator (U2M) eller OAuth 2.0 webbläsarbaserad autentisering anger du följande konfiguration.

För en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0

För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "2")
p.put("TokenCachePassPhrase", "<passphrase>");
p.put("EnableTokenCache", "0");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
  • I föregående URL eller Java-kod ersätter du <passphrase> med valfri lösenfras. Drivrutinen använder den här nyckeln för kryptering av uppdateringstoken.
  • Information om hur du hämtar värdena för <server-hostname> och <http-path>finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.

Mer information Using Browser Based Authentication finns i avsnittet i drivrutinsguiden för Databricks JDBC.

OAuth-autentisering från dator till dator (M2M)

JDBC-drivrutinen 2.6.36 och senare stöder M2M-autentisering (machine-to-machine) för en Microsoft Entra ID-tjänsthuvudnamn. Detta kallas även OAuth 2.0-klientautentiseringsuppgifter.

Gör följande för att konfigurera autentiseringsuppgifterna för OAuth M2M- eller OAuth 2.0-klienten:

  1. Skapa ett Microsoft Entra ID-hanterat tjänsthuvudnamn och tilldela det sedan till Azure Databricks-konton och arbetsytor. Det gör du genom att läsa Hantera tjänstens huvudnamn.

    Viktigt!

    JDBC-drivrutinen 2.6.36 och senare stöder Azure Databricks OAuth-hemligheter för OAuth M2M- eller OAuth 2.0-klientautentiseringsuppgifter. Microsoft Entra-ID-hemligheter stöds inte.

  2. Skapa en Azure Databricks OAuth-hemlighet för tjänstens huvudnamn. Det gör du genom att läsa Manuellt generera och använda åtkomsttoken för OAuth M2M-autentisering.

  3. Ge tjänstens huvudnamn åtkomst till klustret eller informationslagret. Se Beräkningsbehörigheter eller Hantera ett SQL-lager.

Om du vill autentisera med hjälp av autentiseringsuppgifter för OAuth från dator till dator (M2M) eller OAuth 2.0-klientautentisering anger du följande konfiguration.

För en JDBC-anslutnings-URL med inbäddade allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>

För Java-kod med allmänna konfigurationsegenskaper och egenskaper för känsliga autentiseringsuppgifter som anges utanför JDBC-anslutnings-URL:en:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "1");
p.put("OAuth2ClientId", "<service-principal-application-id>");
p.put("OAuth2Secret", "<service-principal-oauth-secret>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ett fullständigt Java-kodexempel som du kan anpassa föregående kodfragment till dina egna behov finns i kodexemplet i början av den här artikeln.
  • Ersätt följande platshållare i föregående URL eller Java-kod:
    • Ersätt <service-principal-application-id> med tjänstens huvudnamns program-ID (klient)-värde.
    • Ersätt <service-principal-oauth-secret> med tjänstens huvudnamns Azure Databricks OAuth-hemlighet. (Microsoft Entra ID-hemligheter stöds inte för OAuth M2M- eller OAuth 2.0-klientautentiseringsuppgifter.)
    • Information om hur du hämtar värdena för <server-hostname> och <http-path>finns i Beräkningsinställningar för Databricks JDBC-drivrutinen.

Mer information Using M2M Based Authentication finns i avsnittet i drivrutinsguiden för Databricks JDBC.