SharePoint 取り込み用の OAuth M2M を構成する
ベータ版
SharePoint コネクタはベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。
プレビュー
SharePoint の M2M OAuth はパブリック プレビュー段階です。
Databricks への SharePoint 取り込み用に OAuth マシン間 (M2M) 認証を構成する方法を学習します。
どの権限モデルを使用すればよいですか?
M2M 認証は、Microsoft Azure で次のアクセス許可モデルをサポートしています。
- Sites.Read.All : 組織内のすべての SharePoint サイトへのアクセスを許可します。このオプションではセットアップステップは少なくなりますが、より幅広いアクセスが可能になります。
- Sites.Selected : 特定の SharePoint サイトへのアクセスのみを許可します。これには追加の構成が必要ですが、最小権限の原則に従います。
Databricks 、サービスプリンシパルのアクセスを取り込む必要があるサイトのみに制限するために、可能な場合はSites.Selectedを使用することをお勧めします。
前提条件
- Microsoft Entra ID テナントの管理者権限。
Sites.Read.All権限
このオプションにより、サービスプリンシパルに組織内のすべての SharePoint サイトへのアクセスが許可されます。
ステップ 1: SharePoint サイト ID を取得する
- ブラウザで目的の SharePoint サイトにアクセスします。
- URL に
/_api/site/id追加します。 - Enter キー を押します。
ステップ 2: SharePoint ドライブ名を取得する (オプション)
SharePoint サイト内のすべてのドライブとドキュメントを取り込む場合は、この手順をスキップしてください。 ドライブのサブセットのみを取り込む場合は、その名前を収集する必要があります。
ドライブ名は左側のメニューに表示されます。各サイトには 「ドキュメント」 と呼ばれるデフォルトのドライブがあります。ただし、組織には追加のドライブがある可能性があります。たとえば、次のスクリーンショットのドライブには、 doclib1 、 subsite1doclib1などが含まれます。

一部のドライブは、リストから非表示になっている場合があります。ドライブの作成者は、ドライブ設定でこれを構成できます。この場合、隠しドライブは サイト コンテンツ セクションに表示される可能性があります。

