Общие сведения о мультитенантности в SharePoint Server 2013

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

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

Примечание.

Microsoft OneDrive с интеграцией Viva Engage не работает для мультитенантных приложений или секционированных приложений-служб для локальных развертываний.

Подготовка к работе

Введение в мультитенантность SharePoint Server 2013

Что такое мультитенантность?

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

Мультитенантность — это возможность управлять и секционировать данные сайтов и других общих служб или программного обеспечения для размещения нескольких клиентов. Эта возможность отличается от запуска нескольких экземпляров службы или настройки отдельного оборудования. Что касается продуктов и технологий Майкрософт, мультитенантность служб обеспечивает максимальное использование ресурсов фермы серверов в среде размещения. Прежде чем узнать о средах размещения, важно понять архитектуру служб.

Ключевые компоненты и службы, обеспечивающие мультитенантность в SharePoint Server 2013

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

Веб-приложение

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

Семейство веб-сайтов с именем на основе узла

Семейства веб-сайтов с именем узла позволяют назначать уникальное DNS-имя семействам веб-сайтов. Например, вы можете обращаться к ним как http://TeamA.contoso.com и http://TeamB.fabrikam.com. Эта подготовка позволяет развернуть в одном веб-приложении множество сайтов, использующих уникальные DNS-имена. Это также позволяет поставщикам услуг масштабировать среду для многих клиентов. Если вы не используете семейства веб-сайтов с именем узла, веб-приложение SharePoint будет содержать множество семейств веб-сайтов на основе пути, которые используют одно и то же имя узла (DNS-имя). Например, группа А будет иметь семейство веб-сайтов по адресу https://contoso.com/sites/teamA , а группа B — семейство веб-сайтов в https://fabrikam.com/sites/teamB.

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

Дополнительные сведения о планировании семейств веб-сайтов с именем узла для SharePoint Server 2013 см. в статье Архитектура и развертывание семейства веб-сайтов с именем узла (SharePoint 2013).

Группы служб (группы прокси)

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

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

Пользовательские группы не могут повторно использовать в нескольких веб-приложениях. При каждом выборе "пользовательский" при создании веб-приложения вы выбираете службы только для создаваемого веб-приложения.

Прокси-сервер службы

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

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

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

Приложения службы

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

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

Пакеты дополнительных компонентов и лицензии

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

В SharePoint Server 2013 добавлена новая функция для назначения различных лицензий SharePoint для каждого пользователя. Кроме того, он включает проверки лицензий SharePoint во время выполнения. Эта функция обеспечивает большую гибкость для поставщика услуг при создании различных предложений служб в рамках упрощенной модели развертывания. В предыдущих версиях SharePoint поставщикам услуг нужно было создавать отдельные модели развертывания SharePoint для каждой версии SharePoint. Дополнительные сведения о функциях SharePoint см. в разделе Доступность функций SharePoint в локальных решениях следующей статьи: Описание службы SharePoint.

Управление правами на доступ к данным

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

Рекомендации по проектированию архитектуры

В этом разделе описываются различные рекомендации по проектированию мультитенантной среды SharePoint Server 2013. Как описано ранее в документе, мультитенантность обеспечивает некоторые уникальные характеристики, которые следует учитывать при разработке и проектировании среды SharePoint Server 2013. Для принятия правильных решений необходимо сопоставлять эти факторы со своими требованиями.

Общие сведения об ограничениях в SharePoint Server 2013

Понимание границ программного обеспечения и ограничений SharePoint Server 2013 поможет вам принять правильные решения для выбора подходящей архитектуры для мультитенантной среды SharePoint. Дополнительные сведения о ключевых границах и ограничениях для базы данных контента и семейства веб-сайтов, применяемых к мультитенантной среде SharePoint Server 2013, см. в разделах Границы и ограничения программного обеспечения для SharePoint Server 2016 и Границы и ограничения программного обеспечения для SharePoint Server 2016.

Общие и выделенные фермы

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

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

Не разрешите развертывание кода с полным доверием на сайтах.

Не разрешайте настройки, влияющие на общие ресурсы, такие как файл web.config.

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

Одно или несколько веб-приложений

Используйте выделенные веб-приложения для клиентов, которым требуется изменять общие ресурсы веб-приложения, например файл web.config.

Объединяя нескольких клиентов в одной ферме, используйте одно выделенное веб-приложение SharePoint для всего контента с проверкой подлинности, и второе — для анонимного контента. Для этого метода потребуются два отдельных идентификатора подписок для клиентов с обоими типами содержимого. Этот метод также упростит лицензирование.

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

Среда с одной фермой

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

В этом примере описаны следующие способы развертывания сайтов клиентов в ферме.

  • Выделенные пул приложений и веб-приложение

  • Общий пул приложений и выделенное веб-приложение

  • Общее веб-приложение

    • Сайты с проверкой подлинности

    • Сайты без проверки подлинности

Использовать выделенный пул приложений для клиентов следует только при необходимости соблюдения требований к изоляции. Используйте выделенные веб-приложения для клиентов, которым приходится изменять общие ресурсы организации, например файл web.config.

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

Не позволяйте развертывать на сайтах код с полным доступом.

Не позволяйте вносить изменения, влияющие на общие ресурсы, например файл web.config.

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

Многоуровневая среда

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

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

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

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

Рекомендации по безопасности

В этом разделе рассматриваются различные вопросы безопасности при планировании и проектировании мультитенантной платформы размещения SharePoint Server 2013. С этого момента любой раздел, например раздел организационных подразделений (OU), в который рассказывается о конфигурации средства выбора людей, работает только без дальнейшей настройки с проверка подлинности Windows.

SharePoint Server 2013 поддерживает множество методов и поставщиков проверки подлинности следующих типов:

  • Проверка подлинности Windows

  • Проверка подлинности на основе форм

  • Проверка подлинности на основе маркеров SAML

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

  • NTLM;

  • Kerberos

  • Дайджест-проверка

  • Базовая проверка

Проверка подлинности на основе форм представляет собой систему управления удостоверениями, основанными на утверждениях, которая основана на членстве в ASP.NET и проверке подлинности поставщика ролей. Проверку подлинности на основе форм можно использовать для учетных данных, хранящихся в поставщике проверки подлинности, например:

  • доменные службы Active Directory;

  • база данных, например SQL Server;

  • хранилище данных (LDAP), например Novell eDirectory, Novell Directory Services (NDS) или Sun ONE.

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

Чтобы использовать проверку подлинности на основе форм для проверки подлинности пользователей в системе управления удостоверениями, не основанной на Windows или внешней, необходимо зарегистрировать поставщика членства и диспетчера ролей в нескольких web.config файлах. SharePoint Server 2013 использует стандартный интерфейс диспетчера ролей ASP.NET для сбора сведений о группе текущего пользователя. Каждая ASP.NET роль рассматривается как группа домена в процессе авторизации в SharePoint Server 2013. Диспетчеры ролей в файле web.config регистрируются так же, как регистрируются поставщики членства для проверки подлинности.

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

Проверка подлинности на основе токена SAML в SharePoint Server 2013 использует протокол SAML 1.1 и профиль пассивного запроса WS-Federation (WS-F PRP). Для этого требуется координация с администраторами среды на основе утверждений, будь то ваша внутренняя среда или партнерская среда. При использовании служб федерации Active Directory (AD FS) 2.0 имеется среда проверки подлинности на основе маркеров SAML.

Для веб-приложений, использующих проверку подлинности на основе утверждений, Люди Picker — это элемент управления, доступный в SharePoint Server 2013. Элемент управления "Выбор людей" использует поставщиков утверждений для составления списков, разрешения, поиска и определения удобного представления пользователей, групп и утверждений. Дополнительные сведения о конфигурации средства выбора людей см. в статье Общие сведения о Люди поставщиков средства выбора и утверждений.

Зоны представляют собой разные логические пути для получения доступа к одним сайтам в веб-приложении. Каждое веб-приложение может включать до пяти зон. При создании веб-приложения центр администрирования создает зону с именем Default. Чтобы создать дополнительные зоны, расширьте веб-приложение и выберите одно из оставшихся имен зон: Интрасеть, Экстрасеть, Интернет или Пользовательский.

Подразделения

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

На этом рисунке показана структура подразделения для среды размещения

Как минимум, необходимо связать групповую политику с корнем домена, подразделением контроллеров домена, подразделением серверов SharePoint Server и подразделением клиентов.

Корень домена

Правила безопасности для всего домена применяются в политике домена. Эти параметры хранятся в объектах групповой политики, применяющихся ко всему домену.

Подразделение контроллеров домена

Контроллеры домена хранят наиболее конфиденциальные данные организации, которые управляют конфигурацией безопасности. Объекты групповой политики на этом уровне используются для настройки и защиты контроллеров домена.

Подразделение серверов SharePoint Server

