В предыдущих статьях рубрики мы подробно разобрали вопросы, связанные с использованием PowerShell и с командами управления, а также проблемы работы со службами Workflow Services. Теперь, завершая разговор об управлении, мы затронем одну из важнейших областей администрирования SharePoint: область безопасности и разрешений. Операции по добавлению учетных записей пользователей, перемещению учетных записей, преобразованию разрешений и даже по удалению учетных записей пользователей — важная составляющая администрирования. Все решения на базе SharePoint должны базироваться на понимании логической иерархии разрешений и на четком представлении о том, как эти разрешения предоставляются.
В SharePoint в качестве инструмента аутентификации и авторизации применяется стандартный каталог Active Directory. Категории Users и Groups внутри этого каталога часто используются для обозначения границ разрешений, что облегчает управление доступом. Однако с течением времени пользователи часто оказываются в группах, к которым они не должны относиться, или утрачивают необходимые разрешения, а нередко вообще прекращают пользоваться ими.
Добавление новых учетных записей
Рассмотрим процедуру добавления новых пользовательских учетных записей. В системе SharePoint 2013 пользовательский интерфейс вполне понятен. Чтобы добавить учетную запись нового пользователя, нам нужно просто обратиться к указателю.
После введения имени SharePoint осуществляет проверку учетной записи пользователя посредством просмотра данных с помощью протокола LDAP (см. экран 1). Но надо сказать, что в различных областях SharePoint взаимодействие с пользователем реализуется по-разному в диалоговых окнах политики пользователей веб-приложения (см. экран 2), администраторов коллекции сайтов (см. экран 3), пользователей и групп коллекции сайтов (см. экран 4), разрешений коллекции сайта (см. экран 5), разрешений списков и библиотек (см. экран 6) и разрешений уровня элемента (см. экран 7).
Экран 1. Проверка учетной записи |
Экран 2. Политика пользователей веб-приложения |
Экран 3. Администраторы коллекции сайтов |
Экран 4. Пользователи и группы коллекции сайтов |
Экран 5. Разрешения коллекции сайтов |
Экран 6. Разрешения коллекции сайтов |
Экран 7. Разрешения уровня элемента |
Как мы видим, когда администратор предпринимает попытку добавить в SharePoint учетные записи пользователей, в интерфейсе происходят незначительные изменения. Но главная функция при этом состоит в осуществлении в локальной системе операции разрешения имен с помощью протокола LDAP. Разумеется, ситуация меняется в случае применения других способов аутентификации, но это уже тема для отдельной статьи.
Если бы мы захотели реализовать тот же процесс добавления учетных записей пользователей средствами PowerShell, нам потребовалось бы выполнить ряд простых команд. Например, добавление учетной записи администратора фермы выполняется кодом, приведенным в листинге 1.
А добавление учетной записи администратора оболочки осуществляется с помощью команды:
Add-SPShellAdmin DOMAIN\User
Добавление учетной записи администратора семейства узлов выполняется кодом, приведенным в листинге 2.
Управление средствами безопасности осуществляется с применением пользовательского интерфейса или средствами PowerShell. Контроль разрешений важен, но способность извлечения информации о пользовательских разрешениях играет не меньшую роль. Здесь можно задействовать инструменты сторонних производителей, но PowerShell справляется с задачей ничуть не хуже. С целью считывания списка разрешений для сайта SharePoint достаточно использовать команды PowerShell, показанные в листинге 3 (благодарю за этот пример Константина Власенко).
После запуска операция будет отображаться в окне Grid View, как показано на экране 8.
Экран 8. Результаты считывания списка разрешений сайта SharePoint |
Замечательная особенность PowerShell состоит в том, что вы можете взять такой код и сократить его для упрощения работы.
$SharePointSite = "{SharePoint URL}" Get-SPUser -Web $SharePointSite | select UserLogin, @{name="Explicit Permissions"; expression={$_.Roles}}, @{name="Permissions given via Groups"; expression={$_.Groups |%{$_.Roles}}}, Groups | format-Table -auto
После запуска результаты отображаются непосредственно в окне PowerShell (см. экран 9).
Экран 9. Вывод результатов в окне PowerShell |
Существуют и другие эффективные сценарии, которые можно использовать для получения отчетов, представленных на Codeplex, а также на сайте Microsoft TechNet Gallery по адресу https://gallery.technet.microsoft.com.
Надеюсь, познакомившись с этой и предыдущими статьями серии, вы убедились, что PowerShell является важным инструментом в арсенале администратора SharePoint.
$FarmAdminAccount = "DOMAIN\User" $CentralAdministrationWebApplication = Get-SPWebApplciation -IncludeCentralAdministration | Where-Object {$_.Displayname -eq "SharePoint Central Administration v4"} $CentralAdministrationSite = $CentralAdministrationWebApplication.Sites[0] $CentralAdministrationWeb = $CentralAdministrationSite.RootWeb $FarmAdministratorGroup = $ CentralAdministrationWeb.SIteGroups["Farm Administrators"] $ FarmAdministratorGroup.AddUser($FarmAdminAccount, "", $FarmAdminAccount,"Added By PowerShell")
$Username = "{DOMAIN\User}" $WebApplicationUrl = "{SharePoint URL}" $WebApplication = Get-SPWebApplication $WebApplicationUrl; $SiteCollection = $WebApplication.Sites[0]; $SiteCollectionAdmin = $SiteCollection.RootWeb.EnsureUser($Username); $SiteCollectionAdmin.IsSiteAdmin = $true; $SiteCollectionAdmin.Update();
function Get-PermissionsReport($SharePointSite, $IterateThrough) { $SharePointSite | Get-SPUser | % { New-Object PSObject -Property @{ UserLogin = $_.UserLogin 'Role Permission: ' = $_.Roles 'Security Group: ' = $_.Groups | %{$_.Roles} Groups = $_.Groups Url = $SharePointSite.Url } } if($IterateThrough) { $SharePointSite.Webs | % { Get-PermissionsReport $_ $IterateThrough } } } $SharePointSite = Get-SPWeb "{SharePoint URL}" Get-SPPermissionsReport $SharePointSite $true | Sort-Object UserLogin | Out-GridView