Ограничение или разрешение доступа к приложению службы в SharePoint Server
**Применимо к:**SharePoint Foundation 2013, SharePoint Server 2013, SharePoint Server 2016
**Последнее изменение раздела:**2017-07-25
Сводка. Узнайте, как ограничивать доступ к приложению службы, добавляя и удаляя учетные записи службы, а также как восстановить к нему доступ во всей локальной ферме SharePoint Server 2016 и SharePoint 2013.
В SharePoint Server можно ограничить доступ к приложению службы так, чтобы оно было доступно только указанным веб-приложениям.
По умолчанию все приложения-службы в локальной ферме доступны всем веб-приложениям в этой ферме. Если вы размещаете в одной ферме несколько клиентов, то может потребоваться ограничить доступ к приложению-службе и изолировать приложения-службы одного клиента от веб-приложения другого клиента.
Если вы ограничили доступ к приложению-службе, а позднее решили, что это приложение должно быть доступно всей ферме, то ограничение можно удалить.
Содержание
Ограничение доступа к приложению-службе
Восстановление доступа на уровне фермы к приложению-службе
Примеры кода Windows PowerShell
Ограничение доступа к приложению-службе
Чтобы ограничить доступ к приложению-службе, удалите учетные записи службы из этого приложения-службы. Чтобы разрешить доступ к приложению-службе, добавьте учетные записи службы в это приложение-службу. Эти задачи можно выполнить с помощью центра Центр администрирования или PowerShell.
Чтобы ограничить доступ к приложению-службе, необходимо выполнить следующие действия.
Добавить в приложение-службу определенную учетную запись службы.
Удалить идентификатор локальной фермы из приложения-службы.
Примечание
Процедуры, приведенные в данной статье, описывают порядок ограничения или восстановления доступа к приложению-службе. Однако вы можете выполнять действия из этих процедур, чтобы добавлять любую учетную запись службы в любое приложение-службу или удалять любую учетную запись службы из любого приложения-службы.
Например, процедура Восстановление доступа на уровне фермы к приложению-службе с помощью центра администрирования явно описывает, как добавить идентификатор локальной фермы в приложение-службу. Вы можете использовать эту же процедуру для добавления в приложение-службу любой другой учетной записи службы. Для этого можно вместо идентификатора локальной фермы предоставить соответствующую учетную запись службы.
Поскольку идентификатор локальной фермы по умолчанию предоставляет доступ к приложению-службе на уровне фермы, излишне будет предоставлять также явные локальные разрешения веб-приложению на доступ к приложению-службе, пока этот идентификатор локальной фермы не будет удален.
Чтобы предоставить разрешения на приложение-службу, необходимо извлечь и предоставить соответствующую учетную запись службы. Для веб-приложения она также называется учетной записью удостоверения пула приложений.
После предоставления разрешений учетной записи службы и удаления идентификатора локальной фермы из приложения-службы доступ к этому приложению-службе будут иметь только веб-приложения, управляемые назначенной учетной записью службы. Вы можете назначить несколько веб-приложений (имеющих разные управляющие учетные записи служб) одному приложению-службе, повторяя процедуры и добавляя в приложение-службу разные учетные записи служб веб-приложений.
Предупреждение
Если удалить идентификатор локальной фермы из приложения-службы и не назначить этому приложению-службе никакую другую учетную запись службы, то приложение-служба станет недоступно всем веб-приложениям.
Содержание
Ограничение доступа к приложению-службе с помощью центра администрирования
Ограничение доступа к приложению-службе с помощью Windows PowerShell
Ограничение доступа к приложению-службе с помощью центра Центр администрирования
Чтобы ограничить доступ к приложению-службе с помощью центра Веб-сайт центра администрирования SharePoint, выполните следующие действия.
Извлеките учетную запись службы веб-приложения.
Добавьте эту учетную запись службы веб-приложения в приложение-службу.
Удалите идентификатор локальной фермы из приложения-службы.
Процедуры в данном разделе
Извлечение учетной записи службы веб-приложения с помощью центра администрирования
Предоставление и удаление разрешений учетным записям служб для доступа к приложению-службе с помощью центра администрирования
Извлечение учетной записи службы веб-приложения с помощью центра администрирования
Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является членом группы администраторов фермы SharePoint.
На домашней странице центра Центр администрирования в разделе Безопасность щелкните элемент Настройка учетных записей служб.
На странице Учетные записи служб выберите компонент служб и веб-приложений в первом раскрывающемся списке.
Учетная запись службы отображается в списке Выберите учетную запись для этого компонента. Запишите имя этой учетной записи службы, поскольку оно будет использоваться в следующей процедуре.
Нажмите кнопку Отмена, чтобы уйти со страницы Учетные записи служб без внесения изменений.
Предоставление и удаление разрешений на доступ к приложению службы для учетных записей служб с помощью центра администрирования
Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является членом группы администраторов фермы SharePoint.
На домашней странице центра Центр администрирования в разделе Управление приложениями щелкните элемент Управление приложениями-службами.
На странице Управление приложениями-службами щелкните строку, содержащую приложение-службу, для которого требуется назначить разрешения.
Лента становится доступной.
В группе Общий доступ на ленте щелкните элемент Разрешения.
В диалоговом окне Разрешения подключения введите имя учетной записи службы, которое извлекалось в предыдущей процедуре, и нажмите кнопку Добавить.
Убедитесь, что только что добавленное имя учетной записи службы выбрано в средней области, а затем установите соответствующий флажок в нижней области, чтобы предоставить требуемый уровень разрешений.
В средней области щелкните элемент Локальная ферма, а затем нажмите Удалить.
Убедитесь, что на странице Разрешения подключения теперь указана только учетная запись службы, которой вы хотите предоставить доступ к приложению-службе, и что эта учетная запись службы имеет необходимые разрешения в приложении-службе. Нажмите кнопку ОК, чтобы изменить разрешения, или кнопку Отмена, чтобы завершить задачу без внесения изменений.
Вы можете предоставлять и удалять разрешения для любой учетной записи службы, используя эту процедуру. Чтобы восстановить идентификатор локальной фермы в приложении службы, используя центр администрирования, требуется дополнительное действие, которое не относится к другим учетным записям служб. Сведения о том, как это сделать, см. в разделе Восстановление доступа на уровне фермы к приложению службы ниже в этой статье.
Ограничение доступа к приложению-службе с помощью Microsoft PowerShell
Во всех процедурах данного раздела предполагается, что вы имеете соответствующие разрешения и открыли окно командной строки PowerShell, как описывается в процедуре Начало сеанса Windows PowerShell далее в этом разделе.
Процесс ограничения доступа к приложению-службе с помощью PowerShell более сложный, чем выполнение этой же задачи с помощью центра Центр администрирования. В PowerShell будут использоваться некоторые процедуры для сбора и хранения сведений, чтобы включать их в последующие процедуры.
После запуска PowerShell для ограничения доступа к приложению-службе выполняются следующие действия.
Извлечение идентификатора локальной фермы.
Извлечение учетной записи службы веб-приложения.
Создание нового субъекта утверждений, содержащего учетную запись службы веб-приложения.
Извлечение объекта безопасности приложения-службы.
Добавление учетной записи службы веб-приложения в объект безопасности приложения-службы.
Удаление идентификатора локальной фермы из объекта безопасности приложения-службы.
Назначение обновленного объекта безопасности приложению-службе.
Отображение и просмотр обновленных разрешений.
Содержание
Начало сеанса Windows PowerShell
Извлечение идентификатора локальной фермы с помощью Windows PowerShell
Извлечение учетной записи службы веб-приложения и создание нового субъекта утверждений с помощью Windows 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.
Содержание
Извлечение идентификатора локальной фермы с помощью Windows PowerShell
Восстановление доступа на уровне локальной фермы к приложению-службе с помощью центра администрирования
Восстановление доступа на уровне локальной фермы к приложению-службе с помощью Windows Powershell
Извлечение идентификатора локальной фермы с помощью PowerShell
Эта процедура начинается после выполнения действия 4 процедуры Начало сеанса Windows PowerShell.
Следующая команда извлекает идентификатор локальной фермы, сохраняет его в переменной $farmID и отображает этот идентификатор в командной строке:
$farmID = Get-SPFarm | select id
Если планируется восстанавливать доступ на уровне фермы с помощью центра Центр администрирования, скопируйте это значение в буфер для использования в следующей процедуре.
Если планируется восстанавливать доступ на уровне фермы к приложению-службе с помощью PowerShell, введите в командной строке PowerShell следующие дополнительные команды. Полученные сведения будут использоваться в следующей процедуре.
$claimProvider = (Get-SPClaimProvider System).ClaimProvider $principal = New-SPClaimsPrincipal -ClaimType "https://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 "https://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 "https://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
See also
Добавление и удаление подключений к приложениям службы для веб-приложения в SharePoint Server
Разрешения учетных записей и параметры безопасности в SharePoint Server 2016
Создание веб-приложения в SharePoint 2013
Get-SPWebApplication
New-SPClaimsPrincipal
Get-SPServiceApplication
Get-SPServiceApplicationSecurity
Grant-SPObjectSecurity
Revoke-SPObjectSecurity
Set-SPServiceApplicationSecurity
Get-SPFarm
Get-SPClaimProvider