Серверы SharePoint выполняют уникальную роль, которой нет у других серверов в каталоге. Поместив эти серверы в отдельное подразделение, к ним можно применять уникальные политики. Кроме того, их можно отделить от других серверов в каталоге. Если нужно создать несколько объектов групповой политики (например, для серверов контента с анонимным доступом и серверов с проверкой подлинности), можно создавать дочерние объекты.

Подразделение клиентов

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

Чтобы создать у пользователей впечатление, что они вошли в свой личный домен, используйте редактор интерфейсов службы Active Directory (редактирование ADSI) или другое средство AD, чтобы изменить атрибут uPNSuffixes каждого подразделения клиента, как показано на следующей схеме.

На этом рисунке показано диалоговое окно редактора свойств ADSI для атрибута uPNSuffixes

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

На этом рисунке показано диалоговое окно создания объекта, в котором можно создать нового пользователя

Проверка подлинности пользователей

Проверка подлинности пользователя — это проверка личности пользователя у поставщика проверки подлинности, который представляет собой каталог или базу данных с учетными данными пользователей и может подтвердить, что пользователь указал их верно. Примером поставщика проверки подлинности являются доменные службы Active Directory (AD DS). Другие распространенные названия поставщика проверки подлинности — каталог пользователя и хранилище атрибутов.

Метод проверки подлинности — это конкретная процедура обмена учетными данными учетной записи и другими сведениями, которые подтверждают личность пользователя. Результатом работы метода проверки подлинности является доказательство (обычно в виде маркера с утверждениями) того, что поставщик проверки подлинности проверил подлинность пользователя.

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

После проверки удостоверения пользователя процесс авторизации определяет, к каким сайтам, контенту и другим компонентам может иметь доступ этот пользователь.

При планировании типов и методов проверки подлинности пользователей необходимо определить следующие характеристики:

  • типы и методы проверки подлинности пользователей для каждого веб-приложения и каждой зоны;

  • инфраструктуру проверки подлинности, необходимую для поддержки выбранных типов и методов;

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

Службы федерации Active Directory (AD FS)

SharePoint Server 2013 поддерживает проверку подлинности на основе утверждений. службы федерации Active Directory (AD FS) (AD FS) можно настроить в качестве службы маркеров безопасности поставщика удостоверений (IP-STS) для веб-приложения SharePoint Server 2013. В этой конфигурации AD FS выдает маркеры безопасности на основе SAML, состоящие из утверждений, чтобы клиентские компьютеры могли получать доступ к веб-приложениям, использующим проверку подлинности на основе утверждений. Вы можете использовать поставщик удостоверений, который является альтернативой AD FS. Но он должен поддерживать WS-Federation стандарт. Кроме того, при использовании конфигурации AD FS требуется пользовательский код.

Дополнительные сведения о настройке проверки подлинности на основе утверждений SAML с помощью AD FS для SharePoint Server 2013 см. в статье Настройка проверки подлинности на основе утверждений SAML с помощью AD FS в SharePoint Server.

Рекомендации по управлению и эксплуатации

В этом разделе представлены различные рекомендации по управлению мультитенантной средой SharePoint Server 2013.

Управление емкостью

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

Управление приложениями

Приложения приложения для SharePoint предоставляют новый метод предоставления специальных данных или функций для сайта SharePoint. Приложение приложение для SharePoint представляет собой компактное, удобное, самостоятельное приложение, ориентированное на конкретные задачи конечного пользователя или бизнес-задачи. Владельца сайта могут найти и загрузить приложения приложения для SharePoint в общедоступном Магазине Магазин SharePoint или внутреннем каталоге Каталог приложений организации и установить их на свои сайты SharePoint. Эти приложения для SharePoint интегрируют лучшие веб-приложения с SharePoint Server 2013. Они не заменяют функции и пакеты решений SharePoint, которые настраивают или увеличивают сайты SharePoint. В отличие от компонентов и решений, которые устанавливаются администраторами фермы или сайта, приложения приложения для SharePoint представляют собой самостоятельные приложения, которые владельцы сайтов могут добавить на свои сайты SharePoint. Приложения для SharePoint имеют простой жизненный цикл: они могут быть установлены, обновлены и удалены владельцами сайтов.

Служба управления приложениями в SharePoint Server 2013 поддерживает мультитенантность. Большинство настроек и функций управления доступны на сайте администрирования клиента и позволяют каждому клиенту настраивать свои параметры отдельно.

Резервное копирование и восстановление

Выполняя операции по общему резервному копированию и восстановлению данных на мультитенантной платформе размещения SharePoint Server 2013, можно следовать общим указаниям по резервному копированию и восстановлению данных в средах SharePoint Server 2013, приведенным в статье Резервное копирование и восстановление в SharePoint Server.

Обратите внимание, что в SharePoint Server 2013 платформа рабочих процессов отделена от платформы SharePoint. В связи с этим операции резервного копирования и восстановления в диспетчере рабочих процессов необходимо координировать с резервным копированием и восстановлением в SharePoint, чтобы не нарушить их синхронизацию. Дополнительные рекомендации по планированию операций резервного копирования и восстановления для Service Manager рабочих процессов см. в разделе Аварийное восстановление и восстановление области в Workflow Manager 1.0.

Выполняя операции по резервному копированию и восстановлению данных определенных клиентов на мультитенантной платформе размещения SharePoint Server 2013 может потребоваться поддерживать синхронизацию следующих компонентов: приложений служб, рабочих процессов, баз данных контента и семейств веб-сайтов.

Приложения службы

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

Рекомендации по приложениям служб

Служба управления приложениями

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

На следующей схеме показано управление приложениями на сайте администрирования клиентов.

На этом рисунке показан сайт администрирования клиентов для службы управления приложениями

Служба подключения к бизнес-данным

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

Служба Secure Store

После включения режима секционирования создание ключей шифрования по-прежнему будет выполняться в Центре администрирования или Windows PowerShell. Остальные настройки службы Secure Store переносятся на сайт администрирования клиентов. Однако шаблон сайта администрирования клиента не содержит ссылку на эту страницу, которую можно добавить с помощью метода настройки в разделе Расширение шаблона сайта администрирования клиента.

Служба управляемых метаданных

После включения режима секционирования все настройки перемещаются на сайт администрирования клиентов, а публикация типов контента включается по умолчанию.

Служба поиска

Многие функции настройки поиска для конкретных клиентов доступны на сайте администрирования клиента, как показано на следующей схеме.

На этом рисунке показаны функции администрирования поиска на сайте администрирования клиентов

Примечание.

Многие из *. Командлеты EnterpriseSearch* Microsoft PowerShell теперь поддерживают секции и могут использоваться для автоматизации некоторых функций конфигурации и управления, предоставляемых на сайте администрирования клиента.

Служба профилей пользователей

Многие элементы конфигурации переносятся на сайт администрирования клиента, но большинство настроек синхронизации профилей остаются на уровне фермы и применимы ко всем клиентам, как показано на следующем рисунке.

На этом рисунке показана конфигурация профиля пользователя

Рабочий процесс

Как отмечалось ранее, в SharePoint Server 2013 платформа рабочих процессов отделена от платформы SharePoint. Сама платформа Workflow использует одну или несколько баз данных. Хотя с этими базами данных можно выполнять общие операции по резервному копированию и восстановлению данных, для них не существует специальных команд и служебных программ.

Базы данных контента

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

Примечание.

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

Приведенный ниже сценарий Microsoft PowerShell выполняет первоначальное резервное копирование клиентской базы данных контента.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue
Backup-SPFarm -Directory "c:\backups\alpha" -Item "HostingFarm_Content_Hosting" -BackupMethod Full
Write-Host "Tenant Content Database Backup Script Completed!"
The following Windows PowerShell script shows how to perform a restore operation on a tenant site collection:
Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue
Restore-SPFarm -Directory "c:\backups\alpha" -Item "HostingFarm_Content_Hosting" -RestoreMethod Overwrite
Write-Host "Tenant Content Database Restore Script Completed!"

семейства сайтов;

Вы можете выполнять определенные операции по резервному копированию и восстановлению данных с семейством клиентских веб-сайтов. Выбор средств зависит от размера семейства. Командлеты Microsoft PowerShell подходят для семейств веб-сайтов небольшого и среднего размера.

Приведенный ниже сценарий Microsoft PowerShell выполняет резервное копирование семейства веб-сайтов клиента.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue
Backup-SPSite -Identity "http://alpha.contoso.com" -Path "c:\backups\alpha\root.bak" -UseSqlSnapshot
Write-Host "Tenant Site Collection Backup Script Completed!"
The following script shows how to perform a restore operation on a tenant site collection:
Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue
Restore-SPSite -Identity "http://alpha.contoso.com" -Path "c:\backups\alpha\root.bak" -DatabaseServer "SQLServer01" -DatabaseName "HostingFarm_Content_Hosting" -HostHeaderWebApplication "http://$ENV:COMPUTERNAME" -GradualDelete - Confirm: $false -Force
Write-Host "Tenant Site Collection Restore Script Completed!"

Мониторинг

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

Управление пакетами дополнительных компонентов

