Ограничение или разрешение доступа к приложению службы в SharePoint Server

 

**Применимо к:**SharePoint Foundation 2013, SharePoint Server 2013, SharePoint Server 2016

**Последнее изменение раздела:**2017-07-25

Сводка. Узнайте, как ограничивать доступ к приложению службы, добавляя и удаляя учетные записи службы, а также как восстановить к нему доступ во всей локальной ферме SharePoint Server 2016 и SharePoint 2013.

В SharePoint Server можно ограничить доступ к приложению службы так, чтобы оно было доступно только указанным веб-приложениям.

По умолчанию все приложения-службы в локальной ферме доступны всем веб-приложениям в этой ферме. Если вы размещаете в одной ферме несколько клиентов, то может потребоваться ограничить доступ к приложению-службе и изолировать приложения-службы одного клиента от веб-приложения другого клиента.

Если вы ограничили доступ к приложению-службе, а позднее решили, что это приложение должно быть доступно всей ферме, то ограничение можно удалить.

Содержание

  • Ограничение доступа к приложению-службе

  • Восстановление доступа на уровне фермы к приложению-службе

  • Примеры кода Windows PowerShell

Ограничение доступа к приложению-службе

Чтобы ограничить доступ к приложению-службе, удалите учетные записи службы из этого приложения-службы. Чтобы разрешить доступ к приложению-службе, добавьте учетные записи службы в это приложение-службу. Эти задачи можно выполнить с помощью центра Центр администрирования или PowerShell.

Чтобы ограничить доступ к приложению-службе, необходимо выполнить следующие действия.

  1. Добавить в приложение-службу определенную учетную запись службы.

  2. Удалить идентификатор локальной фермы из приложения-службы.

Примечание

Процедуры, приведенные в данной статье, описывают порядок ограничения или восстановления доступа к приложению-службе. Однако вы можете выполнять действия из этих процедур, чтобы добавлять любую учетную запись службы в любое приложение-службу или удалять любую учетную запись службы из любого приложения-службы.
Например, процедура Восстановление доступа на уровне фермы к приложению-службе с помощью центра администрирования явно описывает, как добавить идентификатор локальной фермы в приложение-службу. Вы можете использовать эту же процедуру для добавления в приложение-службу любой другой учетной записи службы. Для этого можно вместо идентификатора локальной фермы предоставить соответствующую учетную запись службы.

Поскольку идентификатор локальной фермы по умолчанию предоставляет доступ к приложению-службе на уровне фермы, излишне будет предоставлять также явные локальные разрешения веб-приложению на доступ к приложению-службе, пока этот идентификатор локальной фермы не будет удален.

Чтобы предоставить разрешения на приложение-службу, необходимо извлечь и предоставить соответствующую учетную запись службы. Для веб-приложения она также называется учетной записью удостоверения пула приложений.

После предоставления разрешений учетной записи службы и удаления идентификатора локальной фермы из приложения-службы доступ к этому приложению-службе будут иметь только веб-приложения, управляемые назначенной учетной записью службы. Вы можете назначить несколько веб-приложений (имеющих разные управляющие учетные записи служб) одному приложению-службе, повторяя процедуры и добавляя в приложение-службу разные учетные записи служб веб-приложений.

Предупреждение

Если удалить идентификатор локальной фермы из приложения-службы и не назначить этому приложению-службе никакую другую учетную запись службы, то приложение-служба станет недоступно всем веб-приложениям.

Содержание

  • Ограничение доступа к приложению-службе с помощью центра администрирования

  • Ограничение доступа к приложению-службе с помощью Windows PowerShell

Ограничение доступа к приложению-службе с помощью центра Центр администрирования

Чтобы ограничить доступ к приложению-службе с помощью центра Веб-сайт центра администрирования SharePoint, выполните следующие действия.

  1. Извлеките учетную запись службы веб-приложения.

  2. Добавьте эту учетную запись службы веб-приложения в приложение-службу.

  3. Удалите идентификатор локальной фермы из приложения-службы.

Процедуры в данном разделе

  • Извлечение учетной записи службы веб-приложения с помощью центра администрирования

  • Предоставление и удаление разрешений учетным записям служб для доступа к приложению-службе с помощью центра администрирования

