> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Devin mit Databricks verbinden

> Verbinde Devin mit Databricks über einen Service-Principal, ein OAuth-Client-Secret oder OIDC-Token-Federation, die Databricks CLI und Unity-Catalog-Berechtigungen.

Devin kann in deinen Databricks-Workspaces als asynchroner Kollege arbeiten: Kataloge erkunden, fehlgeschlagene Jobs debuggen, SQL optimieren, Notebooks schreiben und testen sowie Änderungen über deinen gewohnten Git-Workflow ausliefern. Diese Anleitung zeigt Schritt für Schritt, wie du das mit einem dedizierten Databricks-Service-Principal einrichtest, als der sich Devin authentifiziert und der über Unity Catalog verwaltet wird.

<Note>
  Die Integration besteht aus drei Bausteinen, die du bereits selbst kontrollierst: einem Databricks-Service-Principal, der Databricks CLI, die über einen [Environment-Blueprint](/de/onboard-devin/environment/blueprints) installiert wird, und (optional) dem Databricks Skills Plugin. Databricks, die Workspaces und sämtliche Berechtigungen bleiben in deinem Account.
</Note>

<div id="choose-how-devin-authenticates">
  ## Authentifizierungsmethode für Devin wählen
</div>

Devin authentifiziert sich bei Databricks auf eine von zwei Arten als Service-Principal. Beide nutzen denselben Service-Principal, die per Blueprint installierte CLI und dieselben Unity-Catalog-Berechtigungen; sie unterscheiden sich lediglich im Credential.

