Ограничение или разрешение доступа к приложению службы в SharePoint Server
ОБЛАСТЬ ПРИМЕНЕНИЯ:2013 2016 2019 Subscription Edition SharePoint в Microsoft 365
В SharePoint Server можно ограничить доступ к приложению службы так, чтобы оно было доступно только указанным веб-приложениям.
По умолчанию все приложения-службы в локальной ферме доступны всем веб-приложениям в этой ферме. Вы можете ограничить доступ к приложению службы, если вы размещаете несколько клиентов в одной ферме и хотите изолировать приложения службы одного клиента от веб-приложения другого клиента.
Если вы ограничили доступ к приложению-службе, а позднее решили, что это приложение должно быть доступно всей ферме, то ограничение можно удалить.
Ограничение доступа к приложению службы
Чтобы ограничить доступ к приложению-службе, удалите учетные записи службы из этого приложения-службы. Чтобы разрешить доступ к приложению-службе, добавьте учетные записи службы в это приложение-службу. Эти задачи можно выполнять с помощью центра администрирования или PowerShell.
Чтобы ограничить доступ к приложению службы, необходимо выполнить следующие действия:
Добавить в приложение-службу определенную учетную запись службы.
Удалить идентификатор локальной фермы из приложения-службы.
Процедуры, приведенные в данной статье, описывают порядок ограничения или восстановления доступа к приложению-службе. Однако вы можете выполнять действия из этих процедур, чтобы добавлять любую учетную запись службы в любое приложение-службу или удалять любую учетную запись службы из любого приложения-службы.
Например, процедура Восстановление доступа на уровне фермы к приложению-службе с помощью центра администрирования явно описывает, как добавить идентификатор локальной фермы в приложение-службу. Вы можете использовать эту же процедуру для добавления в приложение-службу любой другой учетной записи службы. Для этого можно вместо идентификатора локальной фермы предоставить соответствующую учетную запись службы.
Поскольку идентификатор локальной фермы по умолчанию предоставляет доступ к приложению-службе на уровне фермы, излишне будет предоставлять также явные локальные разрешения веб-приложению на доступ к приложению-службе, пока этот идентификатор локальной фермы не будет удален.
Чтобы предоставить разрешения на приложение-службу, необходимо извлечь и предоставить соответствующую учетную запись службы. Для веб-приложения она также называется учетной записью удостоверения пула приложений.
После предоставления разрешений учетной записи службы и удаления идентификатора локальной фермы из приложения-службы доступ к этому приложению-службе будут иметь только веб-приложения, управляемые назначенной учетной записью службы. Вы можете назначить несколько веб-приложений (имеющих разные управляющие учетные записи служб) одному приложению-службе, повторяя процедуры и добавляя в приложение-службу разные учетные записи служб веб-приложений.
Предостережение
Если удалить идентификатор локальной фермы из приложения-службы и не назначить этому приложению-службе никакую другую учетную запись службы, то приложение-служба станет недоступно всем веб-приложениям.
Ограничение доступа к приложению службы с помощью центра администрирования
Чтобы ограничить доступ к приложению-службе с помощью центра Веб-сайт центра администрирования SharePoint, выполните следующие действия.
Извлечение учетной записи службы веб-приложения.
Добавьте эту учетную запись службы веб-приложения в приложение-службу.
Удалите идентификатор локальной фермы из приложения службы.
Извлечение учетной записи службы веб-приложения с помощью центра администрирования
Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является участником группы администраторов фермы SharePoint.
На домашней странице центра Центр администрирования в разделе Безопасность щелкните элемент Настройка учетных записей служб.
На странице Учетные записи служб выберите компонент служб и веб-приложений в первом раскрывающемся списке.
Учетная запись службы отображается в списке Выберите учетную запись для этого компонента. Запишите имя этой учетной записи службы, поскольку оно будет использоваться в следующей процедуре.
Нажмите кнопку Отмена, чтобы закрыть страницу Учетные записи служб без внесения изменений.
Предоставление и удаление разрешений учетным записям служб для доступа к приложению-службе с помощью центра администрирования
Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является участником группы администраторов фермы SharePoint.
На домашней странице центра Центр администрирования в разделе Управление приложениями щелкните элемент Управление приложениями-службами.
На странице Управление приложениями-службами щелкните строку, содержащую приложение-службу, для которого требуется назначить разрешения.
Лента становится доступной.
В группе Общий доступ на ленте щелкните элемент Разрешения.
В диалоговом окне Разрешения подключения введите имя учетной записи службы, полученное в предыдущей процедуре, и нажмите кнопку Добавить.
Убедитесь, что только что добавленное имя учетной записи службы выбрано в средней области, а затем установите соответствующий флажок в нижней области, чтобы предоставить требуемый уровень разрешений.
В средней области щелкните элемент Локальная ферма, а затем нажмите Удалить.
Убедитесь, что на странице Разрешения подключения теперь указана только учетная запись службы, которой вы хотите предоставить доступ к приложению-службе, и что эта учетная запись службы имеет необходимые разрешения в приложении-службе. Нажмите кнопку ОК, чтобы изменить разрешения, или кнопку Отмена, чтобы завершить задачу без внесения изменений.
Вы можете предоставлять и удалять разрешения для любой учетной записи службы, используя эту процедуру. Чтобы восстановить идентификатор локальной фермы в приложении службы, используя центр администрирования, требуется дополнительное действие, которое не относится к другим учетным записям служб. Дополнительные сведения о том, как это сделать, см. в статье Восстановление доступа на уровне фермы к приложению-службе далее в этой статье.
Ограничение доступа к приложению службы с помощью Microsoft PowerShell
Во всех процедурах, описанных в этом разделе, предполагается, что у вас есть соответствующие разрешения.
Процесс, ограничивающий доступ к приложению службы с помощью PowerShell, сложнее, чем выполнение той же задачи с помощью центра администрирования. В PowerShell вы будете использовать некоторые процедуры для сбора и хранения сведений для ввода в последующие процедуры.
После запуска PowerShell для ограничения доступа к приложению службы выполните следующие действия:
Извлечение идентификатора локальной фермы.
Извлечение учетной записи службы веб-приложения.
Создание нового субъекта утверждений, содержащего учетную запись службы веб-приложения.
Извлечение объекта безопасности приложения-службы.
Добавление учетной записи службы веб-приложения в объект безопасности приложения-службы.
Удаление идентификатора локальной фермы из объекта безопасности приложения-службы.
Назначение обновленного объекта безопасности приложению-службе.
Отображение и просмотр обновленных разрешений
Запуск сеанса Microsoft PowerShell
Убедитесь, что вы являетесь участником следующих групп:
Предопределенная роль сервера securityadmin для экземпляра SQL Server.
Предопределенная роль базы данных db_owner во всех базах данных, которые должны обновляться.
Группа администраторов для сервера, на котором выполняются командлеты PowerShell.
С помощью командлета Add-SPShellAdmin администратор может предоставлять разрешения на использование командлетов SharePoint Server.
Примечание.
При отсутствии разрешений обратитесь к своему администратору программы установки или администратору SQL Server за разрешениями. Дополнительные сведения о разрешениях PowerShell см. в статье Add-SPShellAdmin.
Запустите командную консоль SharePoint.
Извлечение учетной записи службы веб-приложения и создание нового субъекта утверждений с помощью Microsoft PowerShell
В командной строке PowerShell ведите следующую команду, чтобы извлечь учетную запись службы (т.е. учетную запись удостоверения пула приложений) веб-приложения:
$webapp = Get-SPWebApplication <http://WebApplication> $webApp.ApplicationPool.UserName
Где <http://WebApplication> — URL-адрес веб-приложения.
Имя учетной записи службы веб-приложения отображается в командной строке.
Чтобы создать новый субъект утверждений, введите следующую команду:
$principal = New-SPClaimsPrincipal <ServiceAccount> -IdentityType WindowsSamAccountName
Где <ServiceAccount> — это имя пользователя (в форме jane@contoso.com или contoso\jane), полученное при выполнении предыдущей команды. Переменная $principal будет содержать новый субъект утверждений.
Извлечение объекта безопасности приложения-службы
Чтобы извлечь объект безопасности приложения-службы, введите следующие команды. Переменная $security будет содержать объект безопасности приложения-службы.
$spapp = Get-SPServiceApplication -Name "<ServiceApplicationDisplayName>" $spguid = $spapp.id $security = Get-SPServiceApplicationSecurity $spguid
Где <ServiceApplicationDisplayName> — отображаемое имя приложения службы.
Важно!
Отображаемое имя необходимо заключить в кавычки, и оно должно точно соответствовать отображаемого имени приложения-службы. Рекомендуется не создавать несколько приложений-служб с одним и тем же отображаемым именем. Если у вас есть несколько приложений службы с одинаковыми отображаемыми именами (мы не рекомендуем это), можно запустить командлет Get-SPServiceApplication без аргументов, чтобы просмотреть все приложения службы. Затем можно идентифицировать приложение службы непосредственно по его GUID.
Get-SpServiceApplication
Перечисляются все приложения служб.
$spapp = Get-SpserviceApplication -Identity <GUID> $spguid = $spapp.id
Где <GUID> — это GUID приложения-службы, для которого требуется обновить разрешения.
Обновление объекта безопасности приложения-службы путем добавления нужных разрешений
Первое действие по обновлению объекта безопасности приложения-службы состоит в добавлении нового субъекта утверждений $principal в объект безопасности приложения-службы $security. Для этого выполните следующую команду:
Grant-SPObjectSecurity $security $principal -Rights "<Rights>"
Где <Rights> — это разрешения, которые вы хотите предоставить. Как правило, это полный доступ. Доступные разрешения могут меняться в зависимости от приложений-служб.
Если вы не хотите предоставлять разрешения на полный доступ, но не знаете, какие разрешения могут быть предоставлены для этого приложения-службы, можно получить доступные разрешения, выполнив следующие команды:
$rightslist = Get-SPServiceApplicationSecurity $spapp $rightslist.NamedAccessRights
Чтобы удалить идентификатор локальной фермы (который хранится в переменной $farmID ) из объекта безопасности приложения-службы $security, введите следующую команду:
Revoke-SPObjectSecurity $security $farmID
Чтобы назначить обновленный объект безопасности $security приложению службы и убедиться, что объект безопасности для приложения службы обновлен соответствующим образом, введите следующие команды:
Set-SPServiceApplicationSecurity $spapp -ObjectSecurity $security (Get-SPServiceApplicationSecurity $spapp).AccessRules
Используя эти процедуры, можно добавлять или удалять в приложении-службе любую учетную запись службы.
Восстановление доступа на уровне фермы к приложению-службе
Чтобы восстановить доступ на уровне фермы к приложению-службе, можно добавить в это приложение-службу идентификатор локальной фермы. Это можно сделать с помощью центра администрирования или команд PowerShell. Однако для получения идентификатора локальной фермы необходимо использовать PowerShell.
Извлечение идентификатора локальной фермы с помощью PowerShell
Эта процедура начинается после выполнения шага 4 процедуры Запуск сеанса Microsoft PowerShell.
Следующая команда извлекает идентификатор локальной фермы, сохраняет его в переменной $farmID и отображает идентификатор в командной строке:
$farmID = Get-SPFarm | select id
Если планируется восстанавливать доступ на уровне фермы с помощью центра Центр администрирования, скопируйте это значение в буфер для использования в следующей процедуре.
Если вы хотите восстановить доступ к приложению службы на уровне фермы с помощью PowerShell, введите следующие дополнительные команды в командной строке PowerShell. Полученные сведения будут использоваться в следующей процедуре.
$claimProvider = (Get-SPClaimProvider System).ClaimProvider $principal = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid
Восстановление доступа на уровне локальной фермы к приложению-службе с помощью центра администрирования
Выполните действия с 1 по 3 процедуры Предоставление и удаление разрешений учетным записям служб для доступа к приложению-службе с помощью центра администрирования.
В диалоговом окне Разрешения подключения скопируйте идентификатор локальной фермы, полученный в предыдущей процедуре, и нажмите кнопку Добавить.
Убедитесь, что этот идентификатор локальной фермы выбран в средней области. Установите флажок Полный доступ в нижней области.
Нажмите кнопку ОК, чтобы восстановить доступ на уровне фермы к приложению службы, или кнопку Отмена, чтобы завершить задачу без внесения изменений.
Восстановление доступа на уровне локальной фермы к приложению-службе с помощью Microsoft PowerShell
Эта процедура начинается после шага 2 процедуры Получение идентификатора локальной фермы с помощью Windows PowerShell.
Чтобы восстановить извлеченный идентификатор локальной фермы в объекте безопасности приложения-службы $security, введите следующие команды:
$spapp = Get-SPServiceApplication -Name "<ServiceApplicationDisplayName>" $spguid = $spapp.id $security = Get-SPServiceApplicationSecurity $spguid Grant-SPObjectSecurity -Identity $security -Principal $Principal -Rights "Full Control" Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
Где <ServiceApplicationDisplayName> — отображаемое имя приложения службы.
Важно!
Отображаемое имя необходимо заключить в кавычки, и оно должно точно соответствовать отображаемого имени приложения-службы. Рекомендуется не создавать несколько приложений-служб с одним и тем же отображаемым именем. Если у вас есть несколько приложений службы с одинаковыми отображаемыми именами (мы не рекомендуем это), можно запустить командлет Get-SPServiceApplication без аргументов, чтобы просмотреть все приложения службы. Затем можно идентифицировать приложение службы непосредственно по его GUID.
Примеры кода Microsoft PowerShell
В следующем примере администратор хочет ограничить доступ к приложению службы "Contoso BDC" веб-приложению http://contoso/hawaii , управляемому учетной записью службы contoso\jane. Добавив "contoso\jane" и удалив учетную запись локальной службы фермы из приложения-службы, "Contoso BDC" ограничивается только теми веб-приложениями, которые управляются учетной записью службы contoso\jane. В этом случае: http://contoso/hawaii.
$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider
$farmappId = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid
webapp = get-spwebapplication http://contoso
$webapp.applicationpool
$principal = New-SPClaimsPrincipal contoso/jane -IdentityType WindowsSamAccountName
$spapp = Get-SPServiceApplication -Name "Contoso BDC"
$spguid = $spapp.id
$security = Get-SPServiceApplicationSecurity $spguid
Grant-SPObjectSecurity $security $principal -Rights "Full Control"
Revoke-SPObjectSecurity $security $farmappId
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules
В следующем примере восстанавливается доступ к приложению службы "Contoso BDC" для всех веб-приложений в локальной ферме.
$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider
$farmappId = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid
$spapp = Get-SPServiceApplication -Name "Contoso BDC"
$spguid = $spapp.id
$security = Get-SPServiceApplicationSecurity $spguid
Grant-SPObjectSecurity -Identity $security -Principal $farmappId -Rights "Full Control"
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules
См. также
Понятия
Добавление и удаление подключений к приложению службы для веб-приложения в SharePoint Server
Другие ресурсы
Создание веб-приложения в SharePoint Server
Get-SPServiceApplicationSecurity