Извлечение учетной записи службы веб-приложения с помощью центра администрирования

  1. Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является членом группы администраторов фермы SharePoint.

  2. На домашней странице центра Центр администрирования в разделе Безопасность щелкните элемент Настройка учетных записей служб.

  3. На странице Учетные записи служб выберите компонент служб и веб-приложений в первом раскрывающемся списке.

    Учетная запись службы отображается в списке Выберите учетную запись для этого компонента. Запишите имя этой учетной записи службы, поскольку оно будет использоваться в следующей процедуре.

  4. Нажмите кнопку Отмена, чтобы уйти со страницы Учетные записи служб без внесения изменений.

Предоставление и удаление разрешений на доступ к приложению службы для учетных записей служб с помощью центра администрирования

  1. Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является членом группы администраторов фермы SharePoint.

  2. На домашней странице центра Центр администрирования в разделе Управление приложениями щелкните элемент Управление приложениями-службами.

  3. На странице Управление приложениями-службами щелкните строку, содержащую приложение-службу, для которого требуется назначить разрешения.

    Лента становится доступной.

  4. В группе Общий доступ на ленте щелкните элемент Разрешения.

  5. В диалоговом окне Разрешения подключения введите имя учетной записи службы, которое извлекалось в предыдущей процедуре, и нажмите кнопку Добавить.

  6. Убедитесь, что только что добавленное имя учетной записи службы выбрано в средней области, а затем установите соответствующий флажок в нижней области, чтобы предоставить требуемый уровень разрешений.

  7. В средней области щелкните элемент Локальная ферма, а затем нажмите Удалить.

  8. Убедитесь, что на странице Разрешения подключения теперь указана только учетная запись службы, которой вы хотите предоставить доступ к приложению-службе, и что эта учетная запись службы имеет необходимые разрешения в приложении-службе. Нажмите кнопку ОК, чтобы изменить разрешения, или кнопку Отмена, чтобы завершить задачу без внесения изменений.

Вы можете предоставлять и удалять разрешения для любой учетной записи службы, используя эту процедуру. Чтобы восстановить идентификатор локальной фермы в приложении службы, используя центр администрирования, требуется дополнительное действие, которое не относится к другим учетным записям служб. Сведения о том, как это сделать, см. в разделе Восстановление доступа на уровне фермы к приложению службы ниже в этой статье.

Ограничение доступа к приложению-службе с помощью Microsoft PowerShell

Во всех процедурах данного раздела предполагается, что вы имеете соответствующие разрешения и открыли окно командной строки PowerShell, как описывается в процедуре Начало сеанса Windows PowerShell далее в этом разделе.

Процесс ограничения доступа к приложению-службе с помощью PowerShell более сложный, чем выполнение этой же задачи с помощью центра Центр администрирования. В PowerShell будут использоваться некоторые процедуры для сбора и хранения сведений, чтобы включать их в последующие процедуры.

После запуска PowerShell для ограничения доступа к приложению-службе выполняются следующие действия.

  1. Извлечение идентификатора локальной фермы.

  2. Извлечение учетной записи службы веб-приложения.

  3. Создание нового субъекта утверждений, содержащего учетную запись службы веб-приложения.

  4. Извлечение объекта безопасности приложения-службы.

  5. Добавление учетной записи службы веб-приложения в объект безопасности приложения-службы.

  6. Удаление идентификатора локальной фермы из объекта безопасности приложения-службы.

  7. Назначение обновленного объекта безопасности приложению-службе.

  8. Отображение и просмотр обновленных разрешений.

Содержание

  • Начало сеанса Windows PowerShell

  • Извлечение идентификатора локальной фермы с помощью Windows PowerShell

  • Извлечение учетной записи службы веб-приложения и создание нового субъекта утверждений с помощью Windows PowerShell

  • Извлечение объекта безопасности приложения-службы

  • Обновление объекта безопасности приложения-службы путем добавления нужных разрешений

Начало сеанса Microsoft PowerShell

  1. Убедитесь, что предоставлены следующие разрешения.

    • Предопределенная роль сервера securityadmin для экземпляра SQL Server.

    • Предопределенная роль базы данных db_owner во всех базах данных, которые должны обновляться.

    • Группа администраторов для сервера, на котором выполняются командлеты PowerShell.

    С помощью командлета Add-SPShellAdmin администратор может предоставлять разрешения на использование командлетов SharePoint Server.

    Примечание

    Если у вас нет разрешений, обратитесь к администратору установки или администратору SQL Server для запроса разрешений. Дополнительные сведения о разрешениях PowerShell см. в статье Add-SPShellAdmin.

  2. Запустите Командная консоль SharePoint.