| Weg                                                                    | Am besten geeignet für                                                                                                                                                                                                                                                        | Setup                                                                                                                                                    |
| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [**Option A: OAuth Client Secret**](#option-a-oauth-client-secret)     | Den schnellen Einstieg. Drei Devin Secrets und ein kurzer Blueprint.                                                                                                                                                                                                          | Erzeuge ein OAuth-Secret für den Service-Principal und speichere es in Devin Secrets.                                                                    |
| [**Option B: OIDC-Token-Föderation**](#option-b-oidc-token-federation) | Den Ausbau der Integration oder Teams, die lieber kein Databricks-Secret verwalten möchten. Databricks [empfiehlt dringend](https://docs.databricks.com/aws/en/dev-tools/auth/oauth-federation) Token-Föderation für automatisierte Workloads, da es nichts zu rotieren gibt. | Vertraue Devins OIDC-Issuer über eine Föderationsrichtlinie; jede Sitzung tauscht ein kurzlebiges Devin-Identity-Token gegen ein Databricks-OAuth-Token. |

Beginne mit Option A, wenn Devin schon heute mit Databricks arbeiten soll. Du kannst später zu Option B wechseln, ohne den Service-Principal oder dessen Berechtigungen anzupassen.

<div id="why-connect-devin-to-databricks">
  ## Warum Devin mit Databricks verbinden?
</div>

* **Devin arbeitet dort, wo Ihre Datenplattform lebt.** Die meiste Arbeit in Databricks besteht nicht nur darin, Notebooks in einem Repo zu bearbeiten. Es geht darum zu prüfen, warum ein Job fehlgeschlagen ist, das Schema einer Tabelle zu lesen, eine Query gegen ein Warehouse auszuführen oder eine Pipeline zu untersuchen. Mit der CLI werden daraus Aufgaben, die Devin selbst erledigen kann, statt Fragen an einen Menschen.
* **Eine einzige prüfbare Identität.** Devin agiert als ein von Ihnen erstellter Service-Principal, sodass jeder API call, jede Query und jeder Job-Lauf in den Databricks-Audit-Logs und in der Unity-Catalog-Lineage unter dieser Identität erscheint – und nicht unter dem persönlichen Token eines Entwicklers.
* **Unity Catalog entscheidet, worauf Devin zugreifen darf.** OAuth entscheidet, ob Devin sich authentifizieren kann. Unity-Catalog-Grants und Workspace-Berechtigungen entscheiden, was gelesen oder geändert werden darf. Sie können in der Produktion schreibgeschützt starten, Devin einen Sandbox-Catalog zum Entwickeln geben und den Geltungsbereich erst erweitern, wenn Sie gesehen haben, wie Devin sich verhält.
* **Ein Weg ganz ohne gespeichertes Secret.** Mit OIDC-Token-Föderation (Option B) speichert Devin zu keinem Zeitpunkt ein Databricks-Token oder ein Client Secret. Jede Sitzung tauscht ein 60 Sekunden gültiges Devin-Identitäts-Token gegen ein kurzlebiges Databricks-OAuth-Token.

<div id="overview">
  ## Übersicht
</div>

```
Devin-Sitzung
  │  Databricks CLI authentifiziert sich als Service-Principal
  │    Option A: Client ID + Client Secret aus Devin Secrets
  │    Option B: kurzlebiges Devin OIDC-Token, zugeordnet über eine Föderationsrichtlinie
  ▼
Databricks stellt ein kurzlebiges OAuth-Access-Token für den Service-Principal aus
  │
  ▼
Workspace-APIs, SQL Warehouses, Jobs, Unity Catalog
  (eingeschränkt durch Workspace-Berechtigungen und Unity-Catalog-Grants)
```

Das Setup besteht aus vier Teilen:

| Teil                  | Wo es liegt                          | Was es bewirkt                                                                                                                                         |
| --------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Service-Principal** | Databricks-Account                   | Die Identität, unter der Devin agiert. Wird den Workspaces zugewiesen, die Devin benötigt.                                                             |
| **Authentifizierung** | Databricks-Account + Devin           | **Option A:** OAuth M2M mit einem Client Secret, das in Devin Secrets gespeichert ist. **Option B:** OIDC-Token-Föderation, ohne gespeichertes Secret. |
| **Databricks CLI**    | Devin Blueprint                      | Wird im Snapshot installiert und so konfiguriert, dass die Authentifizierung als Service-Principal erfolgt.                                            |
| **Berechtigungen**    | Databricks Workspace + Unity Catalog | Workspace-Entitlements, Berechtigungen für SQL-Warehouses und Jobs sowie Grants für Catalog/Schema.                                                    |

Das [Databricks Skills Plugin](#step-4-install-the-databricks-skills-plugin-optional) ist eine fünfte, optionale Schicht: Es vermittelt Devin zusätzlich zur CLI Databricks-spezifische Workflows (Asset Bundles, Jobs, SQL, Unity Catalog).

<div id="prerequisites">
  ## Voraussetzungen
</div>

**Databricks**

* Ein Databricks-Konto auf AWS, Azure oder GCP mit **Account-Admin**-Zugriff für die Person, die das Setup durchführt. Das Erstellen von Service-Principals, OAuth-Secrets und Federation-Richtlinien erfolgt auf Account-Ebene.
* Ein oder mehrere Workspaces mit aktiviertem **Unity Catalog**. Diese Anleitung geht davon aus, dass Unity Catalog die Daten verwaltet, auf die Devin zugreifen soll.
* Die [Databricks CLI](https://docs.databricks.com/aws/en/dev-tools/cli/) auf der Maschine des Admins für die folgenden Befehle auf Account-Ebene. Dafür genügt jede aktuelle Version. Devins eigene Installation erfolgt separat in Schritt 2.

**Devin**

* Berechtigung zum Bearbeiten des [Environment-Blueprints](/de/onboard-devin/environment/blueprints) Ihrer Organisation (**Settings > Environment > Blueprints**).
* Für Option A: Berechtigung zum Hinzufügen von [Devin Secrets](/de/product-guides/secrets).
* Für Option B: Ihre Devin-**OIDC-Issuer-URL** und **Organization ID**. Schritt 2 zeigt, wie Sie beides aus einem Token innerhalb einer Devin-Sitzung auslesen. Hintergrundinformationen finden Sie unter [Cloud Authentication with OIDC](/de/product-guides/oidc).

**Netzwerk**

* Devin-Sitzungen müssen Ihren Workspace-Host über HTTPS erreichen können (zum Beispiel `https://dbc-xxxx.cloud.databricks.com`, `https://adb-xxxx.azuredatabricks.net` oder `https://xxxx.gcp.databricks.com`). Wenn Ihre Organisation eine Devin-[Netzwerkrichtlinie](/de/product-guides/security-profiles) verwendet, fügen Sie den Workspace-Host hinzu sowie – für Befehle auf Account-Ebene – den Account-Host (`accounts.cloud.databricks.com`, `accounts.azuredatabricks.net` oder `accounts.gcp.databricks.com`).
* Für Option B muss Databricks Devins JWKS unter `https://<your-devin-host>/.well-known/jwks.json` über das öffentliche Internet abrufen können, um Token-Signaturen zu verifizieren.

<div id="step-1-create-a-service-principal">
  ## Schritt 1: Service-Principal erstellen
</div>

Erstellen Sie einen dedizierten Service-Principal für Devin, anstatt einen bestehenden wiederzuverwenden, von dem andere Automatisierungen abhängen. Ein dedizierter Principal hält Audit-Logs und Berechtigungs-Reviews übersichtlich.

Von einer Maschine aus, auf der Sie am Databricks-**Account** (nicht an einem Workspace) angemeldet sind:

```bash theme={null}
databricks account service-principals create --display-name devin-sessions
```

Notieren Sie zwei Werte aus der Ausgabe:

| Feld            | Verwendung                                                                                                                                            |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `applicationId` | Die OAuth-**Client-ID**. Wird im Secret `DATABRICKS_CLIENT_ID` (Option A) bzw. im CLI-Profil (Option B) sowie in `GRANT`-Statements verwendet.        |
| `id`            | Die numerische Service-Principal-ID. Erforderlich, um ein OAuth-Secret zu erstellen (Option A) oder eine Föderationsrichtlinie anzuhängen (Option B). |

Weisen Sie den Service-Principal anschließend jedem Workspace zu, den Devin verwenden soll. Das können Sie in der Account-Konsole unter **User management → Service principals** oder über die CLI erledigen:

```bash theme={null}
databricks account workspace-assignment update <WORKSPACE_ID> <SERVICE_PRINCIPAL_ID> \
  --json '{"permissions": ["USER"]}'
```

Verwenden Sie `USER`, nicht `ADMIN`. Devin benötigt keine Workspace-Adminrechte.

<div id="step-2-connect-devin-to-the-service-principal">
  ## Schritt 2: Devin mit dem Service-Principal verbinden
</div>

Wählen Sie **eine** der beiden folgenden Optionen. Jede ist für sich vollständig: Sie installiert die Databricks CLI über ein [Blueprint](/de/onboard-devin/environment/blueprints) unter **Settings > Environment > Blueprints** und konfiguriert die CLI so, dass sie sich als der Service-Principal aus Schritt 1 authentifiziert.

* [**Option A: OAuth Client Secret**](#option-a-oauth-client-secret). Standardmäßiges [OAuth M2M](https://docs.databricks.com/aws/en/dev-tools/auth/oauth-m2m): Der Service-Principal erhält ein Client Secret, das Sie in Devin Secrets hinterlegen. Der schnellste Einstieg.
* [**Option B: OIDC-Token-Föderation**](#option-b-oidc-token-federation). Jede Devin-Sitzung kann ein kurzlebiges, von Devin signiertes OpenID-Connect-Token ausstellen. Die [Token-Föderation](https://docs.databricks.com/aws/en/dev-tools/auth/oauth-federation) von Databricks ermöglicht es dem Service-Principal, diesem Issuer zu vertrauen, sodass Devin sein eigenes Identitätstoken gegen ein Databricks-OAuth-Token eintauscht. Dabei wird nie ein Databricks Secret erstellt oder gespeichert – deshalb empfiehlt Databricks diese Variante ausdrücklich für automatisierte Workloads.

Persönliche Zugriffstoken (PATs), die an einen menschlichen Nutzer gebunden sind, werden für keine der beiden Optionen empfohlen. Sie umgehen den Service-Principal, laufen unvorhersehbar ab und schreiben Devins Aktionen einer Person zu.

<div id="option-a-oauth-client-secret">
  ### Option A: OAuth Client Secret
</div>

<Tip>
  Sie möchten überhaupt kein Databricks-Secret verwalten? Dann springen Sie direkt zu [Option B: OIDC-Token-Föderation](#option-b-oidc-token-federation). Sie können aber auch hier starten und später wechseln: Ersetzen Sie den Blueprint durch den aus Option B, erstellen Sie die Föderationsrichtlinie und löschen Sie anschließend das OAuth-Secret sowie das Devin Secret `DATABRICKS_CLIENT_SECRET`.
</Tip>

<div id="1-generate-an-oauth-secret">
  #### 1. Ein OAuth-Secret generieren
</div>

Öffnen Sie in der Account-Konsole den Service-Principal aus Schritt 1 und generieren Sie ein **OAuth-Secret**. Legen Sie die kürzeste Lebensdauer fest, die Ihr Rotationsprozess unterstützt (maximal 730 Tage), und beschränken Sie das Secret auf die von Devin benötigten API-Geltungsbereiche, etwa `sql`, `jobs` und `unity-catalog`. Wählen Sie nicht alle Geltungsbereiche aus.

<div id="2-add-the-devin-secrets">
  #### 2. Die Devin Secrets hinzufügen
</div>

Fügen Sie in Devin die folgenden Werte als [Devin Secrets](/de/product-guides/secrets) im Tab **Secrets** des Blueprints hinzu, den Sie als Nächstes bearbeiten (Organisation oder Repository):

| Secret                     | Wert                                                                                                                                                                                                  |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DATABRICKS_HOST`          | Die **Workspace**-URL, in der Devin arbeiten soll, zum Beispiel `https://dbc-xxxx.cloud.databricks.com` oder `https://adb-xxxx.azuredatabricks.net`, ohne `/api`-Suffix. Nicht der `accounts.*`-Host. |
| `DATABRICKS_CLIENT_ID`     | Die `applicationId` des Service-Principals (eine UUID) aus Schritt 1, nicht die numerische `id`                                                                                                       |
| `DATABRICKS_CLIENT_SECRET` | Das von Ihnen erzeugte OAuth-Secret                                                                                                                                                                   |

Die CLI wählt OAuth M2M automatisch, sobald eine Client ID und ein Client Secret vorhanden sind; `DATABRICKS_AUTH_TYPE` ist daher nicht erforderlich. Setzen Sie den Wert nur dann auf `oauth-m2m`, wenn Sie alle anderen Methoden explizit ausschließen möchten.

Secrets werden zu Beginn jeder neuen Sitzung als Umgebungsvariablen bereitgestellt, sodass die CLI keine Profildatei benötigt. Ein rotiertes Secret greift ohne Rebuild ab der nächsten neuen Sitzung.

<div id="3-add-the-blueprint">
  #### 3. Blueprint hinzufügen
</div>

Installiert nur die CLI. Die Authentifizierung erfolgt vollständig über die drei oben genannten Secrets.

```yaml theme={null}
initialize:
  - name: Install Databricks CLI
    run: |
      sudo rm -f /usr/local/bin/databricks
      curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sudo sh
      databricks --version

knowledge:
  - name: databricks-auth
    contents: |
      The `databricks` CLI authenticates as a service principal using the DATABRICKS_HOST,
      DATABRICKS_CLIENT_ID, and DATABRICKS_CLIENT_SECRET environment variables, which are
      provided as Devin Secrets. Do not run `databricks auth login`, do not set DATABRICKS_TOKEN,
      and do not ask for a personal access token. Check auth with `databricks current-user me`.
      Write only to the devin_dev catalog; production catalogs are read-only. Ship notebook and
      job changes through a pull request.
```

Schreiben Sie die Secrets während `initialize` nicht in eine Datei; alles, was dort geschrieben wird, landet fest im Snapshot.

<Warning>
  Setzen Sie zusätzlich nicht `DATABRICKS_TOKEN` und belassen Sie kein `~/.databrickscfg`-Profil im Snapshot. Widersprüchliche Anmeldedaten sind die häufigste Ursache dafür, dass die M2M-Authentifizierung fehlschlägt.
</Warning>

<div id="4-build-the-snapshot">
  #### 4. Snapshot erstellen
</div>

Speichern Sie den Blueprint und warten Sie, bis der Build **Success** anzeigt. Starten Sie anschließend eine neue Sitzung. Bestehende Sitzungen behalten den alten Snapshot. Fahren Sie mit [Schritt 3](#step-3-grant-permissions) fort.

<div id="option-b-oidc-token-federation">
  ### Option B: OIDC-Token-Föderation
</div>

Devin-Sitzungen erzeugen kurzlebige Identitätstoken (`iss`, `sub`, `aud`), und eine Föderationsrichtlinie am Service-Principal weist Databricks an, diesen zu vertrauen. Der Blueprint installiert die `devin-oidc`-CLI, kapselt `databricks` so, dass jeder Aufruf ein frisches Token mitführt, und legt ein Profil an, das auf Ihren Service-Principal verweist. Anschließend lesen Sie die Claims des Tokens aus einer Sitzung aus und erstellen eine passende Richtlinie.

<Tip>
  Sie möchten zuerst den kürzesten Weg gehen? Beginnen Sie mit [Option A](#option-a-oauth-client-secret) und kehren Sie hierher zurück, sobald Sie das gespeicherte Secret ablösen möchten.
</Tip>

<div id="1-add-the-blueprint">
  #### 1. Blueprint hinzufügen
</div>

Zwei Platzhalter im Profil müssen durch eigene Werte ersetzt werden:

| Platzhalter                         | Ersetzen durch                                                                                                                                                                                                                                                      |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<your-workspace-url>`              | Die URL des **Workspace**, in dem Devin arbeiten soll, zum Beispiel `https://dbc-xxxx.cloud.databricks.com` oder `https://adb-xxxx.azuredatabricks.net`, ohne `/api`-Suffix. Nicht der `accounts.*`-Host. Dies ist derselbe Wert wie `DATABRICKS_HOST` in Option A. |
| `<service-principal-applicationId>` | Die `applicationId` des Service-Principals (eine UUID) aus der Ausgabe von `databricks account service-principals create` in Schritt 1. Nicht die numerische `id` – diese wird nur zum Anhängen der Föderationsrichtlinie verwendet.                                |

```yaml theme={null}
initialize:
  - uses: github.com/CognitionAI/actions/setup-devin-oidc@main

  - name: Install Databricks CLI
    run: |
      sudo rm -f /usr/local/bin/databricks
      curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sudo sh
      sudo mv /usr/local/bin/databricks /usr/local/bin/databricks-bin

  - name: Wrap the CLI so each call carries a fresh Devin OIDC token
    run: |
      sudo tee /usr/local/bin/databricks > /dev/null <<'EOF'
      #!/usr/bin/env bash
      set -euo pipefail
      DATABRICKS_OIDC_TOKEN="$(devin-oidc token --audience "${DATABRICKS_DEVIN_AUDIENCE:-databricks}")"
      export DATABRICKS_OIDC_TOKEN
      exec /usr/local/bin/databricks-bin "$@"
      EOF
      sudo chmod +x /usr/local/bin/databricks

  - name: Write Databricks CLI profile
    run: |
      cat > ~/.databrickscfg <<'EOF'
      [DEFAULT]
      host      = <your-workspace-url>
      auth_type = env-oidc
      client_id = <service-principal-applicationId>
      audience  = databricks
      EOF
      chmod 600 ~/.databrickscfg

knowledge:
  - name: databricks-auth
    contents: |
      The `databricks` CLI is preconfigured to authenticate as a service principal through
      Devin OIDC token federation. Do not run `databricks auth login`, do not set
      DATABRICKS_TOKEN, and do not ask for a personal access token. Check auth with
      `databricks current-user me`. Write only to the devin_dev catalog; production catalogs
      are read-only. Ship notebook and job changes through a pull request.
```

| Bestandteil            | Zweck                                                                                                           |
| ---------------------- | --------------------------------------------------------------------------------------------------------------- |
| `setup-devin-oidc`     | Installiert die `devin-oidc`-CLI, die Devin-Identitätstokens ausstellt ([Details](/de/product-guides/oidc)).    |
| Wrapper                | Devin-Identitätstokens laufen nach 60 Sekunden ab, daher stellt jeder CLI-Aufruf sein eigenes aus.              |
| `auth_type = env-oidc` | Pinnt die CLI auf Token-Föderation an, sodass sie nie auf ein PAT oder eine interaktive Anmeldung zurückgreift. |
| `host` / `client_id`   | Die Workspace-URL und die `applicationId` des Service-Principals aus der Tabelle oben.                          |
| `audience`             | Die audience, die der Wrapper anfordert und die Sie unten in die Föderationsrichtlinie eintragen.               |
| `knowledge`            | Teilt Devin mit, dass die CLI bereits authentifiziert ist, sodass sie kein `databricks auth login` versucht.    |

Das Profil enthält kein Secret und kann daher gefahrlos während `initialize` geschrieben werden. Wenn Sie von Option A wechseln, entfernen Sie das Devin Secret `DATABRICKS_CLIENT_SECRET`, sobald die untenstehende Richtlinie eingerichtet ist, damit die CLI nicht zwei Anmeldedaten vorfindet.

<div id="2-build-the-snapshot">
  #### 2. Snapshot erstellen
</div>

Speichern Sie den Blueprint und warten Sie, bis der Build den Status **Success** anzeigt. Nichts im Blueprint hängt von der Föderationsrichtlinie ab, die Sie als Nächstes erstellen – ein erneuter Build ist danach also nicht nötig.

<div id="3-create-the-federation-policy">
  #### 3. Die Föderationsrichtlinie erstellen
</div>

Sobald der Blueprint erstellt ist, können Devin-Sitzungen Identitätstoken ausstellen. Verwenden Sie eines davon, um die genauen Claims auszulesen, denen Databricks vertrauen muss, und erstellen Sie anschließend eine passende Föderationsrichtlinie für den Service-Principal.

<Steps>
  <Step title="Issuer und Subject auslesen">
    Starten Sie eine neue Devin-Sitzung und lassen Sie Folgendes ausführen. Ausgegeben werden ausschließlich die Identitäts-Claims des Tokens, niemals das Token selbst.

    ```bash theme={null}
    devin-oidc token --audience databricks | python3 -c '
    import sys, json, base64
    p = sys.stdin.read().strip().split(".")[1]
    c = json.loads(base64.urlsafe_b64decode(p + "=="))
    print(json.dumps({k: c[k] for k in ("iss", "sub", "aud")}, indent=2))'
    ```

    Erwartete Form:

    ```json theme={null}
    {
      "iss": "https://app.devin.ai",
      "sub": "org_id:<your-org-id>",
      "aud": "databricks"
    }
    ```

    Bei Enterprise-Deployments ist `iss` Ihre eigene Devin-URL (zum Beispiel `https://yourcompany.devinenterprise.com`). Übernehmen Sie `iss` und `sub` exakt so, wie sie ausgegeben werden. Fügen Sie das rohe Token nicht in Tickets oder Dokumente ein; es ist für die nächsten 60 Sekunden ein gültiges Bearer-Credential.
  </Step>

  <Step title="Die Föderationsrichtlinie schreiben">
    Speichern Sie Folgendes als `devin-federation-policy.json` und setzen Sie dabei die Werte aus dem vorherigen Schritt ein:

    ```json theme={null}
    {
      "description": "Allow Devin sessions to authenticate as the devin-sessions service principal",
      "oidc_policy": {
        "issuer": "https://<your-devin-host>",
        "audiences": ["databricks"],
        "subject": "org_id:<your-org-id>"
      }
    }
    ```

    Alle drei Felder werden exakt abgeglichen:

    * `issuer` muss dem `iss` des Tokens entsprechen, einschließlich Schema und ohne abschließenden Schrägstrich.
    * `audiences` muss die Audience enthalten, die Devin anfordert (in dieser Anleitung `databricks`).
    * `subject` muss dem `sub` des Tokens entsprechen. Standardmäßig ist das Subject Ihre Organisations-ID, sodass sich jede Sitzung der Organisation als dieser Principal authentifizieren kann. Für Databricks ist das die richtige Granularität, da Föderationsrichtlinien das Subject als wörtliche Zeichenkette abgleichen. Sitzungsbezogene Claims wie `devin_id` ändern sich bei jeder Sitzung und lassen sich mit einer statischen Richtlinie nicht abgleichen.

    Lassen Sie `subject_claim`, `jwks_uri` und `jwks_json` leer. Databricks verwendet standardmäßig den `sub`-Claim und ermittelt die JWKS über `/.well-known/openid-configuration` des Issuers.
  </Step>

  <Step title="Die Richtlinie an den Service-Principal anhängen">
    ```bash theme={null}
    databricks account service-principal-federation-policy create <SERVICE_PRINCIPAL_ID> \
      --policy-id devin-sessions \
      --json @devin-federation-policy.json
    ```

    Prüfen Sie, ob sie vorhanden ist:

    ```bash theme={null}
    databricks account service-principal-federation-policy list <SERVICE_PRINCIPAL_ID>
    ```
  </Step>
</Steps>

Das vom Blueprint geschriebene Profil verweist bereits auf diesen Service-Principal, ein erneutes Erstellen ist daher nicht nötig. Fahren Sie mit [Schritt 3](#step-3-grant-permissions) fort.

<div id="rebuilds-and-version-pinning">
  ### Rebuilds und Versions-Pinning
</div>

Sowohl das Databricks-Installationsskript als auch `setup-devin-oidc@main` folgen ihren Upstream-`main`-Branches, sodass ein vollständiger Build neue Releases übernimmt; ein [differenzieller Build](/de/onboard-devin/environment/differential-builds) überspringt `initialize` und behält die bereits im Snapshot vorhandenen Versionen bei, bis sich der Blueprint ändert. Wenn Sie reproduzierbare Builds benötigen, laden Sie den Installer nicht von `main`, sondern von einem Release-Tag (zum Beispiel `.../databricks/setup-cli/v1.17.0/install.sh`) – damit wird genau diese CLI-Version installiert – und pinnen Sie die Action an einen Commit-SHA an (`setup-devin-oidc@<sha>`).

<div id="step-3-grant-permissions">
  ## Schritt 3: Berechtigungen erteilen
</div>

Die Authentifizierung belegt lediglich, wer Devin ist. Was Devin sehen oder ändern darf, legen die Workspace-Berechtigungen und die Unity-Catalog-Grants fest, die Sie jederzeit anpassen können, ohne den Blueprint zu ändern. Beginnen Sie mit dem kleinsten Profil, das für die Aufgabe ausreicht, und erweitern Sie es gezielt.

<div id="permission-profiles">
  ### Berechtigungsprofile
</div>

| Profil                      | Typische Aufgaben                                                                                                               | Unity-Catalog-Grants                                                                                                                   | Workspace-Berechtigungen                                                                                                                 |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Explore** (hier beginnen) | Fragen zu Daten beantworten, Schemas dokumentieren, fehlgeschlagene Jobs untersuchen, Query-Korrekturen in einem PR vorschlagen | `USE CATALOG`, `USE SCHEMA`, `SELECT`, `BROWSE` auf Produktionskatalogen; `READ VOLUME`, wo Devin Dateien benötigt                     | `CAN USE` auf einem SQL-Warehouse; `CAN VIEW` auf den Jobs und Pipelines, die Devin untersuchen soll                                     |
| **Build**                   | Tabellen, Funktionen und Notebooks in einer Sandbox prototypisieren; Tests mit echten, schreibgeschützten Daten ausführen       | Explore-Grants auf Produktion sowie Eigentümerschaft an (oder `ALL PRIVILEGES` auf) einem dedizierten `devin_dev`-Katalog oder -Schema | Explore-Berechtigungen sowie `CAN MANAGE RUN` auf Sandbox-Jobs und eine restriktive Cluster-Richtlinie, falls Devin Compute starten darf |
| **Operate**                 | Bestimmte Produktions-Jobs erneut ausführen oder reparieren, sobald sich Explore und Build bewährt haben                        | Explore-Grants sowie `MODIFY` auf den konkreten Tabellen, in die ein Job schreibt                                                      | `CAN MANAGE RUN` auf den konkreten Jobs – pro Job gewährt statt workspace-weit                                                           |

Grant-Statements adressieren den Service-Principal über seine Application-ID:

```sql theme={null}
-- Explore: schreibgeschützter Zugriff auf den Analytics-Katalog der Produktionsumgebung
GRANT USE CATALOG, BROWSE ON CATALOG analytics TO `<sp-application-id>`;
GRANT USE SCHEMA, SELECT ON SCHEMA analytics.gold TO `<sp-application-id>`;
GRANT READ VOLUME ON VOLUME analytics.gold.landing TO `<sp-application-id>`;

-- Build: ein Sandbox-Katalog im Besitz von Devin, isoliert von der Produktionsumgebung
CREATE CATALOG IF NOT EXISTS devin_dev;
ALTER CATALOG devin_dev OWNER TO `<sp-application-id>`;
```

Wenn Sie eine gruppenbasierte Verwaltung bevorzugen, fügen Sie den Service-Principal einer Gruppe wie `devin-agents` hinzu und erteilen Sie die Berechtigungen stattdessen der Gruppe.

<Tip>
  Codeänderungen sollten weiterhin über Pull-Requests laufen. Devin kann Produktionsdaten lesen, um ein Problem zu verstehen und einen Fix in der Sandbox zu validieren, aber die Änderung am Notebook, an der Job-Definition oder am Asset Bundle gelangt über Ihren normalen Review-Prozess in die Produktion – nicht durch direktes Bearbeiten der Produktionsumgebung.
</Tip>

<div id="step-4-install-the-databricks-skills-plugin-optional">
  ## Step 4: Databricks Skills Plugin installieren (optional)
</div>

Databricks veröffentlicht [Agent Skills](https://github.com/databricks/databricks-agent-skills), die Coding-Agents Databricks-Workflows vermitteln: Asset Bundles, Jobs, SQL, Unity Catalog und Spark. Installierst du sie als Devin-[Plugin](/de/product-guides/plugins), verfügt Devin zusätzlich zur CLI über dieses Know-how.

1. Öffne **Customize → Plugins** und wähle **Add plugin → From repository**.
2. Gib das Repository `databricks/databricks-agent-skills` und das Unterverzeichnis `plugins/databricks/claude` an. Das Plugin-Manifest liegt in diesem Unterordner – bei einer Installation aus dem Root-Verzeichnis erscheint daher die Meldung **No plugin manifest found**.
3. Installiere im Geltungsbereich **Organization**, falls du in Step 2 ein Organization Blueprint verwendet hast. Hast du ein Repository Blueprint verwendet, deklariere das Plugin stattdessen in der `.devin/config.json` des jeweiligen Repositorys (siehe [Vererbung und Ebenen](/de/cli/extensibility/plugins/overview#inheritance-and-levels)), damit nur Sitzungen mit der CLI auch die Skills erhalten.
4. [Pinne das Plugin an einen Commit an](/de/product-guides/plugins#pinning-a-plugin), sobald es funktioniert, damit Änderungen aus dem Upstream nicht ungeprüft in deinen Sitzungen landen.

Die Kern-Skill des Plugins empfiehlt, `databricks auth login` auszuführen, um ein Profil einzurichten. Dieser interaktive Browser-Ablauf lässt sich in einer unbeaufsichtigten Devin-Sitzung nicht abschließen und ist hier auch nicht nötig: Der `knowledge`-Eintrag aus Step 2 teilt Devin mit, dass die CLI bereits authentifiziert ist.

<div id="step-5-verify">
  ## Schritt 5: Überprüfen
</div>

Starten Sie eine neue Sitzung (nachdem der Blueprint-Build erfolgreich abgeschlossen wurde) und bitten Sie Devin, Folgendes auszuführen:

```bash theme={null}
databricks --version
databricks current-user me
```

`current-user me` sollte den Service-Principal zurückgeben, wobei `userName` seiner Anwendungs-ID entspricht. So prüfen Sie, welche Authentifizierungsmethode die CLI gewählt hat:

```bash theme={null}
databricks auth describe
```

Bei Option A wird hier `oauth-m2m` gemeldet, bei Option B `env-oidc`.

Eine erfolgreiche Authentifizierung bedeutet nicht, dass Devin auch auf Ihre Daten zugreifen kann. Stellen Sie sicher, dass die Berechtigungen aus Schritt 3 greifen:

```bash theme={null}
databricks catalogs list
databricks warehouses list
databricks grants get catalog <catalog-name>
```

Ersetze `<catalog-name>` durch einen Katalog, den du in Schritt 3 freigegeben hast (die Beispiele dort verwenden `analytics`). Bitte Devin anschließend, eine kleine schreibgeschützte Abfrage auf einem Warehouse auszuführen, für das Devin `CAN USE` hat, und – falls du ein Build-Profil eingerichtet hast – eine Tabelle in `devin_dev` zu erstellen und wieder zu löschen. Eine Abfrage auf eine Produktionstabelle, für die Devin kein `SELECT` hat, sollte fehlschlagen; genau dieser Fehler zeigt, dass die Berechtigungsgrenze greift.

<div id="troubleshooting">
  ## Fehlerbehebung
</div>

| Symptom                                                                                   | Betrifft | Ursache und Behebung                                                                                                                                                                                                                                                                        |
| ----------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Fehler wegen widersprüchlicher Anmeldedaten oder mehr als einer Authentifizierungsmethode | Option A | Entfernen Sie `DATABRICKS_TOKEN`, `DATABRICKS_USERNAME` und jedes `~/.databrickscfg`-Profil. Die CLI rät nicht, wenn mehr als eine Authentifizierungsmethode konfiguriert ist.                                                                                                              |
| `DATABRICKS_OIDC_TOKEN` nicht gesetzt oder leer                                           | Option B | Der Wrapper wurde umgangen oder ist nicht installiert. Prüfen Sie, ob `which databricks` auf den Wrapper verweist und ob `devin-oidc token --audience databricks` für sich allein erfolgreich läuft.                                                                                        |
| `invalid_grant` oder ein Fehler, der das Subject erwähnt                                  | Option B | Das `subject` der Richtlinie stimmt nicht exakt mit dem `sub` des Tokens überein. Führen Sie das Claims-Skript aus Schritt 2 erneut aus und vergleichen Sie Zeichen für Zeichen.                                                                                                            |
| Fehler, der die Audience erwähnt                                                          | Option B | Die `audiences` der Richtlinie enthalten nicht die vom Wrapper angeforderte Audience. Beide sind standardmäßig `databricks`; halten Sie sie identisch.                                                                                                                                      |
| Fehler, der den Issuer, JWKS oder die Signatur erwähnt                                    | Option B | `issuer` enthält einen Tippfehler (abschließender Schrägstrich, `http`, falscher Host) oder Databricks kann `https://<your-devin-host>/.well-known/jwks.json` nicht erreichen. Rufen Sie diese URL von außerhalb Ihres Netzwerks auf, um zu bestätigen, dass sie öffentlich erreichbar ist. |
| Token abgelaufen                                                                          | Option B | Devin-Identity-Tokens sind 60 Sekunden gültig. Verwenden Sie den Wrapper, anstatt ein Token manuell zu erzeugen.                                                                                                                                                                            |
| Die CLI erkennt `env-oidc` nicht                                                          | Option B | Der Snapshot enthält eine alte CLI (oder das Legacy-Python-Paket `databricks-cli`). Entfernen Sie das alte Paket aus dem Blueprint und bauen Sie ihn neu.                                                                                                                                   |
| Authentifiziert, aber `catalogs list` ist leer oder eine Query wird abgelehnt             | Beide    | Der Principal ist authentifiziert, aber nicht autorisiert. Prüfen Sie die Workspace-Zuweisung (Schritt 1) und die Unity-Catalog-Berechtigungen (Schritt 3) mit `databricks grants get catalog <name>`.                                                                                      |
| Verbindungs-Timeouts oder DNS-Fehler                                                      | Beide    | Der Workspace-Host ist von Devin aus nicht erreichbar. Fügen Sie ihn (und bei Bedarf den Account-Host) Ihrer Devin-[Netzwerkrichtlinie](/de/product-guides/security-profiles) hinzu.                                                                                                        |

<div id="support">
  ## Support
</div>

Für das Setup auf Databricks-Seite (Service-Principals, OAuth-Secrets, Föderationsrichtlinien, Unity Catalog) siehe die [Databricks-Dokumentation zur Authentifizierung](https://docs.databricks.com/aws/en/dev-tools/auth/) (bei Bedarf zur Azure- oder GCP-Ausgabe wechseln). Für das Setup auf Devin-Seite (Blueprints, OIDC, Plugins, Netzwerkrichtlinie) wende dich an [support@cognition.ai](mailto:support@cognition.ai) oder an dein Account-Team.
