SharePoint 取り込み用の OAuth M2M を構成する
ほとんどのユーザーには、Databricks では OAuth U2M (Databricks 管理) を推奨しています。これは、Azure アプリケーション登録が不要で、すべて Databricks によって管理されます。ユーザー操作なしで実行される完全に自動化された本番運用パイプラインには、M2Mをご使用ください。
どの権限モデルを使用すればよいですか?
M2M 認証は、Microsoft Azure で次のアクセス許可モデルをサポートしています。
- Sites.Read.All : 組織内のすべての SharePoint サイトへのアクセスを許可します。このオプションではセットアップステップは少なくなりますが、より幅広いアクセスが可能になります。
- Sites.Selected : 特定の SharePoint サイトへのアクセスのみを許可します。これには追加の構成が必要ですが、最小権限の原則に従います。
Databricks 、サービスプリンシパルのアクセスを取り込む必要があるサイトのみに制限するために、可能な場合はSites.Selectedを使用することをお勧めします。
どちらの資格情報タイプを使用すればよいですか?
M2M認証では、Microsoft Entra IDアプリケーションで次のクレデンシャル型がサポートされています。
- 証明書 :X.509証明書とその秘密鍵。
- クライアントシークレット :Azure portalで生成するシークレット文字列。
Databricks では、証明書の使用をお勧めします。接続では、証明書またはクライアント シークレットのいずれか 1 つの資格情報の種類を使用します。
前提条件
- 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
次に、クライアント資格情報をアプリケーションに追加します。選択した資格情報のタイプのステップに従ってください。「使用する資格情報のタイプ」を参照してください。
- Certificate
- Client secret
接続には、PEM形式のX.509証明書と、PKCS #8 PEM形式の暗号化されていないRSAプライベートキーが必要です。暗号化されたプライベートキーはサポートされていません。
-
証明書と秘密鍵を生成します。たとえば、次の OpenSSL コマンドは、2 年間有効な自己署名証明書を作成します。
Bashopenssl req -x509 -newkey rsa:2048 -sha256 -days 730 -nodes \-keyout ~/databricks_key.pem -out ~/databricks_cert.pem \-subj "/CN=databricks-sharepoint"このコマンドは、ホームディレクトリに
databricks_cert.pem(公開証明書)とdatabricks_key.pem(秘密鍵)を作成します。組織の認証局が発行した証明書を使用することもできます。 -
別のソースからプライベートキーを使用する場合は、ファイルの先頭に
BEGIN PRIVATE KEY区切り文字があることを確認してください。BEGIN RSA PRIVATE KEY区切り文字で始まる場合は、PKCS #8形式に変換し、変換されたファイルをプライベートキーとして使用します。Bashopenssl pkcs8 -topk8 -nocrypt -in <private-key-file> -out ~/databricks_key.pem -
アプリの登録ページの左側のサイドバーの 「管理」 の下で、 「証明書とシークレット」 をクリックします。
-
証明書 tabをクリックします。
-
証明書をupload をクリックします。
-
databricks_cert.pemを選択し、説明を追加して、 追加 をクリックします。
-
プライベートキーファイルは安全に保管してください。接続を作成する際に証明書とプライベートキーを入力します。
証明書の有効期限が切れる。証明書の有効期限が切れる前に、新しい証明書をアプリケーションにuploadし、新しい証明書と秘密鍵で接続を更新してください。
-
クライアント資格情報 : 証明書またはシークレットの追加 をクリックします。
-
「 + 新しいクライアントのシークレット 」をクリックします。

-
説明を追加します。
-
[追加] をクリックします。更新されたクライアント シークレットのリストが表示されます。
-
クライアントシークレットの値をコピーして安全に保存します。ページを離れた後は、クライアント シークレットにアクセスできなくなります。
ステップ 4: API権限を構成する
SharePoint ファイルを読み取るために必要な権限をアプリケーションに付与します。
-
アプリ登録ページで、左側のメニューの 「API 権限」 をクリックします。
-
+ 権限を追加 を クリックします。
-
[API アクセス許可の要求] パネルで、 [Microsoft Graph] をクリックします。
-
[アプリケーションの権限] をクリックします。
-
次の権限を検索して選択します。
- サイト.Read.All
- ファイル.読み取り.すべて
-
[権限の追加] をクリックします。
-
[あなたの組織名] の管理者の同意を付与する をクリックします。
-
「はい」 をクリックして確定します。
権限リストの ステータス 列には、管理者の同意が付与されたことを示す緑色のチェックマークが表示されます。
ステップ 5: Databricksで接続を作成する
-
カタログ エクスプローラーで、左側のメニューの [外部データ] をクリックします。
-
接続の作成 をクリックします。
-
[接続の作成] ダイアログで、以下を指定します。
- 接続名 : 接続の一意の名前
- 接続タイプ : Microsoft SharePoint
- 認証タイプ : OAuth マシン間
- Client ID : ステップ 3 のアプリケーション (クライアント) ID
- 証明書を使用 :証明書で認証するには、このチェックボックスをオンにします。クライアントシークレットで認証するには、チェックを入れないでください。
- クライアント シークレット : ステップ 3 のクライアント シークレット値。このフィールドは、 証明書の使用 がクリアされている場合にのみ表示されます。
- クライアント証明書 pem : ステップ3の
databricks_cert.pemの内容。BEGIN CERTIFICATEおよびEND CERTIFICATEのデリミタを含みます。 証明書を使用 が選択されている場合に必要です。 - クライアントプライベートキー pem : ステップ3の
databricks_key.pemの内容。BEGIN PRIVATE KEYおよびEND PRIVATE KEY区切り文字を含みます。 証明書の使用 が選択されている場合に必要です。 - ドメイン : 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 msalimport requests# Configuration - Replace these valuesTENANT_ID = "<YOUR_TENANT_ID>" # Directory (tenant) ID from Step 3ADMIN_CLIENT_ID = "<ADMIN_CLIENT_ID>" # Client ID of an app with admin consentADMIN_CLIENT_SECRET = "<ADMIN_CLIENT_SECRET>" # Client secret of admin appTARGET_APP_CLIENT_ID = "<TARGET_CLIENT_ID>" # Client ID from Step 3TARGET_APP_DISPLAY_NAME = "<TARGET_APP_NAME>" # Name of your appSITE_ID = "<YOUR_SITE_ID>" # SharePoint site ID from Step 1# Authenticate using MSALauthority = f"https://login.microsoftonline.com/{TENANT_ID}"app = msal.ConfidentialClientApplication(ADMIN_CLIENT_ID,authority=authority,client_credential=ADMIN_CLIENT_SECRET)# Acquire tokentoken_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 permissionsgrant_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で接続を作成するには、ステップ 5: Databricksで接続を作成するの手順に従ってください。