技術情報ブログ
Power Platform
2022.02.23

SharePointのビューに擬似的なアクセス制限をかける方法(2)

SharePointのビューに擬似的なアクセス制限をかける方法(2)

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

SharePointリストは、簡易的なデータベースとして非常に使いやすいですよね。

実際、弊社が支援させていただいているお客様の多くは、SharePointリストを用いて社内のデータを管理しています。
そのようなお客様から、「ビュー毎にアクセス制限をかけたい」という要望を伺うことがあります。
しかし、SharePointの「ビュー」は固有のアクセス権を付与することはできません。

そこで今回は、対象ユーザーの設定やアクセス許可レベルを利用することで、SharePointのビューに擬似的なアクセス制限をかける方法についてお伝えします。

SharePointを管理している方に向けた記事となっております。
前回は、ビューを作成し、アクセス許可レベルを割り当てるところまでを説明しました。

前回の記事は以下を参照してください。
SharePointのビューに擬似的なアクセス制限をかける方法(1)

今回は、サイトナビゲーションを作成し、対象のユーザーしか特定のビューを閲覧できないように設定していきます。

 

設定

設定手順

前回のブログでは、「アクセス許可レベルを割り当てる」までが完了しました。
今回は「サイドナビゲーションを作成する」からお伝えしていきます。

 

サイトナビゲーションを作成する

2種類のビューに対応するサイト ナビゲーションを作成します。
作成する際には、サイト ナビゲーションの対象ユーザー設定の有効化オンにし、以下設定をしてください。

すべての申請:管理者のグループを追加

自分の申請:管理者・一般ユーザのグループを追加

SharePointリストのサイト ナビゲーション
SharePointリストのサイト ナビゲーション

この設定により、管理者はサイト ナビゲーションにすべての申請自分の申請が表示されます。

一方、一般ユーザは自分の申請のみ表示されるようになります。

 

ビューを非表示にする

最後に、ビューの遷移を不可とするため、ビューの選択画面内に各ビューが表示されないようにします。
この設定は、PowerShellにて実施します。

PnP PowerShellを用いますので、事前にインストールする必要があります。

詳細については、以下をご参考にしてください。

SharePoint サイトのデザイン – PnP PowerShell コマンドレット

入力するコマンドは以下です。

# ログイン
# Connect-PnPOnline -Url https://xxx.sharepoint.com/sites/<サイト名>
Connect-PnPOnline -Url https://xxx.sharepoint.com/sites/samplesite

# リスト内のビュー一覧の取得
# Get-PnPView -List "<リスト名>"
Get-PnPView -List "ビューテスト"

# ビューを非表示にする
# Set-PnPView -List "<リスト名>" -Identity "<ビュー名>" -Values @{Hidden = $true }
Set-PnPView -List "ビューテスト" -Identity "自分の申請" -Values @{Hidden = $true }
Set-PnPView -List "ビューテスト" -Identity "すべての申請" -Values @{Hidden = $true }

この設定により、ビューの選択画面内に各ビューが表示されなくなりました。

SharePointリストのビューを非表示にする
SharePointリストのビューを非表示にする

 

結果確認

それでは、設定した結果を確認しましょう。

まずは、管理者でログインした際の挙動です。
サイト ナビゲーションに「すべての申請」「自分の申請」が表示されています。

「すべての申請」ビューを確認すると、すべてのデータに関して閲覧・編集ができることがわかります。

管理者の画面_すべての申請
管理者の画面_すべての申請

続いて、一般ユーザでログインした際の挙動を確認しましょう。
サイト ナビゲーションには、自分の申請のみが表示されています。

「自分の申請」ビューを確認すると、ログインユーザが申請列に格納されているデータに関してのみ閲覧・編集ができることがわかります。
また、リスト選択画面をクリックすると、すべての申請ビューを選択できない、かつ個人用ビューが作成できないことも確認できました。

一般ユーザの画面_自分の申請
一般ユーザの画面_自分の申請

 

補足:SharePointリストをサイト コンテンツから非表示にする

補足として、SharePointリストをサイト コンテンツから非表示にする設定方法についてもお伝えします。

上記の設定では、「自分の申請」ビューが規定ビューとなっているため、サイト コンテンツから対象のSharePointリストをクリックしても、一般ユーザーが「すべての申請」ビューを閲覧することはできません。
よって、以下で紹介する方法を設定する必要はあまりありませんが、「SharePointリストをサイト コンテンツから非表示にしたい」という要望をいただくことがあるため、補足として紹介します。

PnP PowerShellを用いて対応可能です。

入力するコマンドは以下です。

