2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricks Appsのユーザー代理認証(OBO)

Posted at

こちらのユーザー代理認証(on-behalf-of-user authorization)、実際に触ったことがなかったのでした。

ユーザー認証は、on-behalf-of-user authorization とも呼ばれ、Databricks Apps アプリがアプリユーザーのアイデンティティで動作することを可能にします。Databricks はユーザーのアクセストークンをアプリに転送し、アプリはそのトークンを使用してユーザーに代わってリソースにアクセスします。Databricks は、ユーザーの既存の Unity Catalog ポリシーに基づいてすべての権限を強制します。

デフォルトではアプリに割り当てられるサービスプリンシパルに対するアクセスコントロールなので、きめ細かいアクセス制御ができないので、こちらの機能はありがたいです。

ただ、試すの面倒だなーと思っていたところ、いい感じのサンプルがありました。

早速試してみます。上のリポジトリをGitフォルダとして連携して同期します。

アプリを作る際には、こちらで説明されているようにユーザー認証のセクションで、アクセスするリソースのスコープを追加する必要があります。
Screenshot 2025-09-28 at 20.29.16.png
Screenshot 2025-09-28 at 20.29.32.png

Gitフォルダのauth-demoをデプロイします。
Screenshot 2025-09-28 at 20.30.13.png

デプロイしました。
Screenshot 2025-09-28 at 20.33.00.png

アプリにアクセスすると、このアプリはあなたの資格情報でリソースにアクセスする旨のメッセージが表示されます。上でスコープを指定したリソースが表示されます。
Screenshot 2025-09-28 at 20.33.28.png

アプリはこんな感じ。デフォルトで作成されるアプリごとのサービスプリンシパル(SP)とユーザー代理認証の比較を行うことができます。
Screenshot 2025-09-28 at 20.33.41.png

ただ、デフォルトのテーブルはサンプルデータなのでSPだろうがユーザーだろうがアクセスできます。
Screenshot 2025-09-28 at 20.33.56.png
Screenshot 2025-09-28 at 20.34.08.png

そこで、冒頭にあったUnity Catalogのポリシーを適用したテーブルで試します。

以下のポリシーでは自分以外を対象として適用される、列マスクのポリシーとなっています。
Screenshot 2025-09-28 at 20.37.19.png
Screenshot 2025-09-28 at 20.38.05.png

サービスプリンシパルでアクセスするとemail列がマスキングされています。
Screenshot 2025-09-28 at 20.39.07.png

自分として代理認証してもらうとマスキングされません。
Screenshot 2025-09-28 at 20.39.18.png

アプリがデータなどのリソースにアクセスする際には、ユーザーごとに挙動を変えたいというニーズは多いと思います。是非OBOをご活用ください!

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?