SharePointの継承解除

SharePointをコードからいじるとき、ACLを変更したいというケースは多々あります。
その再利用するのが、Object.BreakRoleInheritanceというメソッド。

便利なメソッドなのですが、継承を切ったアイテムが大量になる場合は注意が必要となります。

SharePointでは個別権限を付与すると、上位に個別権限で付与したユーザーの制限付きアクセス権限が振られます。
BreakRoleInheritanceでは、継承を切る際、上位権限をコピーするかしないかを引数で渡すことができるのですが、コピーした場合は、制限付きアクセスユーザーが大量に付与され徐々に処理速度が落ちてしまうのです。

私が経験したケースでは、2,000アイテム程度あり、全アイテム権限を個別につけていたおかげで、継承切って、権限見て振りなおすロジックで最長10分程度1アイテムの処理にかかったことがあります。

この時、権限を変更しているアイテムは不安定な状態になり、一般ユーザーに見えたり見えなかったりという動作が繰り広げられるため、利用する際は注意してくださいね。

音楽:Folly Fall