ステップ 3: Microsoft Entra ID アプリケーションを作成する
このステップでは、サービスプリンシパルを使用して SharePoint ファイルにアクセスできるアプリケーション登録を作成します。
-
Microsoft Azureポータル( https://portal.azure.com )では、 Microsoft Entra IDを クリックします。「Microsoft Entra ID」を検索する必要があるかもしれません。

-
左側のサイドバーの 「管理」 セクションで、 「アプリの登録」 をクリックします。
-
「 新規登録 」をクリックします。

-
アプリケーションの登録 フォームで、次の項目を指定します。
- アプリケーションの名前 (例: 「Databricks SharePoint Ingestion」)。
- 他のテナントがこのアプリケーションにアクセスできるようにするかどうか。
M2M 認証ではリダイレクト URL を指定する必要はありません。
-
「登録する」 をクリックします。 アプリの詳細ページにリダイレクトされます。
-
次の値をメモします。
- アプリケーション (クライアント) ID
- ディレクトリ (テナント) ID
-
クライアント資格情報 : 証明書またはシークレットの追加 をクリックします。
-
「 + 新しいクライアントのシークレット 」をクリックします。

-
説明を追加します。
-
[追加] をクリックします。更新されたクライアント シークレットのリストが表示されます。
-
クライアントシークレットの値をコピーして安全に保存します。ページを離れた後は、クライアント シークレットにアクセスできなくなります。
ステップ 4: API権限を構成する
SharePoint ファイルを読み取るために必要な権限をアプリケーションに付与します。
-
アプリ登録ページで、左側のメニューの 「API 権限」 をクリックします。
-
+ 権限を追加 を クリックします。
-
[API アクセス許可の要求] パネルで、 [Microsoft Graph] をクリックします。
-
[アプリケーションの権限] をクリックします。
-
次の権限を検索して選択します。
- サイト.Read.All
- ファイル.読み取り.すべて
-
[権限の追加] をクリックします。
-
[あなたの組織名] の管理者の同意を付与する をクリックします。
-
「はい」 をクリックして確定します。
権限リストの ステータス 列には、管理者の同意が付与されたことを示す緑色のチェックマークが表示されます。
ステップ 5: Databricksで接続を作成する
-
カタログ エクスプローラーで、左側のメニューの [外部データ] をクリックします。
-
接続の作成 をクリックします。
-
[接続の作成] ダイアログで、以下を指定します。
- 接続名 : 接続の一意の名前
- 接続タイプ : Microsoft SharePoint
- 認証タイプ : OAuth マシン間
- Client ID : ステップ 3 のアプリケーション (クライアント) ID
- Client Secret : ステップ 3 のクライアント シークレットの値
- ドメイン : SharePointドメイン(形式:
https://YOURINSTANCE.sharepoint.com - テナント ID : ステップ 3 のディレクトリ (テナント) ID
-
作成 をクリックします。
Sites.Selected権限
このオプションは、サービスプリンシパルのアクセスを特定の SharePoint サイトのみに制限します。
ステップ 1-3: 基本セットアップを完了する
Sites.Read.Allセクションのステップ 1 ~ 3 に従ってください。 これらのステップは両方の権限モデルで同じです。
- SharePoint サイト ID を取得します。
- SharePoint ドライブ名を取得します (オプション)。
- Microsoft Entra ID アプリケーションを作成します。
ステップ 4: API権限を構成する Sites.Selected
サイト固有の追加承認を必要とする制限された権限をアプリケーションに付与します。
-
アプリ登録ページで、左側のメニューの 「API 権限」 をクリックします。
-
+ 権限を追加 を クリックします。
-
[API アクセス許可の要求] パネルで、 [Microsoft Graph] をクリックします。
-
[アプリケーションの権限] をクリックします。
-
Sites.Selected を検索して選択します。
-
[権限の追加] をクリックします。
-
[あなたの組織名] の管理者の同意を付与する をクリックします。
このステップには、 Microsoft Entra ID テナントの管理者権限が必要です。
-
「はい」 をクリックして確定します。
権限リストの ステータス 列には、管理者の同意が付与されたことを示す緑色のチェックマークが表示されます。
ステップ 4b: サイト固有の権限を付与する
Azure でSites.Selected構成した後、特定の SharePoint サイトへのアプリケーション アクセスを明示的に許可する必要があります。これは、Microsoft Graph Explorer または Python ノートブックを使用して実行できます。
- Microsoft Graph Explorer
- Python notebook
-
Microsoft Graph Explorerに移動します。
-
SharePoint サイトの管理者権限を持つアカウントでサインインします。
-
[権限の変更] をクリックし、必要な権限 (Sites.FullControl.All) に同意します。
-
HTTP メソッドを POST に変更します。
-
次の URL を入力し、
{site_id}ステップ 1 の SharePoint サイト ID に置き換えます。https://graph.microsoft.com/v1.0/sites/{site_id}/permissions -
リクエスト本文 セクションで、プレースホルダー値を置き換えて次の JSON を貼り付けます。
JSON{
"roles": ["read"],
"grantedToIdentities": [
{
"application": {
"id": "<YOUR_CLIENT_ID>",
"displayName": "<YOUR_APP_NAME>"
}
}
]
}以下のように置き換えてください。
<YOUR_CLIENT_ID>: ステップ 3 のアプリケーション (クライアント) ID<YOUR_APP_NAME>: アプリケーション登録名
-
クエリの実行を クリックします。
成功した応答は、許可が付与されたことを示します。
-
Databricks ワークスペースに新しいノートブックを作成します。
-
セルで次のコマンドを実行して、MSAL ライブラリをインストールします。
Python%pip install msal -
新しいセルに次のコードを貼り付け、プレースホルダーの値を置き換えます。
Pythonimport msal
import requests
# Configuration - Replace these values
TENANT_ID = "<YOUR_TENANT_ID>" # Directory (tenant) ID from Step 3
ADMIN_CLIENT_ID = "<ADMIN_CLIENT_ID>" # Client ID of an app with admin consent
ADMIN_CLIENT_SECRET = "<ADMIN_CLIENT_SECRET>" # Client secret of admin app
TARGET_APP_CLIENT_ID = "<TARGET_CLIENT_ID>" # Client ID from Step 3
TARGET_APP_DISPLAY_NAME = "<TARGET_APP_NAME>" # Name of your app
SITE_ID = "<YOUR_SITE_ID>" # SharePoint site ID from Step 1
# Authenticate using MSAL
authority = f"https://login.microsoftonline.com/{TENANT_ID}"
app = msal.ConfidentialClientApplication(
ADMIN_CLIENT_ID,
authority=authority,
client_credential=ADMIN_CLIENT_SECRET
)
# Acquire token
token_result = app.acquire_token_for_client(
scopes=["https://graph.microsoft.com/.default"]
)
if "access_token" in token_result:
access_token = token_result["access_token"]
# Grant site permissions
grant_url = f"https://graph.microsoft.com/v1.0/sites/{SITE_ID}/permissions"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
grant_payload = {
"roles": ["read"],
"grantedToIdentities": [
{
"application": {
"id": TARGET_APP_CLIENT_ID,
"displayName": TARGET_APP_DISPLAY_NAME
}
}
]
}
response = requests.post(grant_url, headers=headers, json=grant_payload)
if response.status_code in [200, 201]:
print("Successfully granted site permissions")
print(response.json())
else:
print(f"Error: {response.status_code}")
print(response.text)
else:
print("Failed to acquire token")
print(token_result.get("error"))
print(token_result.get("error_description")) -
セルを実行します。成功した応答は、許可が付与されたことを示します。
ステップ 5: Databricksで接続を作成する
アプリケーション登録の資格情報を使用してDatabricksで接続を作成するには、 Sites.Read.Allセクションのステップ 5 に従います。