# ログイン
# Connect-PnPOnline -Url https://xxx.sharepoint.com/sites/<サイト名>
Connect-PnPOnline -Url https://xxx.sharepoint.com/sites/samplesite

# SharePointリストを非表示にする
# Set-PnPList -Identity "<リスト名>" -Hidden $true
Set-PnPList -Identity "ビューテスト" -Hidden $true

この設定により、サイト コンテンツからSharePointリストの「ビューテスト」が非表示になりました。

※上記コマンドを実行すると、サイト ナビゲーションから「すべての申請」「自分の申請」が削除されます。 再度サイト ナビゲーションを設定するか、サイト ナビゲーションを設定する前に上記コマンドを実行してください。

サイト コンテンツからSharePointリストが非表示になった
サイト コンテンツからSharePointリストが非表示になった

 

注意点

上記で設定は完了ですが、本設定あくまで「擬似的に」アクセス権限をかけているだけなので、
「すべての申請」ビューのURLを知っていると、アクセスできてしまうという欠点があります。

許可されているビュー以外を一般ユーザが表示することを必ず禁止したい場合は、Power Appsにて実装することを推奨いたします。

 

まとめ

本記事では、SharePointのビューに擬似的なアクセス制限をかける方法について説明しました。

ビューには固有のアクセス権限を付与することはできませんので、このような要望が発生した場合は、まずはPower Appsにて実装することを推奨いたします。
ただし、Power Appsのライセンスを持っていない場合もあると思います。
このような方にとって、今回ご紹介した内容が1つの代替策となりますと幸いです。

ここまで読んでくださり、ありがとうございます。

 

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:小刀稱知哉

小刀稱知哉

大分県出身(温泉大好き♥♥)、現在は東京都在住

1990年4月9日生まれ

30才にしてメーカーの技術営業からIT業界にジョブチェンジ!!!

趣味は読書

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当しております!

シェアする
記事カテゴリ
最新記事
2024.04.17

Power Apps・Power Automateの勉強方法(1)

2024.04.03

非エンジニア【(元)自治体職員】が半年間ローコード開発をしてみたら

2024.03.27

Power Automateのベストプラクティス・アンチパターン(5)【Apply to each×コンカレンシー×変数の設定はNG】

2024.03.20

Power Apps×Teams:Teams上からPower Appsを実行する方法

2024.03.13

Power Apps:SharePointリストと連携したカレンダーアプリを自作してみよう

モデル駆動型アプリPower AppsPower PlatformSharePointExcelPower AutomateC#attributevalidationローコードAngularAccessInfoPathMatTableAngular Materialデータ構造SortByColumns関数TypeScriptHTMLEF CoreマイグレーションFramework CoreAttribute directivesO/Rマッパーazure sql databaseCase式HTTP RequestCSSxUnit.Net Core 3.1VSCode.Net Core Test ExplorerDataverse for Teamsitem関数Google MapsMarker ClustererRANK()関数Dynamics 365 SalesMicrosoft TranslatorマーカークラスタリングライブラリtailwindcssマルチテナントドロップダウンメニューBreakpointObserverメディアクエリスマホPCレスポンシブ入門初心者中級者キャンバスアプリDatePickerDropdownviewビューアクセス制限承認リマインドSetForAllUpdateContextロードマップ技術It情報技術メッセージIDメールfirst()関数nest入れ子動的リストcollectionコレクション複数の添付ファイル承認フローformエクスポートインポートカスタマイズcomponentダイアログコンポーネントdialogTips新機能変数検索Microsoft 365グループセキュリティグループ送信元メールの送信差出人インスタントクラウドフロー自動化したクラウドフロー委任VBAエラーエクセルerror復元restorePower BI個人列ユーザー列SharePoint Onlineリスト非表示アプリ[市民開発者構築自動化したクラウド フローフローの種類インスタント クラウド フロースケジュール済みクラウド フローレスポンシブ レイアウトresponsive layoutデータ行の制限引き継ぎ退職所有者を変更異動LoopMicrosoftdesignJSONデザインtemplateテンプレート運用選択肢列参照列ChatGPTOpenAIオープンAIチャットGPTgalleryギャラリースクロールコンテナショートカットキーshortcut keyconcat関数文字制限フロー実行開発環境環境本番環境ライセンス環境構築手順pipelineCI/CDパイプラインDevOpsMicrosoft 365簡易在庫管理時間外通知ファイルフィルター クエリドキュメント ライブラリfilter querysortソートmultiple item複数項目シェアポイント便利機能カレンダーCalendarTeamsローコード開発非エンジニア体験談勉強内製化
PageTop
ページトップに戻る