Извлечение учетной записи службы веб-приложения и создание нового субъекта утверждений с помощью Microsoft PowerShell

  1. В командной строке PowerShell ведите следующую команду, чтобы извлечь учетную запись службы (т.е. учетную запись удостоверения пула приложений) веб-приложения:

    $webapp = Get-SPWebApplication <http://WebApplication>
    $webApp.ApplicationPool.UserName
    

    Где <http://WebApplication> — URL-адрес веб-приложения.

    Имя учетной записи службы веб-приложения отображается в командной строке.

  2. Чтобы создать новый субъект утверждений, введите следующую команду:

    $principal = New-SPClaimsPrincipal <ServiceAccount> -IdentityType WindowsSamAccountName
    

    Где <ServiceAccount> — имя пользователя (в виде jane@contoso.com или contoso\jane), которое было извлечено с помощью предыдущей команды. Переменная $principal будет содержать новый субъект утверждений.

Извлечение объекта безопасности приложения службы

  1. Чтобы извлечь объект безопасности приложения-службы, введите следующие команды. Переменная $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 приложения-службы, для которого требуется обновить разрешения.

Обновление объекта безопасности приложения службы путем добавления нужных разрешений

  1. Первое действие по обновлению объекта безопасности приложения-службы состоит в добавлении нового субъекта утверждений $principal в объект безопасности приложения-службы $security. Для этого выполните следующую команду:

    Grant-SPObjectSecurity $security $principal -Rights "<Rights>"
    

    Где <Rights> — разрешения, которые требуется предоставить. Как правило, это полный доступ. Доступные разрешения могут меняться в зависимости от приложений-служб.

    Совет

    Если вы не хотите предоставлять разрешения на полный доступ, но не знаете, какие разрешения могут быть предоставлены для этого приложения-службы, можно получить доступные разрешения, выполнив следующие команды:
    $rightslist = Get-SPServiceApplicationSecurity $spapp
    $rightslist.NamedAccessRights

  2. Чтобы удалить идентификатор локальной фермы (который хранится в переменной $farmID) из объекта безопасности приложения-службы $security, введите следующую команду:

    Revoke-SPObjectSecurity $security $farmID
    
  3. Чтобы назначить обновленный объект безопасности $security приложению-службе и подтвердить, что этот объект безопасности для приложения-службы обновлен должным образом, введите следующие команды:

    Set-SPServiceApplicationSecurity $spapp -ObjectSecurity $security (Get-SPServiceApplicationSecurity $spapp).AccessRules
    

Используя эти процедуры, можно добавлять или удалять в приложении-службе любую учетную запись службы.

Восстановление доступа на уровне фермы к приложению-службе

Чтобы восстановить доступ на уровне фермы к приложению-службе, можно добавить в это приложение-службу идентификатор локальной фермы. Это можно сделать с помощью центра Центр администрирования или с помощью команд PowerShell. Однако для получения идентификатора локальной фермы необходимо использовать PowerShell.

Содержание

  • Извлечение идентификатора локальной фермы с помощью Windows PowerShell

  • Восстановление доступа на уровне локальной фермы к приложению-службе с помощью центра администрирования

  • Восстановление доступа на уровне локальной фермы к приложению-службе с помощью Windows Powershell

Извлечение идентификатора локальной фермы с помощью PowerShell

  1. Эта процедура начинается после выполнения действия 4 процедуры Начало сеанса Windows PowerShell.

  2. Следующая команда извлекает идентификатор локальной фермы, сохраняет его в переменной $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. Выполните действия с 1 по 3 процедуры Предоставление и удаление разрешений учетным записям служб для доступа к приложению-службе с помощью центра администрирования.

  2. Скопируйте в диалоговое окно Разрешения подключения идентификатор локальной фермы, извлеченный в предыдущей процедуре, и нажмите кнопку Добавить.

  3. Убедитесь, что этот идентификатор локальной фермы выбран в средней области. Установите флажок Полный доступ в нижней области.

  4. Нажмите кнопку ОК, чтобы восстановить доступ на уровне фермы к приложению-службе, или кнопку Отмена, чтобы завершить задачу без внесения изменений.

Восстановление доступа на уровне локальной фермы к приложению службы с помощью Microsoft PowerShell

  1. Эта процедура начинается после действия 2 процедуры Извлечение идентификатора локальной фермы с помощью Windows Powershell.

  2. Чтобы восстановить извлеченный идентификатор локальной фермы в объекте безопасности приложения-службы $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