【SharePoint Online】モダン認証で指定のサイトに対してアクセス許可を設定する

今回は、Azure Active Directoryにアプリを登録し、アクセス許可「Sites.Selected」を利用してサイト個別でのアクセス許可を設定します。
この機能を利用すれば、PowerShellでのモダン認証接続をサイトごとに制御することが可能となります。

事前準備

予め設定しておく必要のある手順を以下に記載します。

  • PnP.PowerShellのインストール(2022/02最新は1.9.0)
    インストールされているかどうかを確認するには、「Get-InstalledModule PnP.PowerShell」コマンドを実行してください。
  • AADアプリの登録
    1テナントにつき1度のみ実施を行う必要があります。

PnP.PowerShellのインストール

作業実施端末に、「PnP.PowerShell」モジュールの最新バージョンをインストールします。

1.以下コマンドを実行し、「PnP.PowerShell」をインストールします。

Install-Module -Name PnP.PowerShell -force

2.以下画像のコンソールが表示された場合、「A」か「Y」を押下します。

3.プロンプトが戻ってきたことを確認し、以下コマンドを実行してインストールされたことを確認します。

Get-InstalledModule PnP.PowerShell

アプリの登録

AADにアプリを登録し、自己署名証明書をインポート、「Sites.Selected」アクセス許可を付与します。

自己署名証明書の作成

1.以下リンク先の手順を参考に自己署名証明書を作成します。
Azure AD アプリ専用を使用てアクセスを許可する
→以下コマンドを実行する手順のみ実施します。

.\Create-SelfSignedCertificate.ps1 -CommonName "MyCompanyName" -StartDate 2017-10-01 -EndDate 2019-10-01

2.「Enter Password to protect private key:」が表示されたことを確認し、パスワードとなる文字列を入力します。
※パスワードはメモしておきます。

3.結果が返ってきて、作業ディレクトリに「<証明書名>.cer」ファイルと「<証明書名>.pfx」ファイルが作成されたことを確認します。

AADアプリの登録

1.https://aad.portal.azure.comにグローバル管理者権限を持っているアカウントでアクセスし、「Azure Active Directory」の「アプリの登録」をクリックします。

2.画面上部の「+新規登録」からアプリの作成を開始します。

3.表示された画面にて、次の値を設定し、[登録] をクリックします。
※登録後の画面表示される「アプリケーション (クライアント) ID」はPnPPowerShellでの接続に必要なため、値を控えておきます。

  • [名前]:アプリ名を入力します
  • [サポートされるアカウントの種類]:この組織ディレクトリのみに含まれるアカウントを入力します
  • [リダイレクト]:空白

4.メニューバーにある「APIのアクセス許可」を選択し、表示された画面の「アクセス許可の追加」をクリックします。

5.右側に表示されたブレードから「SharePoint」をクリックします。

6.「アプリケーションの許可」から、「Sites.Selected」を見つけてチェックをし、「アクセス許可の追加」をクリックします。

7.「<テナント名>に管理者の同意を与えます」をクリックし、表示されたポップアップで「はい」をクリックします。

8.「<テナント名>に付与されました」と表示されたことを確認します。

9.「証明書とシークレット」メニューを選択し、「証明書」タブから「証明書のアップロード」をクリックします。

10.表示されたブレードのフォルダアイコンでポップアップを表示し、作成した.CERファイルを選択し「追加」をクリックします。

11.アップロード完了後、「マニフェスト」メニュー内の「KeyCredentials」プロパティを探し、設定した日付などが正しく登録されていることを確認します。

サイトへのアプリ接続許可設定

作成したサイトに接続許可設定を行います。
本手順の操作は、グローバル管理者もしくはSharePoint 管理者権限を付与されているアカウントで実行してください。

1.PowerShellを開き以下のコマンドを実行し、接続許可を行うサイトコレクションに接続します。

Connect-PnPOnline https://.sharepoint.com/sites/

2.認証用ポップアップが表示された場合、グローバル管理者もしくはSharePoint 管理者権限を付与されているアカウント入力してください。

3.プロンプトが戻ってきたことを確認し、以下コマンドを実行して対象サイトにアプリのアクセス許可を追加します。

Grant-PnPAzureADAppSitePermission -AppId <コピーしておいた「アプリケーション(クライアント)ID」> -DisplayName <作成したアプリ名> -Permissions Write -Site <設定するサイトURL>

4.コマンド実行後、正常に書き込みアクセス許可が適用されたことが分かる以下画像のような結果が表示されたことを確認します。

5.Disconnect-PnPOnlineコマンドを実行し、接続セッションを削除します。

6.以下コマンドを実行し、アプリ経由で接続できることを確認します。

Connect-PnPOnline -ClientId <コピーしておいた「アプリケーション(クライアント)ID > -CertificatePath -CertificatePassword (ConvertTo-SecureString -AsPlainText <証明書作成時にメモしたパスワード> -Force) -Url <接続するサイト URL> -Tenant "<ドメイン名>.onmicrosoft.com"

7.正常に接続できたことを確認します。

終わりに

今回は以上になります。
今後Office365ではモダン認証に移っていくので、今のうちに覚えておくと楽ちんですね。