Как упоминалось ранее, пакеты дополнительных компонентов позволяют объединять различные компоненты и связывать их с подпиской на сайт (то есть клиентом). Все семейства веб-сайтов в этой подписке (клиенте) могут использовать только те компоненты, которые входят в пакет дополнительных компонентов. Эта возможность позволяет поставщикам услуг предоставлять многоуровневые услуги с различными наборами компонентов. Для создания контейнера пакета дополнительных компонентов используется командлет New-SPSiteSubscriptionFeaturePack, а для добавления компонентов в контейнер — командлет Add-SPSiteSubscriptionFeaturePackMember.

Приведенный ниже сценарий Microsoft PowerShell создает на уровне клиента пакет дополнительных компонентов, содержащий компоненты SharePoint Foundation 2013, и сохраняет идентификатор этого пакета в контейнере свойств фермы.

Примечание.

Для выполнения сценариев, работающих с пакетами дополнительных компонентов, должно быть установлено приложение службы "Параметры подписки".

<#
   Feature Packs.ps1
    Creates a new Feature Pack comprised of SharePoint Foundation 2013 Features
    Adds the Feature Pack ID with a friendly name to the Farm's Property Bag for future use.
    
#>
asnp Microsoft.SharePoint.PowerShell
# Create an alias for Add-SPSiteSubscriptionFeaturePackMember 
Set-Alias AddFeature Add-SPSiteSubscriptionFeaturePackMember
# create a new feature pack, and store it in the Farm's Property Bag
$ffp = New-SPSiteSubscriptionFeaturePack
$farm = Get-SPFarm
$farm.Properties.Add("Foundation_FeaturePack", $ffp.Id);
$farm.Update();
# add foundation features to the feature pack
# web scoped features...
AddFeature -identity $ffp -FeatureDefinition  XmlFormLibrary
AddFeature -identity $ffp -FeatureDefinition  LinksList
AddFeature -identity $ffp -FeatureDefinition  WorkflowProcessList
AddFeature -identity $ffp -FeatureDefinition  GridList
AddFeature -identity $ffp -FeatureDefinition  WorkflowHistoryList
AddFeature -identity $ffp -FeatureDefinition  TeamCollab
AddFeature -identity $ffp -FeatureDefinition  GanttTasksList
AddFeature -identity $ffp -FeatureDefinition  PictureLibrary
AddFeature -identity $ffp -FeatureDefinition  IssuesList
AddFeature -identity $ffp -FeatureDefinition  DiscussionsList
AddFeature -identity $ffp -FeatureDefinition  ContactsList
AddFeature -identity $ffp -FeatureDefinition  ExternalList
AddFeature -identity $ffp -FeatureDefinition  TasksList
AddFeature -identity $ffp -FeatureDefinition  WebPageLibrary
AddFeature -identity $ffp -FeatureDefinition  AnnouncementsList
AddFeature -identity $ffp -FeatureDefinition  WikiPageHomePage
AddFeature -identity $ffp -FeatureDefinition  CustomList
AddFeature -identity $ffp -FeatureDefinition  DocumentLibrary
AddFeature -identity $ffp -FeatureDefinition  SurveysList
AddFeature -identity $ffp -FeatureDefinition  EventsList
AddFeature -identity $ffp -FeatureDefinition  DataSourceLibrary
AddFeature -identity $ffp -FeatureDefinition  NoCodeWorkflowLibrary
AddFeature -identity $ffp -FeatureDefinition  OsrvLinks
AddFeature -identity $ffp -FeatureDefinition  FCGroupsList
AddFeature -identity $ffp -FeatureDefinition  TenantAdminBDC
AddFeature -identity $ffp -FeatureDefinition  OssNavigation
AddFeature -identity $ffp -FeatureDefinition  IMEDicList
AddFeature -identity $ffp -FeatureDefinition  CallTrackList
AddFeature -identity $ffp -FeatureDefinition  SSSvcAdmin
AddFeature -identity $ffp -FeatureDefinition  MpsWebParts
AddFeature -identity $ffp -FeatureDefinition  GBWWebParts
AddFeature -identity $ffp -FeatureDefinition  FacilityList
AddFeature -identity $ffp -FeatureDefinition  ScheduleList
AddFeature -identity $ffp -FeatureDefinition  ObaProfilePages
AddFeature -identity $ffp -FeatureDefinition  GBWProvision
AddFeature -identity $ffp -FeatureDefinition  OSSSearchSearchCenterUrlFeature
AddFeature -identity $ffp -FeatureDefinition  WikiWelcome
AddFeature -identity $ffp -FeatureDefinition  MaintenanceLogs
AddFeature -identity $ffp -FeatureDefinition  TenantAdminLinks
AddFeature -identity $ffp -FeatureDefinition  HolidaysList
AddFeature -identity $ffp -FeatureDefinition  GroupWork
AddFeature -identity $ffp -FeatureDefinition  WhereaboutsList
AddFeature -identity $ffp -FeatureDefinition  CirculationList
AddFeature -identity $ffp -FeatureDefinition  TenantAdminSecureStore
AddFeature -identity $ffp -FeatureDefinition  SearchAdminWebParts
AddFeature -identity $ffp -FeatureDefinition  ObaSimpleSolution
AddFeature -identity $ffp -FeatureDefinition  TimecardList
AddFeature -identity $ffp -FeatureDefinition  WhatsNewList
AddFeature -identity $ffp -FeatureDefinition  MobilityRedirect
AddFeature -identity $ffp -FeatureDefinition  AdminLinks
AddFeature -identity $ffp -FeatureDefinition  SearchCenterLiteFiles
AddFeature -identity $ffp -FeatureDefinition  CorporateCatalog
AddFeature -identity $ffp -FeatureDefinition  BlogContent
AddFeature -identity $ffp -FeatureDefinition  PromotedLinksList
AddFeature -identity $ffp -FeatureDefinition  AppLockdown
AddFeature -identity $ffp -FeatureDefinition  AppRequestsList
AddFeature -identity $ffp -FeatureDefinition  SearchCenterUpgrade
AddFeature -identity $ffp -FeatureDefinition  SearchConfigFields
AddFeature -identity $ffp -FeatureDefinition  PhonePNSubscriber
AddFeature -identity $ffp -FeatureDefinition  SearchConfigContentType
AddFeature -identity $ffp -FeatureDefinition  GettingStarted
AddFeature -identity $ffp -FeatureDefinition  GettingStartedWithAppCatalogSite
AddFeature -identity $ffp -FeatureDefinition  ExternalSubscription
AddFeature -identity $ffp -FeatureDefinition  SearchCenterFiles
AddFeature -identity $ffp -FeatureDefinition  BcsEvents
AddFeature -identity $ffp -FeatureDefinition  OfficeExtensionCatalog
AddFeature -identity $ffp -FeatureDefinition  MDSFeature
AddFeature -identity $ffp -FeatureDefinition  TenantSearchAdmin
AddFeature -identity $ffp -FeatureDefinition  SiteAssets
AddFeature -identity $ffp -FeatureDefinition  PremiumSearchVerticals
AddFeature -identity $ffp -FeatureDefinition  AccessRequests
AddFeature -identity $ffp -FeatureDefinition  SearchConfigList
AddFeature -identity $ffp -FeatureDefinition  ReportAndDataSearch
AddFeature -identity $ffp -FeatureDefinition  MBrowserRedirect
AddFeature -identity $ffp -FeatureDefinition  BlogHomePage
AddFeature -identity $ffp -FeatureDefinition  SearchConfigListTemplate
AddFeature -identity $ffp -FeatureDefinition  SiteNotebook
AddFeature -identity $ffp -FeatureDefinition  HierarchyTasksList
AddFeature -identity $ffp -FeatureDefinition  BlogSiteTemplate
AddFeature -identity $ffp -FeatureDefinition  SearchCenterLiteUpgrade
# Site Scoped features...                                                                                                                                                                                               
AddFeature -identity $ffp -FeatureDefinition  BasicWebParts
AddFeature -identity $ffp -FeatureDefinition  OSSSearchEndUserHelpFeature
AddFeature -identity $ffp -FeatureDefinition  HelpLibrary
AddFeature -identity $ffp -FeatureDefinition  OfficeWebApps
AddFeature -identity $ffp -FeatureDefinition  WordServerViewing
AddFeature -identity $ffp -FeatureDefinition  OnenoteServerViewing
AddFeature -identity $ffp -FeatureDefinition  SiteHelp
AddFeature -identity $ffp -FeatureDefinition  ctypes
AddFeature -identity $ffp -FeatureDefinition  OSSSearchSearchCenterUrlSiteFeature
AddFeature -identity $ffp -FeatureDefinition  OpenInClient
AddFeature -identity $ffp -FeatureDefinition  ExcelServerEdit
AddFeature -identity $ffp -FeatureDefinition  AdminReportCore
AddFeature -identity $ffp -FeatureDefinition  fields
AddFeature -identity $ffp -FeatureDefinition  SearchServerWizardFeature
AddFeature -identity $ffp -FeatureDefinition  OSearchHealthReports
AddFeature -identity $ffp -FeatureDefinition  SearchWebParts
AddFeature -identity $ffp -FeatureDefinition  IssueTrackingWorkflow
AddFeature -identity $ffp -FeatureDefinition  ShareWithEveryone
AddFeature -identity $ffp -FeatureDefinition  MonitoredApps
AddFeature -identity $ffp -FeatureDefinition  SearchTaxonomyRefinementWebParts
AddFeature -identity $ffp -FeatureDefinition  SearchTaxonomyRefinementWebPartsHtml
AddFeature -identity $ffp -FeatureDefinition  SearchMaster
AddFeature -identity $ffp -FeatureDefinition  EnableAppSideLoading
AddFeature -identity $ffp -FeatureDefinition  Developer
AddFeature -identity $ffp -FeatureDefinition  AutohostedAppLicensing
AddFeature -identity $ffp -FeatureDefinition  AppRegistration
Write-Host "Feature Pack Created! " + $ffp.ID

