SharePointのアクセス権は、サイト、リストとライブラリ、フォルダー、アイテムの4つの階層で決まり、下の階層は上の権限を引き継ぎます。サイトには所有者・メンバー・閲覧者の3グループがあり、それぞれフルコントロール・編集・読み取りの権限レベルが付いています。この記事では、権限レベルの違いと選び方、継承を切るときの上限値、共有リンク4種類の届く範囲とサイト単位の既定リンクの変更、PnP PowerShellとGraph APIで権限を棚卸しする手順までを、Microsoft Learnの記載とコード例で整理しました。
権限はサイトの3グループに人を入れて渡すのが基本で、ファイルやフォルダーごとの個別権限は例外として扱います。閲覧者が恒常的に違う情報は、継承を切るよりサイトを分けたほうが、後から権限の範囲を説明しやすい設計です。メンバーに既定の「編集」を渡すとライブラリごと削除できるため、多くの会社では「投稿」で足ります。
個別権限は、利用者が共有ボタンを押すだけで自動的に増えます。Microsoftが推奨する一意の権限の目安は1リストあたり5,000件で、超えてから気づいた場合は、継承へ戻す作業の負担が大きい状態です。PnP PowerShellで継承の切れたファイルを定期的にCSVへ出し、既定の共有リンクを「特定のユーザー」に絞っておけば、増え方を抑えたうえで実態を把握できます。
サイトからアイテムまで上から下へ権限が継承される4つのスコープ
SharePoint でのアクセス許可レベルによると、サイトの中身は既定ですべてトップレベルのサイトの権限を継承します。リストとライブラリはサイトから、ファイルとリストアイテムはリストやライブラリから引き継ぐ仕組みです。どこかの階層で固有の権限を割り当てると、そこから下は親の変更を受け取らなくなります。
この仕組みのせいで、サイトに人を追加したのに特定のフォルダーだけ開けない、という問い合わせが起きます。原因はたいてい、そのフォルダーの継承が過去に切られていることです。権限の調査は、まず対象の階層で継承が生きているかを確かめるところから始めます。
所有者・メンバー・閲覧者に付く既定の権限レベルと編集と投稿の違い
チームサイトには所有者・メンバー・閲覧者の3グループが自動で作られます。既定の権限レベルと、実務で差が出る操作は次のとおりです。
| 権限レベル | 既定で付くグループ | できること(差が出る操作) |
|---|---|---|
| フル コントロール | 所有者 | 権限の管理を含むすべて。変更・削除できない |
| 編集 | メンバー | 投稿+リスト・ライブラリ作成・削除、列変更 |
| 投稿 | (既定では無し) | アイテムとファイルの表示・追加・更新・削除 |
| 読み取り | 閲覧者 | ページとアイテムの表示、ファイルのダウンロード |
| 表示のみ | (既定では無し) | ブラウザー表示。Office文書等はDL不可 |
違いが大きいのは編集と投稿です。編集には「リストの管理」が含まれるため、メンバーは誰でもライブラリそのものを削除したり、列を消したりできます。フル コントロールと制限付きアクセスを除き、既定の権限レベルは変更もできます。
グループ接続チームサイトとコミュニケーションサイトで違う権限の入口
SharePoint モダン エクスペリエンスでの共有とアクセス許可の記載では、チームサイトの権限はMicrosoft 365グループかTeamsのチームを通して管理するのが基本です。グループの所有者がサイトの所有者に、グループのメンバーがサイトのメンバーになります。Microsoft 365グループには閲覧だけのメンバーという区分が無いので、見るだけの人はサイトの閲覧者グループに直接追加します。
コミュニケーションサイトはグループに接続されず、3つのSharePointグループを直接使います。閲覧者グループには部署単位のセキュリティグループを入れると管理が楽ですが、セキュリティグループの入れ子はパフォーマンスの問題を起こすため勧められていません。Teamsとサイトの対応関係はTeamsとSharePointの関係と乱立を防ぐ運用ルールで扱っています。
権限レベルを選び分けてサイトとライブラリにアクセス権を付与する手順
メンバーに編集でなく投稿を渡してライブラリの削除を防ぐ権限設定
メンバーが日々行うのは、ファイルの追加と更新、削除までです。ライブラリの作成や列の変更まで任せる理由が無いなら、メンバーグループの権限レベルを編集から投稿に替えます。サイトの設定から「サイトのアクセス許可」を開き、メンバーグループを選んで「ユーザー権限の編集」で投稿に付け替える手順です。
ここで注意したいのが公開のチームサイトです。Learnによると、プライバシー設定が公開のチームサイトでは「外部ユーザー以外の全員」がメンバーグループに自動で追加されます。つまり社内の全員が編集できる状態で始まるため、部署の資料を置くサイトは非公開で作るか、作成後にこのグループを外します。
表示のみで閲覧はできてもダウンロードが止まらないファイルの種類
「表示のみ」は、ブラウザーで見せてもダウンロードはさせたくない資料に使う権限レベルです。止まるのはWordやExcelのように、サーバー側でブラウザー表示できるファイルに限られます。動画や.pngなど、ブラウザーで開けない種類のファイルはダウンロードできてしまいます。
図面の画像やPDF以外の添付まで持ち出しを止めたい場合、権限レベルだけでは足りません。非管理デバイスからの閲覧をブラウザーに限る設定と組み合わせる必要があり、その設定方法はSharePoint管理センターの外部共有とアクセス制御の設定項目にまとめています。
プライベートチャネルと共有チャネルには、チャネル専用のSharePointサイトが別に作られます。このサイトの権限はTeamsでしか管理できず、SharePoint側の画面は読み取り専用で表示されます。チャネルの所有者がサイトの所有者、チャネルのメンバーがサイトのメンバーです。
そのため、チャネルのファイルだけ別の人に見せたいという依頼には、SharePoint側では応えられません。チャネルにその人を追加するか、ファイルを親のチームのサイトへ移してから共有するかを選びます。
継承の解除で個別のアクセス権を作るときの上限値と避けるべき設計
ライブラリ単位で継承を切りPnP PowerShellで親の権限をコピーする手順
経理の資料だけをメンバーから外したい、といった要件では、ライブラリ単位で継承を切ります。画面でも操作できますが、どのライブラリをいつ変えたかを残すならPnP PowerShellで行います。PnP PowerShellはRegister an Entra ID Application to use with PnP PowerShellのとおり、2024年9月9日以降は自社のEntra IDに専用のアプリを登録しないと接続できません。
# 初回のみ:対話ログイン用のアプリを登録し、表示されたクライアントIDを控える
Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "PnP.PowerShell" -Tenant contoso.onmicrosoft.com
$clientId = "登録したアプリのクライアントID"
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/soumu -Interactive -ClientId $clientId
# ロール名はサイトの言語で変わるので、先に実名を確かめる
Get-PnPRoleDefinition | Select-Object Name
# 「経理」ライブラリの継承を切り、親サイトの権限をコピーしてから絞る
Set-PnPList -Identity "経理" -BreakRoleInheritance -CopyRoleAssignments
Set-PnPListPermission -Identity "経理" -Group "総務 メンバー" -RemoveRole "編集"
Set-PnPListPermission -Identity "経理" -Group "経理担当" -AddRole "投稿"
Set-PnPListの -CopyRoleAssignments を付けないと親サイトの権限がコピーされず、所有者グループを含めて権限を一から付け直すことになります。ロール名がサイトの言語に依存する点はSet-PnPListPermissionにも明記されているので、英語サイトなら “Edit” や “Contribute” に読み替えます。
一意の権限は1リスト5,000件が推奨値で10万件超のフォルダーは切れない
個別権限には数の上限があります。SharePoint の制限(2026年10月時点)の値を、権限設計で効く順に並べます。
- リストまたはライブラリ内の一意の権限:サポート上限は50,000、一般的な推奨は5,000
- 100,000を超えるアイテムを含むリスト・ライブラリ・フォルダー:継承の解除も、継承への戻しもできない
- SharePointグループ:1グループ最大5,000ユーザー、1サイトに最大10,000グループ
- 1人のユーザーが所属できるグループ:1サイトあたり5,000
見落としやすいのは2つ目です。ファイルが10万件を超えたライブラリでは、後から「このフォルダーだけ絞りたい」と言われても対応できません。アイテム単位の継承は切れますが、それも一意の権限の件数を増やすだけです。大きくなりそうなライブラリは、作る段階で閲覧者ごとに分けておきます。
共有ボタンが継承を自動で切り制限付きアクセスが積み上がる仕組み
個別権限を増やしているのは、管理者より利用者です。Learnの記載では、アクセス権を持たない人とファイルを共有すると、SharePointはそのファイルの継承を自動で止めます。同時に、そのファイルが入ったライブラリやサイトには「制限付きアクセス」が自動で割り当てられます。
制限付きアクセスは、ファイルを開くためにサイトの画面を通れるようにするだけの権限で、他の中身は見えません。害は無いものの、権限の一覧には共有した相手が次々と並び、誰が何を見られるのかが読めなくなります。社外の相手との共有が多いライブラリほど、この積み上がりが速く進みます。
共有リンク4種類の届く範囲とサイト単位で既定リンクを絞る設定
すべてのユーザー・組織内・特定のユーザー・既存アクセス権の比較
ファイルやフォルダーを渡すときに使う共有リンクは4種類です。サイトの既定の共有リンクの種類を変更すると、Graph APIのsharingLink resource typeの値を対応させると次のようになります。
| 画面の表示 | 開ける人 | Graphのscope |
|---|---|---|
| リンクを知っているすべてのユーザー | サインイン不要。社外の人も含む | anonymous |
| 組織内のユーザー | 同じテナントにサインインした人全員 | organization |
| 特定のユーザー | 共有時に指定した人だけ | users |
| 既存アクセス権を持つユーザー | もともと権限がある人だけ(権限は変えない) | existingAccess |
「すべてのユーザー」リンクは認証を求めず、誰が開いたかを監査できません。組織内のユーザーのリンクも、転送されれば社内の誰でも開けるため、人事資料に使うと実質的に全社公開です。テナント全体でどのリンクを許可するかはSharePoint管理センターの初期設定で決め、サイトの中では既定のリンクを絞る、という分担になります。
Set-SPOSiteでサイトの既定リンクを特定のユーザーと表示に変える
利用者の多くは、共有画面で最初に選ばれているリンクのまま送信します。機密度の高いサイトだけ既定を厳しくするなら、SharePoint管理センターの「アクティブなサイト」でサイトを選び、「共有」から変更する手順です。Teamsのプライベートチャネルと共有チャネルのサイトは画面から変えられず、Set-SPOSiteを使います。
Connect-SPOService -Url https://contoso-admin.sharepoint.com
# 人事サイトの既定リンクを「特定のユーザー」、権限を「表示」にする
Set-SPOSite -Identity https://contoso.sharepoint.com/sites/jinji `
-DefaultSharingLinkType Direct -DefaultLinkPermission View
# 既定を「既存アクセス権を持つユーザー」にして、共有で権限が増えないようにする
Set-SPOSite -Identity https://contoso.sharepoint.com/sites/jinji `
-DefaultLinkToExistingAccess $true
DefaultLinkToExistingAccess を$trueにすると、既定のリンクは権限を変えない種類になり、共有ボタンで継承が切れる事故を減らせます。DefaultSharingLinkType と DefaultLinkPermission は、2026年11月時点のリファレンスで DefaultShareLinkScope と DefaultShareLinkRole に置き換える予定と書かれているので、新規のスクリプトでは置き換え先の名前も確かめておきます。
PowerShellとGraph APIで権限を棚卸しし継承が切れた箇所を洗い出す
PnP PowerShellで一意の権限を持つファイルとフォルダーをCSVに出す
棚卸しで最初に知りたいのは、継承が切れているファイルとフォルダーがどこに何件あり、誰に何の権限が付いているかです。ライブラリを1つずつ走査して、一意の権限を持つものだけをCSVに書き出します。
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/soumu -Interactive -ClientId $clientId
# ライブラリの表示名(日本語テナントの既定は「ドキュメント」)
$rows = foreach ($item in Get-PnPListItem -List "ドキュメント" -PageSize 2000) {
$unique = Get-PnPProperty -ClientObject $item -Property HasUniqueRoleAssignments
if (-not $unique) { continue }
Get-PnPProperty -ClientObject $item -Property RoleAssignments | Out-Null
foreach ($ra in $item.RoleAssignments) {
Get-PnPProperty -ClientObject $ra -Property Member, RoleDefinitionBindings | Out-Null
[pscustomobject]@{
Path = $item["FileRef"]
Who = $ra.Member.Title
Roles = ($ra.RoleDefinitionBindings.Name -join ";")
}
}
}
$rows | Export-Csv .\unique-permissions.csv -NoTypeInformation -Encoding UTF8
($rows | Select-Object -ExpandProperty Path -Unique).Count # 一意の権限を持つ件数
Get-PnPProperty はアイテムごとに問い合わせるため、数万件のライブラリでは時間がかかります。夜間に回し、最後の行で出る件数を毎月記録しておくと、推奨値の5,000件に近づくライブラリを早めに見つけることが可能です。前月から急に増えたライブラリは、利用者の共有で継承が切れている可能性が高いので、次のGraph APIでリンクの種類まで確かめます。
Graph APIのpermissionsで共有リンクの範囲と継承元を確かめる
ファイル1つについて、どの共有リンクが出ているかを確かめるにはGraph APIを使います。List sharing permissions on a driveItemは、ファイル自体に付いた権限と親から継承した権限の両方を返し、inheritedFrom の有無で見分けられます。
Connect-MgGraph -Scopes "Files.Read.All"
# リンクの範囲(scope)と継承元を一覧にする
Get-MgDriveItemPermission -DriveId $driveId -DriveItemId $itemId |
Select-Object Id, Roles,
@{n = "scope"; e = { $_.Link.Scope }},
@{n = "type"; e = { $_.Link.Type }},
@{n = "inherited"; e = { [bool]$_.InheritedFrom.Id }}
# REST で呼ぶ場合
# GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/permissions
scope が anonymous の行は、サインイン不要のリンクが出ている印です。所有者以外が呼び出すと自分に関係する権限しか返らないため、棚卸しはサイト所有者以上のアカウントか、Files.Read.All のアプリケーション権限で行います。アプリ登録と権限の選び方はMicrosoft Graph APIの権限設計と呼び出し手順で解説しています。
棚卸しの結果を継承へ戻すときのSystemUpdateと版の扱い
CSVで不要と判断したファイルは、Set-PnPListItemPermissionの -InheritPermissions で親の権限に戻します。-SystemUpdate を付けると、新しい版を作らず、Power Automateのフローも起動しません。
# CSVで「戻す」と判断したアイテムIDを継承に戻す(版を増やさない)
Set-PnPListItemPermission -List "ドキュメント" -Identity 128 -InheritPermissions -SystemUpdate
-SystemUpdate を付けずに数百件を戻すと、すべてのファイルに版が1つずつ増え、ファイルの更新をきっかけに動くフローがまとめて起動します。戻すと共有リンクで渡していた相手は開けなくなるため、社外との共有が残っているファイルは先に担当者へ確認を取ります。
個別権限で運用してよい場面とサイトを分けて解決すべき場面の判断
ファイル単位の例外を許すのは件数が数十件まで期限が決まる共有
個別権限を許してよいのは、期限が決まっていて件数が少ない共有です。取引先との見積書のやり取りや、プロジェクト期間中だけ外部の協力会社に見せる資料がこれにあたります。目安として、1ライブラリで数十件を超えたら運用が設計に追いついていないと判断し、閲覧者ごとにライブラリかサイトを分け直します。
Copilotを導入している会社では、個別権限の放置がそのまま参照範囲の広がりになります。過剰共有のレポートとCopilotからの除外の設定はMicrosoft 365 Copilotの情報漏洩対策で手順をまとめました。
人事や経理など閲覧者が恒常的に違う情報はサイトを分けて保存する
閲覧者がいつも違う情報は、1つのサイトの中で継承を切って守る設計にしません。人事評価や給与のように、見てよい人が組織として決まっている情報はサイトを分け、そのサイトの3グループで管理します。サイトの単位で分けておけば、外部共有の範囲や既定のリンクもサイトごとに設定でき、10万件の上限に触れても困りません。サイトの作り方と作成権限の制御はSharePointサイトの作り方で扱っています。
一方、継承の切れたファイルがすでに数千件ある状態からの立て直しは、棚卸しのスクリプト、サイトの分け直し、移行中の共有リンクの扱いを同時に設計する必要がある作業です。当社では、権限の現状調査から、サイト構成の見直し、PowerShellでの是正と定期棚卸しの仕組み作りまでをMicrosoft 365・Copilot導入支援としてお受けしています。上のスクリプトで出したCSVがあれば、分けるべきサイトと戻すべきファイルを具体的にご提案できます。
よくある質問
SharePointのアクセス権について、情シスやサイト所有者からよく寄せられる質問をまとめました。
設定できます。フォルダーの「アクセスの管理」から詳細設定を開き、継承を中止してから人やグループを追加・削除します。ただし、フォルダーに入っているアイテムが100,000件を超えると、継承の解除も戻しもできません。閲覧者が恒常的に違うなら、フォルダーで分けるよりライブラリかサイトを分けたほうが、後から権限を追いやすくなります。
権限の継承を元に戻すとどうなりますか?
そのフォルダーやファイルに個別に付けた権限はすべて消え、親のライブラリやサイトと同じ権限になります。個別に共有していた相手は開けなくなり、共有リンクも使えない状態です。PowerShellで戻す場合は Set-PnPListItemPermission に -InheritPermissions を指定し、版を増やしたくなければ -SystemUpdate も付けます。
サイトのメンバーなのにファイルを開けないのはなぜですか?
そのファイルか、上のフォルダー・ライブラリで継承が切られている可能性が高いです。継承が切れた箇所は、サイトの権限を変えても反映されません。「アクセスの管理」の詳細設定を開き、親とは別の権限が付いていれば、その階層で個別に権限を追加するか、継承に戻します。Teamsのプライベートチャネルのファイルなら、チャネルへの追加が必要です。
誰がどのファイルにアクセスできるかを一覧で確認できますか?
画面ではサイトの詳細なアクセス許可の設定にある「アクセス許可の確認」で、特定の人の権限を1人ずつ確かめられます。サイト全体を一覧にするなら、本文のPnP PowerShellのスクリプトで一意の権限を持つファイルをCSVに出す方法が現実的です。共有リンクの範囲まで見るなら、Graph APIのpermissionsで scope を確認します。
社外のゲストに特定のフォルダーだけを見せられますか?
見せられます。テナントとサイトの外部共有が許可されていれば、フォルダーの共有で「特定のユーザー」を選び、ゲストのメールアドレスを指定します。ただし、このやり方はフォルダーの継承を切るので、相手が多い場合や長く続く取引では、ゲスト用のサイトを別に作るほうが管理しやすい設計です。外部共有の許可範囲はSharePoint管理センターで決めます。
関連記事
- SharePoint管理センターの初期設定|外部共有・アクセス制御の設定項目とPowerShell一括適用:サイトの権限の上限になるテナント全体の外部共有と既定リンク。
- Microsoft 365 Copilotの情報漏洩対策|過剰共有の可視化とRCD・DLPの設定手順:個別権限の放置がCopilotの参照範囲に広がる経路と対策。
- SharePointとは?できること・OneDriveやTeamsとの違いと導入判断の基準:権限設計の前提になるSharePoint全体の役割。
- SharePointとOneDriveの違い|保存先の決め方と退職時に消えるファイル、Teamsの保存先:個人の領域と組織の領域で変わる共有の考え方。
- SharePointサイトの作り方|チームサイトとコミュニケーションサイトの作成手順とPowerShell・REST:閲覧者ごとにサイトを分けるときの作成手順。