Права доступу в sharepoint

об'єкти, що захищають

Почнемо з того, що визначимо захищаються об'єкти в SharePoint, ті, на які можна давати права користувачам. Таких об'єктів всього три:

  • Сайт (SPWeb)
  • Список (SPList)
  • Приклад (SPItem)

Бібліотека документів (SPDocumentLibrary) також є об'єктом, що захищається, але тільки на підставі того, що успадкована від списку.

Права доступу в sharepoint

Хибні уявлення заважають

Існують два поширених помилки стосовно прав доступу в SharePoint.

Помилка 1. Можна надати права на колекцію сайтів.

Колекція сайтів в SharePoint не є об'єктом, що захищається. Колекція сайтів (SPSite) - це всього лише контейнер, що містить в собі один або більше сайтів (SPWeb). При цьому як мінімум один сайт є завжди (кореневої сайт колекції сайтів).

Помилка 2. Можна надати права на папку.

Тут потрібне уточнення, що права надати можна тільки на папку асоційовану зі списком або бібліотекою, тобто папка повинна бути представлена ​​об'єктом, що захищається SPListItem. Отримати елемент списку пов'язаний з папкою можна через властивість SPFolder.Item. Якщо ж зв'язку з цим немає, то буде видано виняток (а не просто значення null):

Права в SharePoint представлені перерахуванням SPBasePermissions і розділені на три групи: права рівня сайту, рівня списку і спеціальні права.

Права рівня сайту

На отримання списку прав також потрібні права (EnumeratePermissions). Без них викликати метод, наприклад, SPList.GetUserEffectivePermissions не вийде.

Прав багато і тому вони об'єднані в групи (Permission Levels). Але можна безпосередньо призначати права користувачам на об'єкти в SharePoint.

Як працюють права доступу

У SharePoint захищаються об'єкти мають сувору ієрархію:

Кожен об'єкт (крім кореневого сайту) може як успадковувати права від батька, так і мати унікальні права доступу. Кореневого сайту просто не від кого наслідувати права.

У нас є користувачі, групи користувачів, що захищаються об'єкти і можливі права. Для зв'язку цих складових в SharePoint використовується об'єкт SPRoleAssignment. Зв'язок між цими об'єктами:

Права доступу в sharepoint

З теорією розібралися. Переходимо до практики.

На практиці іноді поведінку SharePoint не очевидно і залежить від версії SharePoint. Для прикладу я створив таку структуру:

Права доступу в sharepoint

Всі об'єкти мають унікальні права. Спочатку тестовий користувач не має ніяких прав ні на які об'єкти в SharePoint. У прикладі я почну з видачі прав користувачеві на файл. Потім буду видавати права на батьківські об'єкти, фіксуючи результат і можливості користувача.

Права тільки на файл

Якщо нам необхідно надати користувачеві права на файл, розташований в папці бібліотеки документів. Що необхідно для цього зробити? Пробуємо спочатку дати права саме на файл (не успадковуються права від папки):

Права доступу в sharepoint

Права, надані користувачеві після цієї операції:

Кореневої сайт. ніяких прав

Дочірній сайт. Open, BrowseUserInfo, UseClientIntegration

Бібліотека документів. Open, BrowseUserInfo, UseClientIntegration

Папка. Open, BrowseUserInfo, UseClientIntegration

Документ: ViewListItems, AddListItems, EditListItems, DeleteListItems, OpenItems, ViewVersions, DeleteVersions, ManagePersonalViews, ViewFormPages, Open, ViewPages, CreateSSCSite, BrowseDirectories, BrowseUserInfo, AddDelPrivateWebParts, UpdatePersonalWebParts, UseClientIntegration, UseRemoteAPIs, CreateAlerts, EditMyUserInfo

Права на папку

Тепер надамо користувачеві права на папку в бібліотеці документів (редагування). Права на папку після цього будуть ідентичні правам на файл, але на ділі не зміниться нічого: користувач не зможе переглядати вміст папки, додавати в неї файли.

Права на бібліотеку

Додамо користувачеві права на редагування всієї бібліотеки:

Права доступу в sharepoint

Після це права на бібліотеку. ViewListItems, AddListItems, EditListItems, DeleteListItems, OpenItems, ViewVers ions, DeleteVersions, ManagePersonalViews, ManageLists, ViewFormPages, Open, ViewPages, CreateSSCSite, BrowseDirectories, BrowseUserInfo, AddDelPrivateWebParts, UpdatePersonalWebParts, UseClientIntegration, UseRemoteAPIs, CreateAlerts, EditMyUserInfo

Права на дочірній сайт

Надання прав на дочірній сайт очікувано дозволить користувачеві переглядати його вміст. Кореневої сайт буде як і раніше недоступний.

Права на файл

Надавши права на файл в папці бібліотеки користувач отримує права на об'єкти:

Кореневої сайт. ніяких прав

Дочірній сайт. ViewFormPages, Open, BrowseUserInfo, UseClientIntegration, UseRemoteAPIs

Бібліотека документів. ViewFormPages, Open, BrowseUserInfo, UseClientIntegration, UseRemoteAPIs

Папка. ViewFormPages, Open, BrowseUserInfo, UseClientIntegration, UseRemoteAPIs

Файл. ViewListItems, AddListItems, EditListItems, DeleteListItems, OpenItems, ViewVersions, DeleteVersions, ManagePersonalViews, ViewFormPages, Open, ViewPages, CreateSSCSite, BrowseDirectories, BrowseUserInfo, AddDelPrivateWebParts, UpdatePersonalWebParts, UseClientIntegration, UseRemoteAPIs, CreateAlerts, EditMyUserInfo

У бібліотеці користувач не бачить папку, яка містить файл, на який було надано права:

Права доступу в sharepoint

Права доступу в sharepoint

Права на папку

Права доступу в sharepoint

Права на бібліотеку

Права доступу в sharepoint

Права на дочірній сайт

Схожі статті