Управление лицензиями

В SharePoint Server 2013 добавлена новая возможность управления лицензированием. Теперь администраторы фермы могут назначать лицензии пользователям и включать проверки лицензий во время выполнения. Эти функции позволяют обеспечить, что только те пользователи, у которых есть подходящие лицензии, могут использовать определенный компонент. Эта функция также упрощает модель развертывания, так как вам больше не нужно создавать отдельные фермы для стандартных и корпоративных выпусков SharePoint Server.

Пользовательские лицензии назначаются путем сопоставления утверждений с известным типом лицензии. Например, утверждением может быть группа безопасности доменных служб Active Directory. Сопоставляя группу безопасности ContosoFinanceDept с лицензией Enterprise, вы фактически назначаете лицензию Enterprise всем членам этой группы. Пользователям, выполнившим вход в SharePoint Server, назначаются утверждения. SharePoint Server проверяет утверждения пользователей, чтобы определить их лицензию. Если у пользователя нет лицензии на использование определенной функции, SharePoint заблокирует доступ к этой функции во время выполнения.

Эта реализация лицензии SharePoint Server 2013 управляется с помощью новых командлетов Microsoft PowerShell. По умолчанию лицензирование в SharePoint Server отключено. Однако администраторы могут включить его с помощью Microsoft PowerShell. Дополнительные сведения о настройке лицензирования в SharePoint Server 2013 см . в статье Настройка лицензирования в SharePoint Server.

Управление жизненным циклом

Хотя в этом документе представлены ключевые рекомендации по планированию инфраструктуры мультитенантного решения SharePoint 2013 и базовые сценарии для общей настройки, управление жизненным циклом операций крайне важно. Например, пользовательское администрирование клиента, отмена подготовки подписок, архивация, управление пользователями, самостоятельный сброс пароля и квоты — это общие области, которые требуют некоторого сочетания более Windows PowerShell и усилий по настройке для предоставления полного предложения услуг. Каждый поставщик услуг будет иметь разные требования в этой области, и невероятно важно убедиться, что эти требования являются частью начальной области и проектирования для платформы инфраструктуры.

Настройка и конфигурация

В этом разделе описаны общие действия по установке и настройке мультитенантной платформы размещения SharePoint Server 2013.

Благодарности

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

