この統合は、すでにお客様が管理している 3 つの要素で構成されます。Databricks の service principal、environment ブループリントを通じてインストールされる Databricks CLI、そして (任意で) Databricks の skills plugin です。Databricks、その workspace、およびすべての権限は、お客様の account 内に留まります。
Devin の認証方法を選択する
まずは Devin を Databricks に対してすぐ動かしたい場合は、オプション A から始めてください。service principal やその権限付与に手を加えることなく、後からオプション B に移行できます。
なぜDevinをDatabricksに接続するのか?
- Devinがデータプラットフォームのある場所で作業できる。 Databricksでの作業の多くは、repo内のnotebookを編集するだけでは終わりません。jobがなぜfailedしたのかをcheckする、テーブルのschemaを読む、ウェアハウスに対してqueryする、pipelineを調べる、といった作業が中心です。DevinにCLIを渡せば、これらは人間に尋ねるべき質問ではなく、Devin自身が実行できる作業になります。
- 監査可能な単一のidentity。 Devinはあなたが作成したservice principalとして動作するため、すべてのAPIコール、query、jobの実行が、エンジニア個人のtokenではなくそのidentityとしてDatabricksのaudit logsやUnity Catalogのリネージに記録されます。
- Devinが触れられる範囲はUnity Catalogが決める。 Devinがauthenticateできるかどうかを決めるのはOAuthです。何を読めるか、何をchangeできるかを決めるのは、Unity Catalogのグラントとworkspaceのpermissionsです。本番環境ではread-onlyから始め、Devinにはbuild用のsandbox catalogを与え、その挙動を見極めてから初めてscopeを広げる、という進め方ができます。
- secretを保存しない構成への道。 OIDCトークンフェデレーション (オプションB) を利用すれば、DevinはDatabricksのtokenもclient secretも一切保存しません。各セッションでは、60秒間有効なDevinのidentity tokenをshort-livedなDatabricks OAuth tokenと交換します。
概要
Databricks スキルプラグインは、5つ目の任意のレイヤーです。CLI に加えて、Databricks 固有のワークフロー (Asset Bundles、job、SQL、Unity Catalog) を Devin に習得させます。
前提条件
- AWS、Azure、または GCP 上の Databricks アカウントと、セットアップを行う担当者の アカウント管理者 権限。service principal、OAuth シークレット、フェデレーションポリシーの作成はアカウントレベルで行います。
- Unity Catalog が有効になっている 1 つ以上の workspace。本ガイドでは、Devin がアクセスするデータを Unity Catalog が管理していることを前提とします。
- 後述のアカウントレベルのコマンドを実行するための、管理者自身の machine 上の Databricks CLI。これらのコマンドには最近のバージョンであれば利用できます。Devin 用の CLI は Step 2 で別途インストールします。
- 組織の environment ブループリント (Settings > Environment > Blueprints) を編集する権限。
- オプション A の場合は、Devin Secrets を追加する権限。
- オプション B の場合は、Devin の OIDC issuer URL と Organization ID。Step 2 では、Devin セッション内の token から両方を取得する方法を説明します。背景については OIDC によるクラウド認証 を参照してください。
- Devin セッションが HTTPS 経由で workspace ホストに到達できる必要があります (例:
https://dbc-xxxx.cloud.databricks.com、https://adb-xxxx.azuredatabricks.net、https://xxxx.gcp.databricks.com) 。組織で Devin の network policy を利用している場合は、workspace ホストを追加し、アカウントレベルのコマンドを実行する場合はアカウントホスト (accounts.cloud.databricks.com、accounts.azuredatabricks.net、またはaccounts.gcp.databricks.com) も追加してください。 - オプション B の場合、token の署名を検証するために、Databricks が公開インターネット経由で
https://<your-devin-host>/.well-known/jwks.jsonにある Devin の JWKS を取得できる必要があります。
Step 1: サービスプリンシパルを作成する
続いて、Devin が利用する各ワークスペースに service principal を割り当てます。割り当ては、アカウントコンソールの User management → Service principals から、または CLI で実行できます。
ADMIN ではなく USER を利用してください。Devin にワークスペースの管理者権限は不要です。
ステップ2: Devinをサービスプリンシパルに接続する
- オプションA: OAuthクライアントシークレット。標準的なOAuth M2M方式です。サービスプリンシパルにクライアントシークレットを発行し、それをDevin Secretsに保存します。最も手早く始められる方法です。
- オプションB: OIDCトークンフェデレーション。Devinのセッションごとに、Devinが署名した短命のOpenID Connectトークンを発行できます。Databricksのトークンフェデレーションにより、サービスプリンシパルがその発行者を信頼できるようになるため、Devinは自身のIDトークンをDatabricksのOAuthトークンと交換します。Databricksのシークレットを作成・保存する必要が一切ないため、Databricksは自動化されたワークロードにこの方式を強く推奨しています。
オプションA: OAuthクライアントシークレット
1. OAuth シークレットを生成する
sql、jobs、unity-catalog など Devin に必要な API スコープのみに限定してください。すべてのスコープを選択することは避けてください。
2. Devin シークレットを追加する
client ID と client secret が設定されていれば、CLI は自動的に OAuth M2M を選択するため、
DATABRICKS_AUTH_TYPE の設定は不要です。他のすべての方式を明示的に除外したい場合のみ oauth-m2m を設定してください。
シークレットは新しいセッションの開始時に環境変数として注入されるため、CLI 用のプロファイルファイルは不要です。ローテーションしたシークレットは、再ビルドなしで次回の新しいセッションから適用されます。
3. ブループリントを追加する
initialize 中にシークレットをファイルへ書き込まないでください。そこに書き込まれた内容はすべてスナップショットに取り込まれます。
4. スナップショットをビルドする
オプション B: OIDC トークンフェデレーション
iss、sub、aud)を発行し、service principal に設定したフェデレーションポリシーによって、Databricks がそのトークンを信頼するようになります。ブループリントは devin-oidc CLI をインストールし、すべての呼び出しで新しいトークンが渡されるように databricks をラップしたうえで、service principal を指す profile を書き込みます。あとは、セッションからトークンの claims を読み取り、それに一致するポリシーを作成するだけです。
1. ブループリントを追加する
このプロファイルには secret が含まれないため、
initialize 中に書き込んでも安全です。Option A から切り替える場合は、下記の policy を設定したうえで DATABRICKS_CLIENT_SECRET の Devin Secret を削除し、CLI が 2 つの認証情報を認識しないようにしてください。
2. スナップショットをビルドする
3. フェデレーションポリシーを作成する
1
issuer と subject を確認する
新しい Devin セッションを開始し、以下を実行するよう指示してください。出力されるのはトークンの ID クレームのみで、トークン自体が出力されることはありません。想定される出力形式:Enterprise デプロイメントでは、
iss はカスタムの Devin URL (例: https://yourcompany.devinenterprise.com) になります。iss と sub は出力されたとおりに正確にコピーしてください。生のトークンをチケットやドキュメントに貼り付けないでください。これは以降 60 秒間有効なベアラー認証情報です。2
フェデレーションポリシーを記述する
前の手順で得た値に置き換えたうえで、以下を 3 つのフィールドはいずれも完全一致が必要です:
devin-federation-policy.json として保存します:issuerは、スキームを含み末尾にスラッシュを付けない形で、トークンのissと完全に一致している必要があります。audiencesには Devin が要求するオーディエンス (本ガイドではdatabricks) を含める必要があります。subjectはトークンのsubと一致している必要があります。デフォルトの subject は組織 ID であるため、組織内のすべてのセッションがこの principal として認証できます。フェデレーションポリシーは subject をリテラル文字列として照合するため、Databricks ではこの時間粒度が適切です。devin_idのようなセッション単位のクレームはセッションごとに値が変わるため、静的なポリシーでは照合できません。
subject_claim、jwks_uri、jwks_json は未設定のままにしてください。Databricks はデフォルトで sub クレームを利用し、issuer の /.well-known/openid-configuration から JWKS を検出します。3
ポリシーを service principal にアタッチする
再ビルドとバージョンの固定
setup-devin-oidc@main はいずれもアップストリームの main ブランチを追跡するため、フルビルドでは新しいリリースが取り込まれます。一方、差分ビルドは initialize をスキップし、ブループリントが変更されるまではスナップショットにあるバージョンをそのまま維持します。再現性のあるビルドが必要な場合は、main ではなくリリースタグからインストーラーを取得し (例: .../databricks/setup-cli/v1.17.0/install.sh) 、その CLI バージョンのみをインストールするようにしたうえで、action をコミット SHA に固定してください (setup-devin-oidc@<sha>) 。
ステップ3: 権限を付与する
権限プロファイル
権限付与のステートメントでは、サービスプリンシパルをアプリケーション ID で指定します。
devin-agents などの group に追加し、その group に対して権限を付与してください。
Step 4: Databricks スキルプラグインをインストールする(任意)
- Customize → Plugins を開き、Add plugin → From repository を選択します。
- リポジトリに
databricks/databricks-agent-skills、サブディレクトリにplugins/databricks/claudeを入力します。プラグインのマニフェストはこのサブフォルダ内にあるため、repository root からインストールすると No plugin manifest found と表示されます。 - Step 2 で Organization blueprint を利用した場合は、Organization スコープでインストールします。リポジトリブループリントを利用した場合は、代わりにそのリポジトリの
.devin/config.jsonにプラグインを宣言してください(inheritance and levels を参照)。こうすれば、CLI を備えたセッションにのみスキルが適用されます。 - 動作を確認できたらプラグインを commit にピン留めし、上流の変更がレビューされないままセッションに入り込まないようにします。
databricks auth login を実行することを推奨しています。ただし、この対話的なブラウザフローは無人の Devin セッションでは完了できず、ここでは不要です。CLI がすでに認証済みであることは、Step 2 の knowledge 項目が Devin に伝えます。
Step 5: 検証
current-user me は、userName がそのアプリケーション ID と一致する service principal を返すはずです。CLI がどの認証方式を選択したかを確認するには、次のようにします。
oauth-m2m、オプションBの場合は env-oidc と報告されます。
認証に成功しても、Devin がデータにアクセスできるとは限りません。ステップ3で付与した権限が適用されていることを確認してください。
<catalog-name> は、Step 3 で付与したカタログに置き換えてください (使用例では analytics を使用しています) 。次に、Devin が CAN USE を持つウェアハウスに対して小さな読み取り専用クエリを実行するよう依頼し、Build プロファイルを設定している場合は devin_dev でテーブルの作成と削除も依頼してください。Devin が SELECT 権限を持たない本番テーブルへのクエリは失敗するはずです。この失敗こそが、権限境界が正しく機能している証拠です。

