SharePoint Online 站點模板中許可權的設定

老王717發表於2021-01-28

SharePoint Online可以使用PnP引擎部署站點模板。這個模板的功能非常強大,除了可以定製主題,外觀以外,還可以生成list並匯入資料,生成文件庫,匯入文件等等。

今天重點說一下其中的站點許可權部分。目前最新的Schema版本是202002,完整版可以參考 https://github.com/pnp/PnP-Provisioning-Schema/blob/master/OfficeDevPnP.ProvisioningSchema/ProvisioningSchema-2020-02.xsd。另外還有一個非常詳細的樣例檔案,連結是:https://github.com/pnp/PnP-Provisioning-Schema/blob/master/Samples/ProvisioningSchema-2020-02-FullSample-01.xml。

 1       <pnp:Security BreakRoleInheritance="true"
 2                     CopyRoleAssignments="false"
 3                     ClearSubscopes="true"
 4                     AssociatedGroups="Test Value"
 5                     AssociatedMemberGroup="{parameter:AssociatedMemberGroup}"
 6                     AssociatedOwnerGroup="{parameter:AssociatedOwnerGroup}"
 7                     AssociatedVisitorGroup="{parameter:AssociatedVisitorGroup}"
 8                     RemoveExistingUniqueRoleAssignments="true"
 9                     ResetRoleInheritance="true" >
10         <pnp:AdditionalAdministrators ClearExistingItems="false">
11           <pnp:User Name="user@contoso.com"/>
12           <pnp:User Name="U_SHAREPOINT_ADMINS"/>
13         </pnp:AdditionalAdministrators>
14         <pnp:AdditionalOwners ClearExistingItems="true">
15           <pnp:User Name="user@contoso.com"/>
16           <pnp:User Name="U_SHAREPOINT_ADMINS"/>
17         </pnp:AdditionalOwners>
18         <pnp:AdditionalMembers>
19           <pnp:User Name="user@contoso.com"/>
20           <pnp:User Name="U_SHAREPOINT_ADMINS"/>
21         </pnp:AdditionalMembers>
22         <pnp:AdditionalVisitors>
23           <pnp:User Name="user@contoso.com"/>
24           <pnp:User Name="U_SHAREPOINT_ADMINS"/>
25         </pnp:AdditionalVisitors>
26         <pnp:SiteGroups>
27           <pnp:SiteGroup
28               Title="Power Users"
29               Description="Group of Power Users"
30               Owner="admin@contoso.com">
31             <pnp:Members ClearExistingItems="true">
32               <pnp:User Name="user1@contoso.com" />
33               <pnp:User Name="user2@contoso.com" />
34               <pnp:User Name="user3@contoso.com" />
35             </pnp:Members>
36           </pnp:SiteGroup>
37         </pnp:SiteGroups>
38         <pnp:Permissions>
39           <pnp:RoleDefinitions>
40             <pnp:RoleDefinition Name="Manage List Items" Description="Allows a user to manage list items">
41               <pnp:Permissions>
42                 <pnp:Permission>ViewListItems</pnp:Permission>
43                 <pnp:Permission>AddListItems</pnp:Permission>
44                 <pnp:Permission>EditListItems</pnp:Permission>
45                 <pnp:Permission>DeleteListItems</pnp:Permission>
46               </pnp:Permissions>
47             </pnp:RoleDefinition>
48           </pnp:RoleDefinitions>
49           <pnp:RoleAssignments>
50             <pnp:RoleAssignment Principal="Power Users" RoleDefinition="Manage List Items"/>
51             <pnp:RoleAssignment Principal="user1@contoso.com" RoleDefinition="Manage List Items"/>
52             <pnp:RoleAssignment Principal="user2@contoso.com" RoleDefinition="Full Control"/>
53             <pnp:RoleAssignment Principal="user3@contoso.com" RoleDefinition="Full Control" Remove="true"/>
54           </pnp:RoleAssignments>
55         </pnp:Permissions>
56       </pnp:Security>

我們從中擷取<pnp:Security>部分來看看如何自定義站點許可權。

程式碼第10行到第13行,可以指定site collection的管理員。

14行到17行,指定站點的管理員,要注意的是這個和site collection管理員是不一樣的。

18-25行,指定站點的成員和訪問者。

26-37行建立一個新的SharePoint Group,並且新增使用者和其他組到這個新組之中。

39-48行建立的新的permission level.

49-54行指定許可權到user或group。指定Group的時候,要使用“c:0t.c|tenant|{groupID}”作為Principal的引數,另外特別需要注意的是,Full Control,Edit,Read許可權像樣例填寫是不能正確應用的,需要分別改成Administrator,Editor和Reader。

另外可以針對列表和文件庫單獨設定許可權。在<pnp:ListInstance>下面,可以找到如下單獨的許可權設定部分。

1 <pnp:Security>
2                 <pnp:BreakRoleInheritance CopyRoleAssignments="true" ClearSubscopes="true">
3                   <pnp:RoleAssignment Principal="user1@contoso.com" RoleDefinition="Full Control"/>
4                   <pnp:RoleAssignment Principal="user2@contoso.com" RoleDefinition="Edit"/>
5                   <pnp:RoleAssignment Principal="user3@contoso.com" RoleDefinition="View Only"/>
6                 </pnp:BreakRoleInheritance>
7               </pnp:Security>

在設定好模板檔案後,可以使用powershell 進行測試

Apply-PnPProvisioningTemplate -Path template.xml #部署全部模板

or

Apply-PnPProvisioningTemplate -Path template.xml -Handlers SiteSecurity #只部署<pnp:Security>部分

 

相關文章