Скрипты Microsoft PowerShell, содержащиеся в следующих подразделах, основаны (полностью или частично) на работе Спенсера Харбара (http://www.harbar.net) и воспроизводятся здесь с его любезным согласием. Дополнительные сведения об оригинальной работе Спенсера Харбара см. в следующих документах:

Представленные сценарии PowerShell содержат переменные, которые следует изменять в соответствии со средой.

Пример развертывания

В этом разделе представлен пример развертывания, в котором используется одно размещающее веб-приложение, использующее семейства веб-сайтов с именем узла и управляемые пути заголовка узла. Он развертывается на одном сервере для простоты. Этот пример развертывания является предполагаемой моделью проектирования для мультитенантности с SharePoint 2013 и может быть расширен до развертывания, где роли экземпляра службы сформулируются на нескольких компьютерах. В этом примере развертывания для веб-приложения используется протокол HTTP. В фактическом развертывание следует использовать протокол SSL, чтобы защитить маркеры входа, контента и авторизации, используемые приложениями SharePoint и другими службами OAuth2, например диспетчером рабочих процессов.

Конфигурация DNS

Так как семейства веб-сайтов с именем узла будут использоваться для мультитенантной среды SharePoint, необходимо настроить DNS (т. е. создать соответствующие записи DNS и т. д.) соответствующим образом в соответствии с планом. Дополнительные рекомендации по планированию семейств веб-сайтов с именем узла для SharePoint Server 2013 см. в статье Архитектура и развертывание семейства веб-сайтов с именем узла (SharePoint 2013).

Если вы также планируете поддерживать приложения для SharePoint, необходимо также настроить DNS для поддержки вашей среды. Дополнительные сведения о настройке среды приложений для SharePoint Server 2013 см. в разделе Настройка среды для приложений для SharePoint Server.

Конфигурация Active Directory

Как упоминалось ранее, для поддержки мультитенантности в SharePoint необходима правильная структура Active Directory, включающая подразделения для поддержки синхронизации профилей пользователей для каждой подписки. Кроме того, необходимо создать соответствующие служебные учетные записи для вашей среды. Дополнительные сведения о планировании учетных записей служб для SharePoint Server 2013 см. в статье Планирование учетных записей администраторов и учетных записей служб в SharePoint Server. В этом примере развертывания используются следующие три служебных учетных записи:

  • SPFarm — учетная запись фермы SharePoint;

  • SPServices — удостоверение пула приложений, в котором размещаются конечные точки приложения-службы.

  • SPContent — удостоверение пула приложений, в котором размещается веб-приложение содержимого.

Создание и настройка фермы SharePoint

Приведенный ниже сценарий Microsoft PowerShell создает ферму SharePoint.

<#
    1. Farm Creation.ps1
    Creates a new SharePoint Farm
    Creates Central Administration on Port 8080
    Update initial variables as needed to reflect your environment
    Script will prompt for the password of the farm account
#>
asnp Microsoft.SharePoint.PowerShell
$databaseServer = "SQLSP1"
$configDatabase = "HostingFarm_Config"
$adminContentDB = "HostingFarm_Content_Admin"
$passphrase = "Password1"
$farmAccountName = "FABRIKAM\spfarm"
  
$farmAccount = Get-Credential $farmAccountName
$passphrase = (ConvertTo-SecureString $passphrase -AsPlainText -force)
Write-Host "Creating Configuration Database and Central Admin Content Database..."
New-SPConfigurationDatabase -DatabaseServer $databaseServer -DatabaseName $configDatabase `
    -AdministrationContentDatabaseName $adminContentDB `
    -Passphrase $passphrase -FarmCredentials $farmAccount
    
$spfarm = Get-SPFarm -ErrorAction SilentlyContinue -ErrorVariable err        
if ($spfarm -eq $null -or $err) {
   throw "Unable to verify farm creation."
}
Write-Host "ACLing SharePoint Resources..."
Initialize-SPResourceSecurity
Write-Host "Installing Services ..."
Install-SPService   
Write-Host "Installing Features..."
Install-SPFeature -AllExistingFeatures
Write-Host "Creating Central Administration..."              
New-SPCentralAdministration -Port 8080 -WindowsAuthProvider NTLM
Write-Host "Installing Help..."
Install-SPHelpCollection -All        
Write-Host "Installing Application Content..."
Install-SPApplicationContent
Write-Host "Farm Creation Done!" 

Группа прокси, основное веб-приложение и управляемые пути

Изначально для пула приложений, в котором размещается веб-приложение содержимого, создается управляемая учетная запись. Создается новая группа прокси, а затем — веб-приложение. Напоследок выполняется настройка веб-приложения, чтобы разрешить самостоятельное создание сайтов и создание общих управляемых путей. Важно создать "корневое" семейство веб-сайтов в размещаемом веб-приложении, даже если к этому семейству веб-сайтов не будут обращаться конечные пользователи. Это "корневое" семейство веб-сайтов требуется для обеспечения поддержки и правильного рабочего поведения SharePoint 2013.

Примечание.

В этом примере для веб-приложения используется протокол HTTP.

<#
    2. Proxy Group, Web Application &amp; Farm Settings.ps1
    Creates a new Managed Account
    Creates a new Proxy Group
    Creates a new Web Application for HNSC, in a new Application Pool, in the new Proxy Group
    Creates an empty root Site Collection
    Enables Self Service Site Creation
    Creates Managed Paths for HNSC
    
    Update initial variables as needed to reflect your environment
    Update the Managed Paths section to use the paths you need
    Script will prompt for the password of the App Pool account used for the Web App
    You will need to configure the SSL certificate manually or via IIS PowerShell
#>
asnp Microsoft.SharePoint.PowerShell
## UPDATE THESE VARS ##
$waAppPoolUserName = "FABRIKAM\spcontent"
$waAppPoolName = "SharePoint Hosting"
$proxyGroupName = "Hosting Proxy Group"
$waUrl = "http://$ENV:COMPUTERNAME"
$webAppName = "SharePoint Hosting"
$contentDBName = "HostingFarm_Content_Hosting"
$ownerEmail = "administrator@contoso.com"
$ownerAlias = "FABRIKAM\administrator"
## END VARS ##
# Create Managed Account
Write-Host "Please supply the password for the $waAppPoolUserName Account..."
$appPoolCred = Get-Credential $waAppPoolUserName
Write-Host "Creating Managed Account..."
$waAppPoolAccount = New-SPManagedAccount -Credential $appPoolCred
# Create a new Proxy Group
Write-Host "Creating Proxy Group..."
$proxyGroup = New-SPServiceApplicationProxyGroup -Name $proxyGroupName
# Create a new Web App in the new Proxy Group using Windows Claims on Port 80 with no host header
Write-Host "Creating Web Application..."
# SSL example, not used
#$webApp = New-SPWebApplication -ApplicationPool $waAppPoolName -ApplicationPoolAccount $waAppPoolAccount -Name $webAppName -Port 443 -SecureSocketsLayer:$true -AuthenticationProvider (New-SPAuthenticationProvider) -DatabaseName $contentDBName -ServiceApplicationProxyGroup $proxyGroup
# following line is to use port 80
$webApp = New-SPWebApplication -ApplicationPool $waAppPoolName -ApplicationPoolAccount $waAppPoolAccount -Name $webAppName -Port 80 -AuthenticationProvider (New-SPAuthenticationProvider) -DatabaseName $contentDBName -ServiceApplicationProxyGroup $proxyGroup 
# Create a empty root Site Collection, required for support and SSSC
Write-Host "Creating empty root Site Collection..."
New-SPSite -Url $waUrl -owneralias $ownerAlias -ownerEmail $ownerEmail
# Enable Self Service Site Creation 
Write-Host "Enabling Self Service Site Creation..."
$webApp.SelfServiceSiteCreationEnabled = $true
$webApp.RequireContactForSelfServiceSiteCreation = $false
$webApp.Update()
# Create Managed Paths for all 2013 Tenancy capabilities (remove the ones you don't want)
# the default /sites path is removed to prevent creation of sites from CA
Write-Host "Creating HNSC Managed Paths..."
Remove-SPManagedPath "sites" -WebApplication $webApp -Confirm:$false
New-SPManagedPath "admin" -HostHeader -Explicit # Tenant Administration
New-SPManagedPath "apps" -HostHeader -Explicit  # App Catalog
New-SPManagedPath "cthub" -HostHeader -Explicit # Content Type Hub
New-SPManagedPath "my" -HostHeader -Explicit    # MySite Host
New-SPManagedPath "my/sites" -HostHeader        # MySites
New-SPManagedPath "edisc" -HostHeader -Explicit # E-Discovery Hub
Write-Host "Proxy Group and Web Application done!"

Несекционированные службы

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

Приведенный ниже сценарий Microsoft PowerShell создает несекционированные приложения служб.

<#
    3. Non Partitioned Services.ps1
    Creates a new Managed Account
    Creates a new Service Application Pool
    
    Starts the Service Instances for and creates non partitioned Service Applications and Proxies:
        State Service
        Usage and Health Data Collection Service
        Subscription Settings Service
        App Management Service
        Work Management Service
    ...in the new Proxy Group 
    Adds any configured Workflow Service Proxy to the new Proxy Group
    Update initial variables as needed to reflect your environment
    Script will prompt for the password of the Service Application Pool account
    
#>
asnp Microsoft.SharePoint.PowerShell
## UPDATE THESE VARS ##
$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$saAppPoolUserName = "FABRIKAM\spservices"
# Service Application and DB names
$stateName = "State Service"
$stateDBName = "HostingFarm_StateService"
$usageName = "Usage and Health Data Collection Service"
$usageDBName = "HostingFarm_Usage"
$subsName = "Subscription Settings Service"
$subsDBName = "HostingFarm_SubscriptionSettings"
$appsName = "App Management Service"
$appsDBName = "HostingFarm_AppManagement"
$wmsName = "Work Management Service"
$pasName = "PowerPoint Automation Service"
## END VARS ##
# Create Managed Account and App Pool for Service App Endpoints
Write-Host "Please supply the password for the $saAppPoolUserName Account..."
$appPoolCred = Get-Credential $saAppPoolUserName
Write-Host "Creating Managed Account..."
$saAppPoolAccount = New-SPManagedAccount -Credential $appPoolCred
Write-Host "Creating Service Application Pool..."
$saAppPool = New-SPServiceApplicationPool -Name $saAppPoolName -Account $saAppPoolAccount
# Grab the Proxy Group
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName
# Create State Service Application and Proxy, add to Proxy Group
Write-Host "Creating $stateName Application and Proxy..."
$stateDB = New-SPStateServiceDatabase -Name $stateDBName
$state = New-SPStateServiceApplication -Name $stateName -Database $stateDB
$proxy = New-SPStateServiceApplicationProxy -Name "$stateName Proxy" -ServiceApplication $state
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy
# Create Usage Service Application and Proxy, add to Proxy Group, and provision it's Proxy
Write-Host "Creating $usageName Application and Proxy..."
$serviceInstance = Get-SPUsageService
New-SPUsageApplication -Name $usageName -DatabaseName $usageDBName -UsageService $serviceInstance
$proxy = Get-SPServiceApplicationProxy | ? { $_.TypeName -eq "Usage and Health Data Collection Proxy" }
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy
$proxy.Provision();
# Start the Subscription Settings Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $subsName Application and Proxy..."
Get-SPServiceInstance | where { $_.TypeName -eq "Microsoft SharePoint Foundation Subscription Settings Service" } | Start-SPServiceInstance
$subs = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $saAppPool -Name $subsName -DatabaseName $subsDBName
$proxy = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $subs 
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy
# Start the App Management Service Instance, create the  Service Application and Proxy, add to Proxy Group
Write-Host "Creating $appsName Application and Proxy..."
Get-SPServiceInstance | where { $_.TypeName -eq "App Management Service"} | Start-SPServiceInstance
$apps = New-SPAppManagementServiceApplication -ApplicationPool $saAppPool -Name $appsName -DatabaseName $appsDBName
$proxy = New-SPAppManagementServiceApplicationProxy -ServiceApplication $apps -Name "$appsName Proxy"
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy
# Start the Work Management Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $wmsName Application and Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Work Management Service" } | Start-SPServiceInstance
$wms = New-SPWorkManagementServiceApplication -ApplicationPool $saAppPool -Name $wmsName
$proxy = New-SPWorkManagementServiceApplicationProxy -ServiceApplication $wms -Name "$wmsName Proxy"
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy
# Start the PowerPoint Automation Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $pasName Application and Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "PowerPoint Conversion Service" } | Start-SPServiceInstance
$pas = New-SPPowerPointConversionServiceApplication -ApplicationPool $saAppPool -Name $pasName
$proxy = New-SPPowerPointConversionServiceApplicationProxy -ServiceApplication $pas -Name "$pasName Proxy"
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy
# Adds any Workflow Service proxy to the Proxy Group (if it exists)
$wfProxy = Get-SPServiceApplicationProxy | ? {$_.TypeName -like "*Workflow Service*" }
if ($wfProxy -ne $null) {
    Write-Host "Adding Workflow Service Proxy to Proxy Group..."
    # should probably remove from the default group as well
    Add-SPServiceApplicationProxyGroupMember -Identity $proxyGroup -Member $wfProxy
}
Write-Host "Non Partitioned Service Applications done!"

Создание и настройка секционированных приложений служб

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

Служба подключения к бизнес-данным

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

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$bcsName = "Business Data Connectivity Service"
$bcsDBName = "HostingFarm_BusinessDataConnectivity"
# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName
# Start Business Data Connectivity Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $bcsName Application and Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Business Data Connectivity Service" } | Start-SPServiceInstance
$bcs = New-SPBusinessDataCatalogServiceApplication -PartitionMode -Name $bcsName -ApplicationPool $saAppPool -DatabaseName $bcsDBName 
$proxy = Get-SPServiceApplicationProxy | ? { $_.Name -eq "$bcsName" }
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

Служба управляемых метаданных

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

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$mmsName = "Managed Metadata Service"
$mmsDBName = "HostingFarm_ManagedMetadata"
# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName
# Start the Managed Metadata Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $mmsName Application and Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Managed Metadata Web Service" } | Start-SPServiceInstance
$mms = New-SPMetadataServiceApplication -PartitionMode -Name $mmsName -ApplicationPool $saAppPool -DatabaseName $mmsDBName
$proxy = New-SPMetadataServiceApplicationProxy -PartitionMode -Name "$mmsName Proxy" -ServiceApplication $mms
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

Служба машинного перевода

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

Приведенный ниже сценарий Microsoft PowerShell создает приложение службы машинного перевода в режиме секционирования.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$mtsName = "Machine Translation Service"
$mtsDBName = "HostingFarm_MachineTranslation"
# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName
# Start Machine Translation Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $mtsName Application &amp; proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Machine Translation Service" } | Start-SPServiceInstance
$mts = New-SPTranslationServiceApplication -PartitionMode -Name $mtsName -ApplicationPool $saAppPool -DatabaseName $mtsDBName
Get-SPServiceApplicationProxy | ? {$_.Name -eq $mtsName} | Remove-SPServiceApplicationProxy -Confirm:$false
$proxy = New-SPTranslationServiceApplicationProxy -PartitionMode -Name "$mtsName Proxy" -ServiceApplication $mts
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

Служба Secure Store

После включения режима секционирования создание ключей шифрования по-прежнему будет выполняться в Центре администрирования или Windows PowerShell. Остальные настройки службы Secure Store переносятся на сайт администрирования клиентов. Однако шаблон сайта администрирования клиента не содержит ссылку на эту страницу, которую можно добавить с помощью метода настройки в разделе Расширение шаблона сайта администрирования клиента.

Приведенный ниже сценарий Microsoft PowerShell создает приложение Служба Secure Store в режиме секционирования и добавляет его в пользовательскую группу прокси служб.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$sssName = "Secure Store Service"
$sssDBName = "HostingFarm_SecureStore"
$sssAuditing = $false
$sssSharing = $false
$sssAuditLogMaxSize = ""
# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName
# Start Secure Store Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $sssName Application &amp; Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Secure Store Service" } | Start-SPServiceInstance
$sss = New-SPSecureStoreServiceApplication -PartitionMode -Name $sssName -ApplicationPool $saAppPool -DatabaseName $sssDBName -auditingEnabled:$sssAuditing -AuditlogMaxSize $sssAuditLogMaxSize -Sharing:$sssSharing
$proxy = New-SPSecureStoreServiceApplicationProxy -Name "$sssName Proxy" -ServiceApplication $sss
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy 

Служба поиска

Приведенный ниже сценарий Microsoft PowerShell создает приложение службы поиска в режиме секционирования.

Примечание.

В сценарии для этого приложения службы используется параметр Partitioned вместо параметра PartitionMode.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$searchServerName = "$ENV:COMPUTERNAME" 
$searchName = "Search Service"
$searchDBName = "HostingFarm_Search"
# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName
# Start Search Service Instances, create the Service Application and Proxy, add to Proxy Group, configure Topology
Write-Host "Starting Search Service Instances..."
Start-SPEnterpriseSearchServiceInstance $searchServerName
Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance $searchServerName
Write-Host "Creating Search Service Application and Proxy..."
$search = New-SPEnterpriseSearchServiceApplication -Partitioned -Name $searchName -ApplicationPool $saAppPool -DatabaseName $searchDBName
$proxy = New-SPEnterpriseSearchServiceApplicationProxy -Partitioned -Name "$searchName Proxy" -SearchApplication $search
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy
# Clone the default Topology (which is empty) and create a new one and then activate it
Write-Host "Configuring Search Component Topology..."
$clone = $search.ActiveTopology.Clone()
$searchServiceInstance = Get-SPEnterpriseSearchServiceInstance
New-SPEnterpriseSearchAdminComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance 
New-SPEnterpriseSearchCrawlComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance 
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance
$clone.Activate()
Write-Host "Search complete!"

Word Automation Services

Приложение-служба Word Automation Services поддерживает режим секционирования. Командлета для создания прокси-сервера нет.

Приведенный ниже сценарий Microsoft PowerShell создает приложение службы Word Automation Services в режиме секционирования.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$wasName = "Word Automation Service"
$wasDBName = "HostingFarm_WordAutomation"
# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName
# Start Word Automation Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $wasName Application &amp; Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Word Automation Services" } | Start-SPServiceInstance
$was = New-SPWordConversionServiceApplication -PartitionMode -Name $wasName -ApplicationPool $saAppPool -DatabaseName $wasDBName 
# we cannot change the name of this proxy as there is no New-SPWordConversionServiceApplicationProxy
$proxy = Get-SPServiceApplicationProxy | ? { $_.Name -eq $wasName }
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy 

Служба профилей пользователей

Создание службы профилей пользователей с помощью PowerShell при необходимости при подготовке в секционированном режиме представляет собой проблему, если Windows PowerShell не выполняется в качестве учетной записи фермы SharePoint. Чтобы обойти эту проблему и успешно запустить службу синхронизации профилей пользователей, мы используем командлет Start-Process и имитируем выполнение скрипта в качестве учетной записи фермы.

Необходимо два сценария: первый создает UPA, а второй вызывает первый сценарий.

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

Примечание.

Этот сценарий НЕ СЛЕДУЕТ выполнять непосредственно, так как в противном случае будет невозможно запустить экземпляр службы синхронизации профилей пользователей. Следует сохранить этот сценарий локально и записать его расположение.

<#
    partitionedUPAcreation.ps1
    External dependency to create UPA under farm account creds
    
#>
asnp Microsoft.SharePoint.PowerShell
$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$upaName = "User Profile Service"
$upaProfileDBName = "HostingFarm_UserProfile_Profile"
$upaSocialDBName = "HostingFarm_UserProfile_Social"
$upaSyncDBName = "HostingFarm_UserProfile_Sync"
# Grab the Proxy Group
$proxyGroup = Get-SPServiceApplicationProxyGroup -Identity $mtProxyName
# Grab the Appplication Pool for Service Application Endpoint
$saAppPool = Get-SPServiceApplicationPool $saAppPoolName
<# Creates UPA Service Application &amp; Proxy, and User Profile Service Instance
     If omitted, -ProfileSyncDBServer, -SocialDBServer &amp; -ProfileDBServer are the SharePoint Default DB Server
     If omitted, -SyncInstanceMachine is the local machine 
#>
Write-Host "Creating $upaName Application &amp; Proxy..."
$upa = New-SPProfileServiceApplication -PartitionMode -Name $upaName -ApplicationPool $saAppPoolName -ProfileDBName $upaProfileDBName -SocialDBName $upaSocialDBName -ProfileSyncDBName $upaSyncDBName
$proxy = New-SPProfileServiceApplicationProxy -PartitionMode -Name "$upaName Proxy" -ServiceApplication $upa
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy
# Check it worked
Get-SPServiceApplication | ? {$_.Name -eq $upaName} 

Второй сценарий, представленный ниже, выполняет действия, необходимые для вызова сценария создания UPA и запуска необходимых экземпляров служб. Расположение сценария создания UPA следует обновлять в переменной $upaScriptFile. Кроме того, для UPA задаются некоторые необходимые разрешения.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$upaScriptfile = "c:\partitionedUPAcreation.ps1"
$upaName = "User Profile Service"
$user = "FABRIKAM\Administrator"
$serviceUser = "FABRIKAM\spservices"
# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName
# Start User Profile Service Instance
Write-Host "Starting User Profile Service Instance..."
Get-SPServiceInstance | ? { $_.TypeName -eq "User Profile Service" } | Start-SPServiceInstance
Write-Host "Restarting SPTimerV4..."
Restart-Service SPTimerV4
# Grab the Farm Account credentials
Write-Host "Please enter the Farm Account Password:"
$farmAcct = (Get-SPFarm).DefaultServiceAccount
$cred = Get-Credential $farmAcct.Name
# Create a new process to initiate User Profile Service Application creation under UAC elevation
Write-Host "Creating new process for UPA creation..."
Start-Process $PSHOME\powershell.exe -Credential $cred -ArgumentList "-Command Start-Process $PSHOME\powershell.exe -ArgumentList `"'$upaScriptfile'`" -Verb Runas" -Wait
Get-Date
Write-Host "UPA Created!"
# Start the User Profile Synchronization Service Instance
Write-Host "Starting the UPS Service Instance..."
Get-Date
$upa = Get-SPServiceApplication | where-object {$_.Name -eq $upaName}
$upsInstanceName = "User Profile Synchronization Service"
[String]$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($cred.Password)); 
Get-SPServiceInstance | where-object {$_.TypeName -eq $upsInstanceName} | % {
    $_.Status = [Microsoft.SharePoint.Administration.SPObjectStatus]::Provisioning
    $_.IsProvisioned = $false
    $_.UserProfileApplicationGuid = $upa.Id
    $_.Update()
    $upa.SetSynchronizationMachine($_.Server.Address, $_.Id, $cred.UserName, $password) # this can cause update conflicts
    Start-SPServiceInstance $_
}
Write-Host "Waiting on $upsInstanceName to provision..."
Write-Host "Baseline time is 130 seconds"
[int]$time = 0
$ups = Get-SPServiceInstance | where-object {$_.TypeName -eq $upsInstanceName}
while(-not ($ups.Status -eq "Online")){
   sleep 10;
    Write-Host "Still waiting... ($time seconds elapsed)"
    $ups = Get-SPServiceInstance | where-object {$_.TypeName -eq $upsInstanceName}
    $time = $time + 10
  }
Write-Host "$upsInstanceName provisioned, it took $time seconds."
Get-Date
Write-Host "UPS Service Instance Started"
# UPA Settings and Permissions, do this after UPS SI Started and Get it again to prevent update conflicts
Write-Host "Configuring NETBios Domain Names and UPA Permissions..."
$upa = Get-SPServiceApplication | where-object {$_.Name -eq $upaName}
$upa.NetBIOSDomainNamesEnabled=1
$upa.Update()   
function Grant-ServiceAppPermission($app, $user, $perm, $admin) {
    $sec = $app | Get-SPServiceApplicationSecurity -Admin:$admin
    $claim = New-SPClaimsPrincipal -Identity $user -IdentityType WindowsSamAccountName
    $sec | Grant-SPObjectSecurity -Principal $claim -Rights $perm
    $app | Set-SPServiceApplicationSecurity -ObjectSecurity $sec -Admin:$admin
}
Grant-ServiceAppPermission $upa $user "Full Control" $false
Grant-ServiceAppPermission $upa $serviceUser "Full Control" $false

Настройка управления правами на доступ к данным

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

Включение управления правами на доступ к данным через Центр администрирования

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

  2. На сайте Центр администрирования откройте раздел Безопасность.

  3. На странице Безопасность перейдите к разделу Настройка управления правами на доступ к данным

  4. На странице Управление правами на доступ к данным нажмите Использовать этот сервер RMS.

  5. Установите флажок Установите этот флажок в конфигурациях с несколькими клиентами, чтобы разрешить им настраивать параметры IRM на уровне клиента.

Включение управления правами на доступ к данным через Microsoft PowerShell

  1. Убедитесь, что вы являетесь участником следующих групп:
  • Предопределенная роль сервера securityadmin для экземпляра SQL Server.

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

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

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

    Примечание.

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

  1. Откройте командную консоль SharePoint.

  2. В командной строке PowerShell введите следующую команду:

Set-SPIRMSettings -IrmEnabled -UseActiveDirectoryDiscovery -SubscriptionScopeSettingsEnabled

На сайте администрирования клиентов есть встроенные параметры IRM. Чтобы применить конфигурацию, используйте командлет Set-SPSiteSubscriptionIRMConfig, как показано в следующем сценарии:

$subscription=Get-SPSiteSubscription "http://www.contoso.com"
Set-SPSiteSubscriptionIRMConfig -identity $subscription -IrmEnabled -CertificateServerUrl "http://rms.contoso.com" 

Такая настройка выполняется в рамках подготовки клиента.

Подготовка клиентов и управление ими

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

Подготовка клиентов

Чтобы создать клиент, следуйте указаниям из приведенной ниже таблицы.

Задачи
Действия
1. Создайте подписку на сайт.
В командной строке Microsoft PowerShell введите следующую команду:
$sub = New-SPSiteSubscription
2. Назначьте подписке пакет дополнительных компонентов и настройте пользовательское подразделение с помощью средства "Выбор людей".
В командной строке Microsoft PowerShell введите следующую команду:
Set-SPSiteSubscriptionConfig -id $sub -FeaturePack $customerFeatures -UserAccountDirectoryPath "OU=$customerName,OU=Customers,DC=contoso,DC=com"
3. Создайте одно или несколько семейств веб-сайтов, которые будут назначены подписке на сайт.
В командной строке Microsoft PowerShell введите следующую команду:
Write-Host "Creating Member Site..." New-SPSite -url "http://$customerName.contoso.com" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template sts#0 -ContentDatabase $contentDBName``````# create Tenant Admin site Write-Host "Creating Tenant Admin site..." New-SPSite -url "http://$customerName.contoso.com/admin" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template tenantadmin#0 -AdministrationSiteType TenantAdministration -ContentDatabase $contentDBName``````Write-Host "Creating My Site Host..." New-SPSite -url "http://$customerName.contoso.com/mysites" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template SPSMSITEHOST#0 -ContentDatabase $contentDBName

В следующем сценарии PowerShell показано, как создать сайт администрирования клиента, использующий шаблон TENANTADMIN#0 . Если клиент настроен на использование пакета дополнительных компонентов Enterprise, скрипт Microsoft PowerShell выполняет дополнительные операции, то есть создает коллекцию личных сайтов.

Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0  
 
# farm details (update to reflect your environment) 
$hostingMainURL = "http://$ENV:COMPUTERNAME"
$upaProxyName = "Tenant User Profile Service Proxy" 
$mmsProxyName = "Tenant Managed Metadata Service" 
$contentDBName = "HostingFarm_Content_Hosting" 
$farm = Get-SPFarm
$foundationFeaturePack = $farm.Properties.Foundation_FeaturePack
#$standardFeaturePack = $farm.Properties.Standard_FeaturePack
#$enterpriseFeaturePack = $farm.Properties.Enterprise_FeaturePack
# tenant-specific information (vary by tenant)
$customerName = "Customer A" 
$customerTenantAdmin = "CONTOSO\customerA-Admin"
$customerTenantAdminEmail = "admin@customerA.com"
$customerFeatures = $enterpriseFeatures
# Note: 
# this script assumes that the Content Web App and necessary Managed Paths exist. 
# grab the web app 
$webApp = Get-SPWebApplication $hostingMainURL 
 
# create new Site Subscription 
Write-Host "Creating Site Subscription..." 
$sub = New-SPSiteSubscription 
 
# assign feature pack and set the OU to be used by the People 
Write-Host "Assigning Feature Pack and configuring People Picker..." 
Set-SPSiteSubscriptionConfig -id $sub -FeaturePack $customerFeatures -UserAccountDirectoryPath "OU=$customerName,OU=Customers,DC=contoso,DC=com" 
 
# create the "main" member site (we need a site at the root to use Host Headers and Managed Paths in the following cmdlets) 
Write-Host "Creating Member Site..." 
New-SPSite -url "http://$customerName.contoso.com" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template sts#0 -ContentDatabase $contentDBName
 
# create Tenant Admin site  
Write-Host "Creating Tenant Admin site..." 
New-SPSite -url "http://$customerName.contoso.com/admin" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template tenantadmin#0 -AdministrationSiteType TenantAdministration -ContentDatabase $contentDBName
 
# everything else needs standard 
if (!($customerFeatures -eq $foundationFeatures)) 
{ 
    Write-Host "Tenant has SharePoint Server features" 
    # create a mysite host 
    Write-Host "Creating My Site Host..." 
    New-SPSite -url "http://$customerName.contoso.com/mysites" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template SPSMSITEHOST#0 -ContentDatabase $contentDBName
    # configure the MySites host, MySites path, Naming Resolution and Profile Sync OU for the Subscription 
    Write-Host "Configuring Tenant Profile Config..." 
    $upaProxy = Get-SPServiceApplicationProxy | where-object {$_.DisplayName -eq $upaProxyName} 
    Add-SPSiteSubscriptionProfileConfig -id $sub -SynchronizationOU $customerName -MySiteHostLocation "http://$customerName.contoso.com/mysites" -MySiteManagedPath "/mysites/personal" -SiteNamingConflictResolution "None" -ProfileServiceApplicationProxy $upaProxy 
 
    # create a site for the Content Type Gallery 
    Write-Host "Creating Content Type Gallery..." 
    New-SPSite -url "http://$customerName.contoso.com/cthub" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template sts#0 -ContentDatabase $contentDBName
 
    # configure the Content Type Gallery for the Subscription 
    Write-Host "Configuring Tenant Content Type Gallery..." 
    $mmsProxy = Get-SPServiceApplicationProxy | where-object {$_.DisplayName -eq $mmsProxyName} 
    # ContentTypeHub feature activation may fail - if so activate manually 
    Set-SPSiteSubscriptionMetadataConfig -identity $sub -serviceProxy $mmsProxy -huburi "http://$customerName.contoso.com/cthub" -SyndicationErrorReportEnabled 
    Write-Host "Activating Content Type Hub..." 
    Enable-SPFeature -Identity ContentTypeHub -url "http://$customerName.contoso.com/cthub" 
} 
     
Write-Host "Tenant Provisioning Script Completed!"  

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

Служба рабочих процессов

Основное преимущество для использования рабочих процессов, появившееся в SharePoint Server 2013, — корпоративные функции, такие как полностью декларативная разработка, обмен сообщениями в шине обслуживания и REST, эластичная масштабируемость и надежность управляемой службы. SharePoint 2013 может использовать новую службу рабочих процессов, построенную на компонентах Windows Workflow Foundation платформы .NET Framework 4.5. Новая служба называется Workflow Manager и призвана играть центральную роль на предприятии.

Платформа рабочих процессов SharePoint 2013 становится доступной для пользователя и его средств только после загрузки и установки новой службы диспетчера рабочих процессов и ее настройки для обмена данными с фермой SharePoint Server 2013. Дополнительные сведения об установке и настройке службы Workflow Manager для SharePoint 2013 см. в статье Установка и настройка рабочего процесса для SharePoint Server.

Чтобы настроить службу рабочих процессов, используйте командлет Register-SPWorkflowService для регистрации фермы в диспетчере рабочих процессов в режиме секционирования. При регистрации фермы используйте параметр SPSite для передачи URL-адреса любого существующего семейства веб-сайтов клиента из фермы, а параметр ScopeName — для определения именованного область рабочего процесса для фермы.

Приведенный ниже сценарий Windows PowerShell регистрирует ферму SharePoint в диспетчере службы рабочих процессов в режиме секционирования.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue 
# Register the Farm with the Workflow Service and create a workflow scope
# Note: any tenant site will suffice
Register-SPWorkflowService -SPSite "http://tenant.contoso.com" -WorkflowHostUri "http://WFSvr01:12291" -PartitionMode -AllowOAuthHttp -Force -ScopeName "HostingFarm"
 
Write-Host "Farm Workflow Registration Script Completed!"

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

Приведенный ниже сценарий PowerShell разрешает клиенту доступ к рабочим процессам SharePoint.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue 
#Get the Workflow Service Application Proxy
$wfProxy  = Get-SPWorkflowServiceApplicationProxy
#Create a credential object
$user = New-Object System.Net.NetworkCredential ("domain\Admin", "Password")
#Get the SPSite object of the root site collection of the tenant
$site = Get-SPSite http://tenant.domain.com
#Set the Workflow address for the tenant site (reference our workflow scope)
$wfProxy.SetWorkflowServiceAddress($site,"http://WFSvr01:12291/HostingFarm")
#Register the proxy with tenant site collection
$wfProxy.Register($site,$user)
#Connect the tenant site collection to the proxy
$wfProxy.Connect($site)  
Write-Host "Tenant Workflow Registration Script Completed!" 

После настройки клиента для использования рабочих процессов Service Manager вы сможете использовать sharePoint Designer для создания рабочих процессов с помощью параметра Рабочий процесс SharePoint 2013, как показано на следующей схеме.

На этом рисунке показан параметр

Расширение шаблона сайта администрирования клиентов

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

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

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomActionGroup
       Id="TenantAdmin_HostingUserAccounts"
       Location="Microsoft.SharePoint.TenantAdministration"
       Title="User Accounts"
       Sequence="90"
       ImageUrl="_layouts/images/SiteSettings_UsersAndPermissions_48x48.png">
    <UrlAction
        Url="" />
  </CustomActionGroup>
  <CustomAction
      Id="TenantAdmin_HostingUserAccounts_AddUser"
      GroupId="TenantAdmin_HostingUserAccounts"
      Location="Microsoft.SharePoint.TenantAdministration"
      Sequence="10"
      Title="Create User">
    <UrlAction
        Url="_layouts/UserAccountsWebParts/UA_AddUsers.aspx" />
  </CustomAction>
  <CustomAction
      Id="TenantAdmin_HostingUserAccounts_ManageUsers"
      GroupId="TenantAdmin_HostingUserAccounts"
      Location="Microsoft.SharePoint.TenantAdministration"
      Sequence="30"
      Title="Manage Users">
    <UrlAction
        Url="_layouts/UserAccountsWebParts/UA_ManageUsers.aspx" />
  </CustomAction>
  <HideCustomAction
    GroupId = "TenantAdmin_Sites"
    HideActionId = "TenantAdmin_Sites_ManageSiteCollections" 
    Location="Microsoft.SharePoint.TenantAdministration" />
</Elements>

Дополнительные сведения о пользовательских действиях, таких как идентификаторы по умолчанию для встроенных ссылок, см. в разделе Схема определения настраиваемых действий.

Настройка ленты

Ленту сервера в SharePoint Server 2013 можно настроить с помощью xml-кода ленты сервера и ECMAScript (JavaScript, JScript). В XML-файле определяются элементы управления на ленте. ECMAScript выполняет действия со страницей или объектом на странице. Вы можете ECMAScript из объектной модели SharePoint FoundationECMAScript или встроенные функции ECMAScript. Кроме того, вы можете добавить на страницу собственный код ECMAScript и использовать его для взаимодействия с лентой.

При настройке ленты сервера можно добавлять, заменять и удалять элементы управления, группы и вкладки. Параметры ленты определяются с помощью XML-файла ленты сервера в компоненте, и их можно развертывать в пакете решения (WSP-файле). Параметры ленты можно определять на уровне определенного типа списков с помощью атрибутов RegistrationId и RegistrationType. Их также можно определять на уровне сайте или определенного веб-приложения с помощью атрибута Scope в файле Feature.xml.

Приведенный ниже XML-файл заменяет функции кнопки Дисковая квота на странице Управление семействами веб-сайтов.

<Elements xmlns="http://schemas.microsoft.com/sharepoint/" >
  <CustomAction Id="Ribbon.Library.Actions.ReplacementButton"
      Location="CommandUI.Ribbon"
      Title="Replace a Ribbon Button">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition
          Location="Ribbon.SiteCollections.Manage.DiskQuota">
          <Button Id="Ribbon.SiteCollections.Manage.DiskQuota.Replacement"
            Command="ReplacementButtonCommand"
            Image32by32="/_layouts/1033/images/formatmap32x32.png?vk=4536"
                  Image32by32Left="-256"
                  Image32by32Top="-224"
            LabelText="Disk Quota"
            TemplateAlias="o1" />
        </CommandUIDefinition>
      </CommandUIDefinitions>
      <CommandUIHandlers>
        <CommandUIHandler
          Command="ReplacementButtonCommand"
          CommandAction="javascript: 
         function demoCallback(dialogResult, returnValue)  
          {  
          }  
              var options = {               
                url: 'HostingTenantAdmin/DiskQuota.aspx', 
                tite: 'Manage Disk Quota', 
                allowMaximize: true, 
                showClose: true, 
                width: 610, 
                height: 450,
            dialogReturnValueCallback: demoCallback  }; 
              SP.UI.ModalDialog.showModalDialog(options);" />
      </CommandUIHandlers>
    </CommandUIExtension>
  </CustomAction>
</Elements>

Дополнительные сведения о настройке ленты сервера см. в разделе Настройка ленты сервера.

Расширение подписки на сайт с помощью пользовательских свойств

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

  • string

  • int

  • long

  • bool

  • Guid

  • DateTime

С помощью пользовательских свойств можно расширять возможности управления клиентами, например управления квотой клиентов.

Приведенный ниже сценарий PowerShell иллюстрирует доступ к пользовательским свойствам.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue
#-----------------------------------------------------
# Load Assemblies
#-----------------------------------------------------
[void] [Reflection.Assembly]::Load("Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")
#-----------------------------------------------------
# Functions
#-----------------------------------------------------
function GetSPSiteSubscription([string]$url)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = Get-SPSiteSubscription $url;
    
    return $sub;
}
function GetSiteSubAdminProperties([string]$url)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetAdminProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    return $props; 
}
function AddOrSetSiteSubAdminProperty([string]$url, [string]$theKey, $theValue)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetAdminProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    if ($props.ContainsKey($theKey) -eq $true)
    {
        $props.SetValue($theKey, $theValue);
    }
    else
    {
        $props.Add($theKey, $theValue);
    }
    $props.Update(); 
}
function GetSiteSubAdminProperty([string]$url, [string]$theKey)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetAdminProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    $theValue = "";
    if ($props.ContainsKey($theKey) -eq $true)
    {
        foreach ($prop in $props)
        {
            if ($prop.Key -eq $theKey) 
            {
                $theValue = $prop.Value;
                break;
            }
        }
        return $theValue;
    }
    else 
    {
        return $null;
    }
}
function RemoveSiteSubAdminProperty([string]$url, [string]$theKey)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetAdminProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    if ($props.ContainsKey($theKey) -eq $true)
    {
        $props.Remove($theKey);
        $props.Update();
    }
}
function GetSiteSubTenantProperties($url)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    return $props; 
}
function AddOrSetSiteSubTenantProperty([string]$url, [string]$theKey, $theValue)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    if ($props.ContainsKey($theKey) -eq $true)
    {
        $props.SetValue($theKey, $theValue);
    }
    else
    {
        $props.Add($theKey, $theValue);
    }
    $props.Update(); 
}
function GetSiteSubTenantProperty([string]$url, [string]$theKey)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    $theValue = "";
    if ($props.ContainsKey($theKey) -eq $true)
    {
        foreach ($prop in $props)
        {
            if ($prop.Key -eq $theKey) 
            {
                $theValue = $prop.Value;
                break;
            }
        }
        return $theValue;
    }
    else 
    {
        return $null;
    }
}
function RemoveSiteSubTenantProperty([string]$url, [string]$theKey)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    if ($props.ContainsKey($theKey) -eq $true)
    {
        $props.Remove($theKey);
        $props.Update();
    }

См. также

Понятия

Общие рекомендации для поставщиков услуг размещения в SharePoint Server 2013