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

ОБЛАСТЬ ПРИМЕНЕНИЯ:yes-img-132013 yes-img-162016 yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint в Microsoft 365

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

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

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

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

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

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

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

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

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

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

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

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

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

Предостережение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запуск сеанса 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.

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

  1. Эта процедура начинается после выполнения шага 4 процедуры Запуск сеанса Microsoft PowerShell.

  2. Следующая команда извлекает идентификатор локальной фермы, сохраняет его в переменной $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. Выполните действия с 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 "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 2016 и SharePoint Server 2019

Другие ресурсы

Создание веб-приложения в SharePoint Server

Get-SPWebApplication

New-SPClaimsPrincipal

Get-SPServiceApplication

Get-SPServiceApplicationSecurity

Grant-SPObjectSecurity

Set-SPServiceApplicationSecurity

Get-SPFarm

Get-SPClaimProvider