Azure AD アプリのアプリ専用アクセス許可の設定
本製品 は、AzureServicePrincipalCert 認証スキームとAzure AD アプリケーションのアクセス許可を使用して、アプリ専用の認証をサポートします。 この設定により、アプリケーションはユーザー資格情報を必要とせずにMicrosoft SharePoint データに安全にアクセスできるようになり、SharePoint サイトへのシームレスなアクセスを必要とする自動化タスク、バックグラウンドサービス、および統合に最適です。
重要:Sites.Selected アクセス許可は、SharePoint Online およびREST スキーマを使用する場合にのみサポートされます。 この設定は、オンプレミスのSharePoint デプロイや、CSOM やSOAP などの他のスキーマとは互換性がありません。
Azure AD アプリケーション用のMicrosoft SharePoint アクセス許可は、必要なアクセスレベルに応じて異なります。 Sites.FullControl.All のようないくつかのアクセス許可は、すべてのMicrosoft SharePoint サイトに対して広範な管理アクセスを許可しますが、Sites.Selected のようなアクセス許可は、より制限されたサイト固有のアプローチを提供します。 適切なアクセス許可は、組織のセキュリティ要件とアプリケーションに付与するべき管理権限の程度に依存します。
以下では、Azure AD アプリで本製品 を設定し、証明書ベースのアプリ専用アクセスを使用して認証する手順を説明します。 このドキュメントでは、Sites.Selected アクセス許可を使用した細かいサイトアクセスに焦点を当てていますが、より広範なアクセス権や異なるレベルのアクセスが必要な場合にも同じ手順を適用できます。
Azure AD アプリの登録
Microsoft SharePoint をアプリ専用アクセス許可を使用して認証するには、はじめにMicrosoft Entra ID(旧Azure AD)でAzure AD アプリケーションを作成する必要があります。 Azure AD アプリケーションは、本製品 のような外部アプリケーションがOAuth 認証を使用してMicrosoft SharePoint と対話できるようにするセキュアなID として機能します。 これにより、ユーザー資格情報を保存する必要がなくなり、証明書ベースの安全な認証が可能になります。アプリケーションが登録されると、クライアントID が割り当てられ、Azure テナントに関連付けられます。これらの値は、後で認証を設定する際に必要になります。
重要:この設定では、Microsoft SharePoint に接続するメインアプリケーション(App 1)と、メインアプリケーションに特定のMicrosoft SharePoint サイトへのアクセス権を付与するために使用される一時的な管理アプリ(App 2)の2つのAzure AD アプリケーションが必要です。 管理アプリには、Sites.FullControl.All アクセス許可が必要です。 管理アプリをまだ作成していない場合は、サイトへのアクセスを付与する前に作成する必要があります。 Sites.FullControl.All を使用してすべてのサイトにアクセス権を付与する場合は、サイト割り当て用の2つ目のアプリを必要とせずにテナント全体のアクセス権を持つため、1つのアプリケーションだけで十分です。 ただし、特定のサイトへのアクセスを制限する場合は、続行する前に管理アプリを作成する必要があります。
以下の手順でアプリケーションを登録します。
- Azure Portal にログインします。
- 左側のナビゲーションペインでMicrosoft Entra ID(旧Azure Active Directory)->アプリの登録に移動します。
- 新規登録をクリックします。
- アプリケーション名を入力します。
- サポートされているアカウントの種類をこの組織ディレクトリ内のみに含まれるアカウントに設定します。
- 登録をクリックします。
- (オプション):管理アプリをまだ作成していない場合は、上記の手順を繰り返して2つ目のアプリを作成してください。
次の値を後で使用するためにコピーして保存してください。接続プロパティを設定する際に必要になります。
- アプリケーション(クライアント)ID – これはアプリケーションを一意に識別し、接続設定でOAuthJWTIssuer として使用されます。
- ディレクトリ(テナント)ID – これは、アプリが登録されているテナントを識別し、接続設定のAzureTenant として使用されます。
証明書の生成とアップロード
AzureServicePrincipalCert スキームを使用してアプリ専用の認証を行うには、自己署名証明書を生成してアプリケーションにアップロードする必要があります。 この証明書は安全な認証を可能にし、従来のパスワードベースの認証に取って代わります。
Note: 特定のサイトに権限を付与するために管理アプリ(App 2)を作成した場合、証明書は必要ありません。 代わりに、App 2 のクライアントシークレットを生成する必要があります。これを行うには、Azure Portal で証明書とシークレットに移動し、新しいクライアントシークレットを作成します。
以下の手順で証明書を生成し、アップロードします。
- PowerShell(管理者として実行)で以下のスクリプトを実行します。
.\Create-SelfSignedCertificate.ps1 -CommonName "MyCompanyName" -StartDate YYYY-MM-DD -EndDate YYYY-MM-DD
- 公開鍵(.CER)と秘密鍵(.PFX)をエクスポートします。
- Azure Portal に戻り、手順1で作成したアプリケーションを開きます。
- 左側のメニューの証明書とシークレットに移動します。
- 証明書をアップロードをクリックします。
- 先ほどエクスポートした.CER ファイル(公開鍵)を選択します。
- 追加をクリックします。
アプリへのアクセス許可の割り当て
デフォルトでは、新しく作成されたアプリケーションはMicrosoft SharePoint データにアクセスできません。アプリケーションがMicrosoft SharePoint と対話できるようにするには、必要なAPI 権限を割り当てる必要があります。 Microsoftは、Microsoft SharePoint に対して異なるアクセス許可レベルを提供しており、すべてのサイトへのフルアクセス(Sites.FullControl.All)から特定のサイトへの限定アクセス(Sites.Selected)までさまざまです。 選択したアクセス許可モデルによって、アプリケーションがMicrosoft SharePoint データをどの程度制御できるかが決まります。以下の手順では、管理者が特定のMicrosoft SharePoint サイトにのみアクセス権を付与できるSites.Selected に焦点を当てます。 Microsoft SharePoint テナント全体にわたってアプリケーションにフルアクセスを提供するSites.FullControl.All とは異なり、Sites.Selected は、アプリケーションが承認されたサイトとのみ対話できるようにします。
Azure Portal でSites.Selected アクセス許可を割り当てる場合は、Microsoft Graph ではなくSharePoint API で選択する必要があります。これは、本製品 がMicrosoft SharePoint への接続にSharePoint REST API を使用しており、 誤ったAPI の下でアクセス許可を割り当てると、認可に失敗するためです。
以下の手順でアクセス許可を割り当てます。
- 事前に作成したアプリケーションを開きます。
- 左側のナビゲーションでAPI のアクセス許可をクリックします。
- アクセス許可の追加をクリックします。
- アプリケーションに必要なアクセス許可の種類でアプリケーションの許可を選択します。
- 検索バーにSites.Selected と入力し、隣のチェックボックスをオンにします。
- アクセス許可の追加をクリックします。
- これらの変更を適用するには、[テナント名] に管理者の同意を与えますをクリックし、確認します。
SharePoint サイトへのアクセス権の付与
デフォルトでは、Sites.Selected アクセス許可は、自動的に任意のMicrosoft SharePoint サイトへのアクセスを許可しません。 PowerShell を使用して、明示的にアプリケーションにサイトアクセス許可を割り当てる必要があります。 これにより、アプリケーションは承認されたサイトとしかやり取りできず、Microsoft SharePoint データのセキュリティと制御が維持されます。
Note:本製品 は、Microsoft Graph API を介したサイトアクセス許可の割り当てをサポートしていません。 すべてのサイトレベルのアクセス許可の割り当ては、PnP.PowerShell モジュールを使用してPowerShell で完了する必要があります。
次に進む前に、以下を入手していることを確認してください。
- 2つのAzure AD アプリケーション:
- Sites.Selected アクセス許可を持つApp 1(SharePoint アプリ)
- アクセス権を付与するためにSites.FullControl.All 権限を持つApp 2(管理アプリ)。
- PnP.PowerShell モジュールがインストールされたPowerShell。
- アクセス権を付与するSharePoint サイトのURL。
ステップ1:PnP PowerShell モジュールをインストール
- PowerShell を管理者として開きます。
- 次のコマンドを実行します。
Install-Module -Name PnP.PowerShell
- プロンプトが表示されたら、"Y" を押してインストールを確認します。
ステップ2:SharePoint サイトに接続
- 次のコマンドを実行してSharePoint サイトに接続します。
Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yourSite" -Interactive
- https://yourtenant.sharepoint.com/sites/yourSite を、対象のSharePoint サイトのURL に置き換えます。
- 資格情報を使用して認証します。
ステップ3:SharePoint アプリへのアクセス権を付与
- 次のコマンドを実行して、アプリに書き込みアクセス権を付与します。
Grant-PnPAzureADAppSitePermission -AppId "{sharepoint_app_client_id}" -DisplayName "CData SharePoint App" -Site "https://yourtenant.sharepoint.com/sites/yourSite" -Permissions WriteNote:書き込みアクセス権の代わりに読み取り専用アクセス権を付与する必要がある場合は、-Permissions パラメータを-Permissions Read に更新します。 - {sharepoint_app_client_id} をSharePointアプリケーションのクライアントID に置き換えます。
- https://yourtenant.sharepoint.com/sites/yourSite をSharePoint サイトのURL に置き換えます。
- Enter を押してコマンドを実行します。
接続プロパティの設定
アプリケーションを登録し、証明書をアップロードし、SharePoint サイトのアクセス許可を割り当てたら、アプリケーションの接続文字列でこれらの接続プロパティを正確に指定して本製品 を設定します。 これらの設定は、AzureServicePrincipalCert スキームを使用したアプリ専用認証でSharePoint サイトに認証する方法を本製品 に指示します。Note:AuthScheme はAzureServicePrincipalCert に更新されましたが、
証明書関連の接続プロパティ(OAuthJWTCert、OAuthJWTCertType、およびOAuthJWTCertPassword)に変更はありません。
これらのプロパティは、基礎となるJWT ベースの認証フローで使用される証明書を提供するために依然として必要です。
URL=https://{name}.sharepoint.com/sites/{site}/;
SharePointEdition=SharePoint Online;
Schema=REST;
AzureTenant={tenant id};
OAuthJWTIssuer={client id};
AuthScheme=AzureServicePrincipalCert;
OAuthJWTCert={file path to certificate (.PFX)};
OAuthJWTCertType=PFXFile;
OAuthJWTCertPassword={certificate password};
プレースホルダーを自身の設定の特定の値に置き換えてください。
- URL:Sites.Selected アクセス許可を通じてアプリにアクセス権が付与されたSharePoint サイトのURL。
- AzureTenant:Azure Active Directory テナントID。
- OAuthJWTIssuer:Azure AD アプリケーションのクライアントID。これは、AzureServicePrincipalCert 認証スキームのOAuthClientId を置き換えます。
- OAuthJWTCert:.PFX 証明書ファイルの絶対ファイルパス。
- OAuthJWTCertType:必要に応じて、PFXFile に明示的に設定します。ファイルではなく証明書のバイナリ表現を使用する場合は、証明書をBase64 エンコードされたblob に変換し、この値をPFXBLOB に設定します。
- OAuthJWTCertPassword:.PFX 証明書をエクスポートする際に割り当てたパスワード。