Grundlegendes zur Mandantenfähigkeit in SharePoint Server 2013

GILT FÜR:yes-img-132013 no-img-162016 no-img-192019 no-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

In diesem Artikel werden die Komponenten und Dienste beschrieben, die im Zusammenhang mit der Mehrinstanzenfähigkeit in SharePoint Server 2013 stehen, und bietet außerdem Anleitungen zu Architektur, Sicherheit, Betrieb und Verwaltung, um Dienstanbietern dabei zu helfen, ein Verständnis der Mehrinstanzenfähigkeit in SharePoint Server 2013 für die Planung, den Entwurf, den Aufbau und die Verwaltung einer mehrinstanzenfähigen SharePoint Server 2013-Hostingplattform zu erhalten.

Hinweis

Microsoft OneDrive mit Viva Engage Integration funktioniert nicht für mehrinstanzenfähige oder partitionierte Dienstanwendungen für lokale Bereitstellungen.

Bevor Sie beginnen

Einführung in Mehrmandantenfähigkeit in SharePoint Server 2013

Was ist Mehrmandantenfähigkeit?

Bevor wir die Mehrinstanzenfähigkeitsfunktionalität in SharePoint Server 2013 einführen, sollten Sie das allgemeine Konzept der Mehrinstanzenfähigkeit und die zugehörigen Merkmale verstehen. Wenn Sie die Mehrinstanzenfähigkeit und die zugehörigen Merkmale verstehen, können Sie die richtigen Entscheidungen für die Planung, den Entwurf, den Betrieb und die Verwaltung Ihrer mehrinstanzenfähigen SharePoint Server 2013-Hostingplattform treffen.

Mehrinstanzenfähigkeit bezieht sich auf die Möglichkeit, Daten von Standorten und anderen gemeinsam genutzten Diensten oder Software für mehrere Mandanten zu verwalten und zu partitionieren. Diese Möglichkeit steht im Gegensatz zum Ausführen mehrerer Instanzen eines Diensts oder zum Einrichten einer separaten Hardware. In Produkten und Technologien von Microsoft führt die Mehrmandantenfähigkeit von Diensten zu einer Hostingumgebung, in der Serverfarmressourcen maximiert werden. Bevor Sie sich mit Hostingumgebungen vertraut machen, ist es wichtig, die Dienstarchitektur zu verstehen.

Wichtige Komponenten und Dienste, um Mehrmandantenfähigkeit in SharePoint Server 2013 zu ermöglichen

In diesem Abschnitt werden wichtige Komponenten und Dienste beschrieben, um Mehrmandantenfähigkeit in SharePoint Server 2013 zu ermöglichen.

Webanwendung

Eine SharePoint 2013-Webanwendung besteht aus einer IIS-Website (Internet Information Services, Internetinformationsdienste), die als logische Einheit zur Verwaltung und Sicherheit für die Websitesammlungen dient, die Sie erstellen. Jede Webanwendung wird durch eine andere IIS-Website dargestellt, die einen eindeutigen oder freigegebenen Anwendungspool verwendet. Wenn Sie eine Webanwendung erstellen, erstellen Sie auch eine Inhaltsdatenbank und definieren die Authentifizierungsmethode, die zum Verbinden der Datenbank(en) verwendet wird.

Websitesammlungen mit Hostnamen

Websitesammlungen mit Hostnamen ermöglichen Ihnen, Websitesammlungen einen eindeutigen DNS-Namen zuzuweisen. Beispielsweise können Sie sie als http://TeamA.contoso.com und http://TeamB.fabrikam.com adressieren. Mit dieser Bereitstellung können Sie viele Websites bereitstellen, die eindeutige DNS-Namen in derselben Webanwendung verwenden. Außerdem können Dienstanbieter dadurch eine Umgebung für zahlreiche Kunden skalieren. Wenn Sie keine Websitesammlungen mit Hostnamen verwenden, enthält die SharePoint-Webanwendung viele pfadbasierte Websitesammlungen, die denselben Hostnamen (DNS-Name) verwenden. Team A verfügt beispielsweise über eine Websitesammlung unter https://contoso.com/sites/teamA und Team B über eine Websitesammlung unter https://fabrikam.com/sites/teamB.

Websitesammlungen mit Hostnamen stellen grundsätzlich die einzige Möglichkeit dar, um eine Skalierung für mehrmandantenfähige Umgebungen vorzunehmen, und bieten bezüglich des verwendeten URL-Namespace größtmögliche Flexibilität. Bei Verwendung von pfadbasierten Standorten mit Mehrinstanzenfähigkeit wird die Softwaregrenze für verwaltete Pfade schnell erreicht.

Weitere Informationen zum Planen von Websitesammlungen mit Hostnamen für SharePoint Server 2013 finden Sie unter Architektur und Bereitstellung von Websitesammlungen mit Hostnamen (SharePoint 2013).

Dienstgruppen (Proxygruppen)

Eine Dienstgruppe, auch als Proxygruppe bezeichnet, ist eine Gruppe von Dienstanwendungen, die für eine Webanwendung ausgewählt werden, um sie zu verwenden.

Standardmäßig sind alle Dienstanwendungen in der Standardgruppe enthalten, es sei denn, bei der Erstellung der Dienstanwendung wurde eine andere Gruppe angegeben. Sie können der Standardgruppe jederzeit Dienstanwendungen hinzufügen oder diese daraus entfernen. Wenn Sie eine Webanwendung erstellen, können Sie die Standardgruppe auswählen oder eine benutzerdefinierte Gruppe von Diensten erstellen. Zur Erstellung einer benutzerdefinierten Gruppe von Diensten wählen Sie nur die Dienstanwendungen aus, welche die Webanwendung verwenden soll.

Benutzerdefinierte Gruppen können nicht in mehreren Webanwendungen wiederverwendbar sein. Jedes Mal, wenn Sie beim Erstellen einer Webanwendung "Benutzerdefiniert" auswählen, wählen Sie dienste nur für die Webanwendung aus, die Sie erstellen.

Dienstproxy

Wenn Sie eine Dienstanwendung erstellen, wird gleichzeitig ein Proxy für die Dienstanwendung erstellt. Ein Proxy ist eine virtuelle Entität, die Webanwendungen mit Dienstanwendungen verbindet. Proxys werden in die Website für die SharePoint-Zentraladministration auf der Seite "Dienstanwendungen verwalten" aufgeführt.

Proxys werden automatisch erstellt, wenn Sie zum Erstellen von Dienstanwendungen Zentraladministration oder den Konfigurations-Assistent für SharePoint 2016-Produkte verwenden. Wenn Sie Microsoft PowerShell zum Erstellen von Dienstanwendungen verwenden, werden Proxys nicht immer automatisch erstellt und müssen mithilfe von Microsoft PowerShell erstellt werden.

Einige Proxys können Einstellungen enthalten, die geändert werden können. Wenn eine Webanwendung z. B. mit mehreren Instanzen des verwalteten Metadatendienstes verbunden ist, müssen Sie die Proxys angeben, die mit der primären Dienstanwendung verbunden sind, welche die Unternehmenstaxonomie hostet. Diese Einstellungen werden bei Verwendung von Mehrinstanzenfähigkeit in die Konfiguration auf Mandantenebene verschoben.

Dienstanwendungen

Eine Dienstanwendung ist eine logische Darstellung eines bestimmten Diensts und seiner Sicherheits- und Verwaltungskonfiguration, die das Betriebsverhalten definiert. Beispiele sind etwa "Verwaltete Metadaten" und "Benutzerprofile". Verschiedene Dienstanwendungen werden auf unterschiedliche Weise implementiert, und diese Flexibilität beeinflusst den Entwurf von mehrinstanzenfähigen Lösungen.

Um die Liste der in SharePoint Server 2013 verfügbaren Dienstanwendungen und deren Verfügbarkeit in SharePoint-Editionen mit der Funktion für Mehrmandantenfähigkeit zu bestimmen, lesen Sie den Abschnitt Dienste und Funktionen in Allgemeiner Leitfaden für Hoster in SharePoint Server 2013

Feature Packs und Lizenzierung

Ein Feature Pack in SharePoint ist eine Möglichkeit, einen Satz von website- oder webbezogenen Features zu gruppieren. Sobald die SharePoint-Features gruppiert sind, können sie einem Websiteabonnement (d. a. Mandant) zugeordnet werden. Alle Websitesammlungen in diesem Websiteabonnement (Mandanten) können nur die website- oder webbezogenen Features verwenden, die Teil des Feature Pack sind. So können Dienstanbieter basierend auf unterschiedlichen Sätzen von Features gestufte Dienstangebote bereitstellen.

In SharePoint Server 2013 wurde ein neues Feature zum Zuweisen unterschiedlicher SharePoint-Lizenzen für einzelne Benutzer hinzugefügt. Außerdem aktiviert es zur Laufzeit die SharePoint-Lizenzüberprüfung. Dieses Feature bietet einem Dienstanbieter mehr Flexibilität, unterschiedliche Dienstangebote in einem vereinfachten Bereitstellungsmodell zu erstellen. In früheren SharePoint-Versionen mussten Dienstanbieter für jede SharePoint-Version andere SharePoint-Bereitstellungsmodelle erstellen. Weitere Informationen zu SharePoint-Features finden Sie im Abschnitt SharePoint-Featureverfügbarkeit über lokale Lösungen hinweg des folgenden Artikels: SharePoint-Dienstbeschreibung.

Verwaltung von Informationsrechten

Die Integration der Verwaltung von Informationsrechten in SharePoint Server 2013 ermöglicht die Unterstützung von Mehrmandantenfähigkeit, sodass Einstellungen zur Verwaltung von Informationsrechten auf Mandantenebene verwaltet werden können.

Überlegungen zum Architekturentwurf

In diesem Abschnitt werden verschiedene Überlegungen zum Entwurf der Architektur einer mandantenfähigen SharePoint Server 2013-Umgebung beschrieben. Wie weiter oben in diesem Dokument beschrieben, ist Mehrmandantenfähigkeit mit einigen besonderen Merkmalen verbunden, die beim Erstellen der Architektur und dem Entwurf Ihrer SharePoint Server 2013-Umgebung berücksichtigt werden sollten. Sie müssen diese Faktoren basierend auf Ihren Anforderungen abwägen, um die richtigen Entscheidungen zu treffen.

Grundlegendes zu Einschränkungen und Grenzen in SharePoint Server 2013

Ein Verständnis der softwarebasierten Einschränkungen und Grenzen von SharePoint Server 2013 hilft Ihnen, bei der Auswahl der geeigneten Architektur für eine mandantenfähige SharePoint-Umgebung die richtigen Entscheidungen zu treffen. Weitere Informationen zu wichtigen Grenzen und Grenzwerten für eine Inhaltsdatenbank und Websitesammlung, wie sie für eine Mehrinstanzenumgebung von SharePoint Server 2013 gelten, finden Sie unter Softwaregrenzen und -grenzwerte für SharePoint Server 2016 und Softwaregrenzen und -grenzwerte für SharePoint Server 2016.

Gemeinsame Farm im Vergleich zu einer dedizierten Farm

Die Verwendung einer gemeinsamen Farm zum Hosten von mandantenfähigen Websitesammlungen in einer einzelnen Webanwendung bietet mehr Skalierbarkeit, als wenn pro Mandant eine dedizierte Webanwendung verwendet wird.

Verwenden Sie pro Kunde nur dann einen dedizierte Webanwendung und einen dedizierten Anwendungspool, wenn Isolationsanforderungen erfüllt werden müssen.

Lassen Sie nicht zu, dass voll vertrauenswürdiger Code auf Websites bereitgestellt wird.

Lassen Sie keine Anpassungen zu, die sich auf freigegebene Ressourcen auswirken, z. B. die web.config-Datei.

Verwenden Sie Websitesammlungen mit Hostnamen, um in einer Webanwendung mehrere Websitesammlungen (Websites mit Domänennamen) auf Stammebene zu erstellen.

Eine einzelne Webanwendung im Vergleich zu mehreren Webanwendungen

Verwenden Sie dedizierte Webanwendungen für Mandanten, die Anpassungen erfordern, die Einfluss auf in einer Webanwendung geteilte Ressourcen, wie z. B. die Datei "web.config", haben.

Wenn Sie in einer einzelnen Farm mehrere Mandanten kombinieren, verwenden Sie für alle authentifizierten Inhalte eine dedizierte SharePoint-Webanwendung und eine separate dedizierte Webanwendung für alle anonymen Inhalte. Diese Methode erfordert zwei separate Abonnement-IDs für Mandanten mit beiden Inhaltstypen. Diese Methode vereinfacht auch die Lizenzierung.

Einige SharePoint-Features sind an die Webanwendungsebene gebunden, etwa die Einstellung "Self-Service Site Collection Creation". Nachdem sie aktiviert wurde, können alle Mandanten unter der gleichen Webanwendung Websitesammlungen erstellen.

Entwurf einer Umgebung mit einer einzelnen Farm

In einer Hostumgebung mit mehreren organization, in der Mandantendaten und -verwaltung isoliert sind, ist die Konfiguration von partitionierten und gemeinsam genutzten Diensten wichtig. Dieses Beispiel zeigt eine praktische Implementierung partitionierter Dienste und bietet auch Empfehlungen zur Bereitstellung von Kundenwebsites.

In diesem Beispiel werden die folgenden Möglichkeiten erläutert, die es zur Bereitstellung von Kundenwebsites in einer Farm gibt:

  • Dedizierter Anwendungspool und dedizierte Webanwendung

  • Gemeinsamer Anwendungspool und dedizierte Webanwendung

  • Gemeinsame Webanwendung

    • Authentifizierte Websites

    • Nicht authentifizierte Websites

Verwenden Sie pro Kunde nur dann einen dedizierten Anwendungspool, wenn Isolationsanforderungen erfüllt werden müssen. Verwenden Sie dedizierte Webanwendungen für Mandanten, die Anpassungen erfordern, die Einfluss auf in einer Webanwendung geteilte Ressourcen, wie z. B. die Datei "web.config", haben.

Wenn Sie in einer einzelnen Webanwendung mehrere Mandanten kombinieren, verwenden Sie für alle authentifizierten Inhalte eine dedizierte Webanwendung und eine separate dedizierte Webanwendung für alle anonymen Inhalte. Diese Methode erfordert zwei separate Abonnement-IDs für Mandanten mit beiden Inhaltstypen. Diese Methode wird auch die Lizenzierung vereinfachen.

Lassen Sie nicht zu, dass voll vertrauenswürdiger Code auf Websites bereitgestellt wird.

Lassen Sie keine Anpassungen zu, die Einfluss auf geteilte Ressourcen, wie z. B. die Datei "web.config", haben.

Im folgenden Beispiel (authentifizierte Websites) wird für jedes Unternehmen eine andere Websitesammlung mit Hostname verwendet. Unternehmen C enthält zwei verschiedene Websitesammlungen mit Hostnamen. Unter jeder Websitesammlung mit Hostname auf oberster Ebene wird ein verwalteter Pfad verwendet, um für Websites wie Teamwebsites, Meine Websites, veröffentlichte Intranetinhalte oder separate abteilungsbezogene Websites eine zweite Stufe von Websitesammlungen auf oberster Ebene zu erstellen.

Entwurf einer gestuften Umgebung

Wie weiter oben beschrieben, müssen Sie bei der Planung Ihrer mehrmandantenfähigen SharePoint Server 2013-Hostingplattform zahlreiche Faktoren berücksichtigen. Dazu zählen Kosten, vereinfachte Verwaltung, Ressourcenisolation, Leistung und Skalierbarkeit.

Bei einem wachsenden Kundenstamm wird es zunehmend schwieriger, alle Anforderungen sämtlicher Kunden in einer einzelnen Umgebung zu erfüllen. Dann müssen bestimmte Kompromisse gemacht werden, wenn Sie einen Ausgleich zwischen diesen Faktoren suchen.

In einem Fall wie diesem stellt ein Entwurf mit einer gestuften Umgebung eine mögliche Alternative dar, in der mehrere SharePoint-Umgebungen die verschiedenen Anforderungen Ihrer Kunden erfüllen. Jede Umgebung wäre auf andere Aspekte Ihrer Dienstangebote ausgerichtet, wie geringe Kosten, hohe Dichte, höhere Ressourcenisolation und bessere Dienstqualität (Quality of Services ,QoS) mit höheren Kosten usw.

Mit diesem Ansatz einer gestuften Umgebung könnten Sie Ihren Kunden unterschiedliche Vereinbarungen zum Servicelevel bieten. Damit könnten Sie ein breites Kundenspektrum bedienen, Ihre Verwaltung und Ihren Betrieb vereinfachen, Ihre Verwaltungskosten senken und Ihre Gewinnmargen erhöhen.

Sicherheitsüberlegungen

In diesem Abschnitt werden verschiedene Überlegungen zur Sicherheit erörtert, wenn Sie eine mehrmandantenfähige SharePoint Server 2013-Hostingplattform planen und entwerfen. Ab diesem Zeitpunkt funktioniert jeder Abschnitt, z. B. der Abschnitt Organisationseinheit (OU), in dem die Konfiguration der Personenauswahl behandelt wird, nur noch ohne weitere Anpassung mit Windows-Authentifizierung.

SharePoint Server 2013 unterstützt für die folgenden Authentifizierungstypen viele Authentifizierungsmethoden und -anbieter:

  • Windows-Authentifizierung

  • Formularbasierte Authentifizierung

  • Auf SAML-Token basierende Authentifizierung

Der Windows-Authentifizierungstyp nutzt Ihren vorhandenen Windows-Authentifizierungsanbieter und die Authentifizierungsprotokolle, die eine Windows-Domänenumgebung zum Überprüfen der Anmeldeinformationen von verbundenen Clients verwendet. Windows-Authentifizierung Methoden, die sowohl von der anspruchsbasierten Authentifizierung als auch im klassischen Modus verwendet werden, umfassen:

  • NTLM

  • Kerberos

  • Digest

  • Standard

Die formularbasierte Authentifizierung ist ein anspruchsbasiertes Identitätsverwaltungssystem, das auf der ASP.NET-Mitgliedschafts- und Rollenanbieterauthentifizierung basiert. Die formularbasierte Authentifizierung kann für Anmeldeinformationen verwendet werden, die in einem Authentifizierungsanbieter gespeichert sind, z. B.:

  • Active Directory-Domänendienste (AD DS)

  • Eine Datenbank wie z. B. eine SQL Server-Datenbank

  • Ein LDAP-Datenspeicher (Lightweight Directory Access-Protokoll) wie z. B. Novell eDirectory, Novell Directory Services (NDS) oder Sun ONE

Mit der formularbasierten Authentifizierung werden Benutzer anhand der Anmeldeinformationen überprüft, die sie in ein Anmeldeformular eingeben (üblicherweise eine Webseite). Nicht authentifizierte Anforderungen werden zu einer Anmeldeseite umgeleitet, auf der ein Benutzer gültige Anmeldeinformationen eingeben muss und das Formular übermittelt. Das System gibt ein Cookie für authentifizierte Anforderungen aus, das einen Schlüssel zum Wiederherstellen der Identität für spätere Anforderungen enthält.

Wenn Sie die formularbasierte Authentifizierung verwenden möchten, um Benutzer bei einem Identitätsverwaltungssystem zu authentifizieren, das nicht auf Windows oder einem externen System basiert, müssen Sie den Mitgliedschaftsanbieter und den Rollen-Manager in mehreren web.config-Dateien registrieren. SharePoint Server 2013 verwendet die standardmäßige ASP.NET-Rollen-Manager-Schnittstelle zum Erfassen von Gruppeninformationen über den aktuellen Benutzer. Jede ASP.NET-Rolle wird im Autorisierungsprozess in SharePoint Server 2013 als Domänengruppe behandelt. Sie registrieren einen Rollen-Manager in der Datei "web.config" auf die gleiche Weise wie Mitgliedschaftsanbieter für die Authentifizierung.

Wenn Sie Mitgliedschaftsbenutzer oder -rollen über die Website für die Zentraladministration verwalten möchten, müssen Sie den Mitgliedschaftsanbieter und den Rollen-Manager in der Datei "Web.config" für die Website der Zentraladministration registrieren. Außerdem müssen Sie den Mitgliedschaftsanbieter und den Rollen-Manager in der Datei "web.config" der Webanwendung registrieren, die den Inhalt hostet, und in der Datei "web.config" des Sicherheitstokendienstes.

Die auf SAML-Token basierende Authentifizierung in SharePoint Server 2013 verwendet das SAML 1.1-Protokoll und das WS-Verbund-PRP (Passive Requestor Profile) (WS-F PRP). Dies erfordert die Koordination mit Administratoren einer anspruchsbasierten Umgebung, unabhängig davon, ob es sich um Ihre eigene interne Umgebung oder eine Partnerumgebung handelt. Wenn Sie Active Directory-Verbunddienste (AD FS) 2.0 verwenden, haben Sie eine auf SAML-Token basierende Authentifizierungsumgebung.

Bei Webanwendungen mit anspruchsbasierter Authentifizierung ist die Personenauswahl ein Steuerelement, das in SharePoint Server 2013 verfügbar ist. Das Steuerelement "Personenauswahl" verwendet Anspruchsanbieter zum Auflisten, Auflösen, Durchsuchen und Bestimmen der benutzerfreundlichen Anzeige von Benutzern, Gruppen und Ansprüchen. Weitere Informationen zur Konfiguration der Personenauswahl finden Sie unter Personen Übersicht über Auswahl- und Anspruchsanbieter.

Zonen stellen verschiedene logische Pfade für den Zugriff auf die gleichen Websites in einer Webanwendung dar. Jede Webanwendung kann fünf Zonen enthalten. Wenn Sie eine Webanwendung erstellen, erstellt Zentraladministration die Zone mit dem Namen Standard. Um weitere Zonen zu erstellen, erweitern Sie die Webanwendung, und wählen Sie einen der verbleibenden Zonennamen aus: Intranet, Extranet, Internet oder Benutzerdefiniert.

Organisationseinheiten

Organisationseinheiten (Organizational Units, OUs) organisieren Benutzer- und Computerobjekte in der Active Directory-Umgebung. Für das Hosting könnte die Organisationseinheitenstruktur wie im folgenden Diagramm dargestellt organisiert werden.

Dieses Diagramm zeigt die Organisationseinheitsstruktur einer Hostingumgebung

Sie sollten eine Gruppenrichtlinie zumindest mit dem Domänenstamm, der OU "Domänencontroller", der OU "SharePoint-Server" und der OU "Kunden" verknüpfen.

Domänenstamm

Sicherheit, die auf die gesamte Domäne angewendet wird, wird auf die Domänenrichtlinie angewendet. Diese Einstellungen sind in Gruppenrichtlinienobjekten (Group Policy Objects, GPOs) enthalten, die auf die gesamte Domäne angewendet werden.

OU "Domänencontroller"

Auf Domänencontrollern sind die vertraulichsten Daten in Ihrer Organisation gespeichert, welche die Sicherheitskonfiguration selbst steuern. Auf dieser Ebene angewendete GPOs werden zum Konfigurieren und Schützen der Domänencontroller in der Domäne verwendet.

OU "SharePoint-Server"

Die SharePoint-Server haben eine einzigartige Rolle, die in anderen Servern im Verzeichnis nicht enthalten ist. Wenn Sie diese Server in ihrer eigenen OU platzieren, können auf diese eindeutige Richtlinien angewendet werden. Sie können auch von anderen Servern im Verzeichnis isoliert werden. Untergeordnete OUs können erstellt werden, wenn andere GPOs erstellt werden müssen (wie Inhaltsserver mit anonymem Zugriff im Vergleich zu authentifizierten Inhaltsservern).

OU "Kunden"

Diese OU auf oberster Ebene erlaubt die Isolation aller Benutzerkonten vom restlichen Verzeichnis. Die nächste Ebene von OUs enthält die Kunden-OUs. Für jeden Kunden gibt es eine Organisationseinheit. Mit dieser Organisationseinheit können alle Benutzerkonten und Computerkonten eines Kunden von den Konten anderer Kunden getrennt werden. Darüber hinaus ist diese Organisationseinheitsstruktur die erforderliche Struktur, um die Benutzerprofilsynchronisierung in mehrinstanzenfähigen Bereitstellungen zu unterstützen.

Um den Benutzern den Eindruck zu vermitteln, dass sie sich bei ihrer eigenen benutzerdefinierten Domäne anmelden, verwenden Sie den Active Directory-Dienstschnittstellen-Editor (ADSI-Bearbeitung) oder ein anderes AD-Tool, um das uPNSuffixes-Attribut jeder Kunden-ORGANISATIONSeinheit zu bearbeiten, wie im folgenden Diagramm dargestellt.

Dieses Diagramm zeigt das Dialogfeld des ADSI-Eigenschaften-Editors für das Attribut

Nachdem das uPNSuffixes -Attribut einer Kunden-OU konfiguriert wurde, kann dessen Wert, wie im folgenden Diagramm dargestellt, mit einem Benutzerkonto in dieser Kunden-OU verknüpft werden.

Dieses Diagramm zeigt das Dialogfeld

Benutzerauthentifizierung

Benutzerauthentifizierung ist die Überprüfung der Identität eines Benutzers gegenüber einem Authentifizierungsanbieter, bei dem es sich um ein Verzeichnis oder eine Datenbank handelt, das die Anmeldeinformationen des Benutzers enthält und bestätigen kann, dass der Benutzer sie ordnungsgemäß übermittelt hat. Ein Beispiel für einen Authentifizierungsanbieter ist Active Directory Domain Services (AD DS). Andere gängige Namen für einen Authentifizierungsanbieter sind Das Benutzerverzeichnis und der Attributspeicher.

Eine Authentifizierungsmethode ist ein bestimmter Austausch von Kontoanmeldeinformationen und anderen Informationen, die die Identität eines Benutzers bestätigen. Das Ergebnis der Authentifizierungsmethode ist ein Beweis, meist in der Form eines Tokens, das Ansprüche enthält, dass ein Authentifizierungsanbieter einen Benutzer authentifiziert hat.

Ein Authentifizierungstyp ist eine bestimmte Möglichkeit zum Überprüfen von Anmeldeinformationen anhand mindestens eines Authentifizierungsanbieters, wobei gelegentlich ein Branchenstandardprotokoll verwendet wird. Ein Authentifizierungstyp kann mehrere Authentifizierungsmethoden verwenden.

Nachdem die Identität eines Benutzers validiert wurde, bestimmt der Autorisierungsprozess die Websites, Inhalte und andere Features, auf die der Benutzer zugreifen kann.

Bei der Planung der Benutzerauthentifizierungstypen und -methoden sollte Folgendes bestimmt werden:

  • Die Benutzerauthentifizierungstypen und -methoden für alle Webanwendungen und -zonen

  • Die erforderliche Authentifizierungsinfrastruktur zum Unterstützen der festgelegten Authentifizierungstypen und -methoden

  • Die Vorgehensweise bei der Migration Ihrer aktuellen Webanwendungen und -zonen von der klassischen Windows-Authentifizierung zur anspruchsbasierten Authentifizierung

Active Directory-Verbunddienste (AD FS)

SharePoint Server 2013 unterstützt die anspruchsbasierte Authentifizierung. Active Directory-Verbunddienste (AD FS) (AD FS) kann so konfiguriert werden, dass sie als Identitätsanbieter-Sicherheitstokendienst (IP-STS) für eine SharePoint Server 2013-Webanwendung fungieren. In dieser Konfiguration gibt AD FS aus Ansprüchen bestehende SAML-basierte Sicherheitstoken aus, damit Clientcomputer auf Webanwendungen zugreifen können, die anspruchsbasierte Authentifizierung verwenden. Sie können einen Identitätsanbieter verwenden, der eine Alternative zu AD FS darstellt. Es muss jedoch den WS-Federation-Standard unterstützen. Auch bei Verwendung der AD FS-Konfiguration ist benutzerdefinierter Code erforderlich.

Weitere Informationen zum Konfigurieren der SAML-basierten Anspruchsauthentifizierung mit AD FS für SharePoint Server 2013 finden Sie unter Konfigurieren der SAML-basierten Anspruchsauthentifizierung mit AD FS in SharePoint Server.

Überlegungen zu Verwaltung und Betrieb

In diesem Abschnitt werden verschiedene Überlegungen zu Verwaltung und Betrieb einer mehrmandantenfähigen SharePoint Server 2013-Umgebung erörtert.

Kapazitätsverwaltung

Kapazitätsverwaltung ist ein kontinuierlicher Prozess, da keine Implementierung hinsichtlich Inhalt und Nutzung statisch bleibt. Sie müssen Wachstum und Veränderung einplanen, sodass die SharePoint Server 2013-Umgebung weiterhin eine kontinuierliche Geschäftslösung bereitstellen kann. Weitere Informationen zur Kapazitätsverwaltung in SharePoint Server 2013 finden Sie unter Kapazitätsverwaltung und Größenanpassung für SharePoint Server 2013.

App-Verwaltung

Mit den Apps für SharePoint können Sie einer SharePoint-Website auf neue Weise spezifische Informationen oder Funktionalität hinzufügen. Eine App für SharePoint ist eine kleine, benutzerfreundliche eigenständige Anwendung, die eine bestimmte benutzerbezogene oder geschäftliche Anforderung erfüllt. Websitebesitzer können Apps für SharePoint in einem öffentlichen SharePoint Store oder dem internen App-Katalog der Organisation suchen, herunterladen und anschließend auf ihren SharePoint-Websites installieren. Mithilfe dieser Apps für SharePoint werden die Vorzüge des Internets mit SharePoint Server 2013 integriert. Sie ersetzen keine SharePoint-Features und Lösungspakete, die SharePoint-Websites anpassen oder vergrößern. Im Gegensatz zu Features und Lösungen, die Farm- oder Websitesammlungs-Administratoren installieren müssen, sind Apps für SharePoint eigenständige Anwendungen, die Websitebesitzer ihren SharePoint-Websites hinzufügen können. Die Verwaltung von Apps für SharePoint ist ganz einfach, denn sie können von Websitebesitzern einfach installiert, aktualisiert und deinstalliert werden.

Der App-Verwaltungsdienst in SharePoint Server 2013 ist mehrmandantenfähig. Der Großteil der Konfiguration und der Verwaltungsfunktionen ist über die Website für die Mandantenverwaltung verfügbar und erlaubt jedem Mandantenadministrator, seine individuellen Einstellungen zu konfigurieren.

Sichern und Wiederherstellen

Wenn Sie auf einer mehrmandantenfähigen SharePoint Server 2013-Hostingplattform mandantenunabhängige Sicherungs- und Wiederherstellungsvorgänge durchführen, können Sie die allgemeinen Anweisungen zur Durchführung von Sicherungs- und Wiederherstellungsvorgängen in SharePoint Server 2013-Umgebungen unter Sichern und Wiederherstellen in SharePoint Server befolgen.

Beachten Sie, dass die Workflow-Plattform in SharePoint Server 2013 von der SharePoint-Plattform getrennt ist. Daher sollten Sicherungs- und Wiederherstellungsvorgänge im Workflow-Manager mit SharePoint-Sicherungs- und -Wiederherstellungsvorgängen koordiniert werden, damit sie synchron bleiben. Weitere Anleitungen zum Planen von Sicherungs- und Wiederherstellungsvorgängen für Workflow Service Manager finden Sie unter Notfallwiederherstellung und Bereichswiederherstellung in Workflow-Manager 1.0.

Wenn Sie auf einer mehrmandantenfähigen SharePoint Server 2013-Hostingplattform mandantenspezifische Sicherungs- und Wiederherstellungsvorgänge durchführen, müssen Sie möglicherweise die folgenden mandantenspezifischen Komponenten miteinander synchron halten: Dienstanwendungen, Workflow, Inhaltsdatenbanken und Websitesammlungen.

Dienstanwendungen

Dienstanwendungen, die im partitionierten Modus konfiguriert wurden, weisen eine oder mehrere verknüpfte Datenbanken auf, die mandantenspezifische Daten enthalten. Sie können für diese Dienstanwendungen zwar sowohl auf der Anwendungs- als auch auf der Datenbankebene allgemeine Sicherungs- und Wiederherstellungsvorgänge durchführen, doch zur Durchführung mandantenspezifischer detaillierter Sicherungs- und Wiederherstellungsvorgänge für diese Dienstanwendungen oder deren Datenbanken sind nur begrenzte Befehle vorhanden.

Überlegungen zur Dienstanwendungen

App-Verwaltungsdienst

Der App-Verwaltungsdienst ist die Dienstanwendung, die zum Verwalten der app für SharePoint-Funktion verwendet wird, die in SharePoint Server 2013 eingeführt wurde. Mit den Apps für SharePoint können Sie einer SharePoint-Website auf neue Weise spezifische Informationen oder Funktionalität hinzufügen. Eine App für SharePoint ist eine kleine, benutzerfreundliche eigenständige Anwendung, die eine bestimmte benutzerbezogene oder geschäftliche Anforderung erfüllt. Der App Management Service unterstützt den Partitionsmodus nicht, ist jedoch nativ mit Websiteabonnement kompatibel. In der mehrinstanzenfähigen SharePoint-Umgebung werden die meisten Funktionen der App-Verwaltung (d. h. App-Katalog verwalten, App-Lizenzen verwalten, App-Berechtigungen usw.) über die Mandantenverwaltungswebsite abgerufen.

Das folgende Diagramm zeigt die App-Verwaltung auf der Website für die Mandantenverwaltung.

Dieses Diagramm zeigt die Mandantenverwaltungs-Website für die Anwendungsverwaltung

Business Data Connectivity-Dienst

Nach der Konfiguration im Partitionsmodus wird die gesamte Konfiguration des Business Data Connectivity-Diensts in die Mandantenverwaltung verschoben. Die Websitevorlage "Mandantenverwaltung" enthält jedoch nicht den Link zu dieser Seite, der mithilfe der Anpassungsmethode im Abschnitt Erweitern der Websitevorlage für die Mandantenverwaltung hinzugefügt werden kann.

Dienst für einmaliges Anmelden

Nach der Konfiguration im Partitionsmodus bleibt die Generierung von Verschlüsselungsschlüsseln eine Konfiguration auf Farmebene, die entweder über die Zentraladministration oder Windows PowerShell durchgeführt wird. Der Rest der Konfiguration des Secure Store-Diensts wird in die Mandantenverwaltung verschoben. Die Websitevorlage "Mandantenverwaltung" enthält jedoch nicht den Link zu dieser Seite, der mithilfe der Anpassungsmethode im Abschnitt Erweitern der Websitevorlage "Mandantenverwaltung" hinzugefügt werden kann.

Verwalteter Metadatendienst

Nachdem der Dienst im partitionierten Modus konfiguriert wurde, wird die gesamte Konfiguration des Dienstes zur Mandantenverwaltung verschoben, und Inhaltstyp-Veröffentlichung wird standardmäßig aktiviert.

Suchdienst

Viele Funktionen, die mit der mandantenspezifischen Suchkonfiguration zusammenhängen, werden in der Website für die Mandantenverwaltung verfügbar gemacht, wie im folgenden Diagramm dargestellt.

Dieses Diagramm zeigt die Suchverwaltungsfeatures auf der Website für die Mandantenverwaltung

Hinweis

Viele der *. Microsoft PowerShell-Cmdlets von EnterpriseSearch* sind jetzt partitionsfähig und können verwendet werden, um einige Konfigurations- und Verwaltungsfunktionen zu automatisieren, die auf der Mandantenverwaltungswebsite verfügbar gemacht werden.

Benutzerprofildienst

Eine große Anzahl von Konfigurationselementen wird zur Mandantenverwaltung verschoben, wobei allerdings viele der Konfigurationselemente für die Profilsynchronisierung auf einer Farmebene verbleiben und auf alle Mandanten anwendbar sind, wie in der folgenden Abbildung dargestellt.

In dieser Abbildung wird die Benutzerprofilkonfiguration veranschaulicht

Workflow

Wie zuvor erwähnt, ist die Workflow-Plattform in SharePoint Server 2013 von der SharePoint-Plattform getrennt. Die Workflow-Plattform selbst verwendet eine oder mehrere Datenbanken. Sie können für diese Datenbanken zwar allgemeine Sicherungs- und Wiederherstellungsvorgänge auf Datenbankebene durchführen, aber es gibt keine Befehle oder Dienstprogramme, um für diese Workflow-Datenbanken mandantenspezifische Sicherungs- und Wiederherstellungsvorgänge durchzuführen.

Inhaltsdatenbanken

Wenn ein Mandant ein exklusives Recht zur Nutzung einer oder mehrerer dedizierter Inhaltsdatenbanken besitzt, können Sie für diese Datenbanken allgemeine Sicherungs- und Wiederherstellungsvorgänge auf Datenbankebene durchführen.

Hinweis

Das Recht zur exklusiven Nutzung einer oder mehrerer dedizierter Inhaltsdatenbanken kann nicht mithilfe standardmäßiger Produktfeatures wie z. B. Self-Service Site Creation erworben werden. Dies ist ein Beispiel für einen Fall, in dem eine Anpassung erforderlich ist, um ein bestimmtes Service-Level-Angebot bereitzustellen.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie für eine Mandanteninhaltsdatenbank eine erstmalige Sicherungsaktion durchführen.

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!"

Websitesammlungen

Sie können für eine Mandantenwebsitesammlung spezifische Sicherungs- und Wiederherstellungsvorgänge durchführen. Welches Tool Sie wählen, hängt von der Größe der Websitesammlung selbst ab. Microsoft PowerShell-Cmdlets sind für kleine bis mittelgroße Websitesammlungen geeignet.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie für eine Mandantenwebsitesammlung eine Sicherungsaktion durchführen.

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!"

Überwachung

Es gibt zahlreiche Tools, mit denen Sie SharePoint Server 2013 überwachen und Probleme beheben können. Die jeweiligen Tools zielen auf unterschiedliche Aspekte der Umgebung ab, wobei es Überschneidungen geben kann. Überlegen Sie sich, mit welchen Tools Sie einen maximalen Nutzen für die Überwachung erzielen können. Weitere Informationen zum Planen der Überwachung für SharePoint Server 2013 finden Sie unter Planen der Überwachung in SharePoint Server.

Feature Pack-Verwaltung

Wie weiter oben erwähnt, kann ein Feature Pack verwendet werden, um unterschiedliche Features zu gruppieren und mit einem Websiteabonnement (d. h. Mandanten) zu verknüpfen. Alle Websitesammlungen in dem Websiteabonnement (Mandanten) können nur die website- oder webbezogenen Features verwenden, die Teil des Feature Pack sind. So können Dienstanbieter basierend auf unterschiedlichen Sätzen von Features gestufte Dienstangebote bereitstellen. Verwenden Sie zum Erstellen von Feature Packs das New-SPSiteSubscriptionFeaturePack-Cmdlet zur Erstellung des Feature-Pack-Containers und das Add-SPSiteSubscriptionFeaturePackMember-Cmdlet zum Hinzufügen der individuellen Features zum Container.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie ein Feature Pack auf Mandantenebene erstellen, das SharePoint Foundation 2013-Features enthält und die Feature-Pack-ID in der Eigenschaftensammlung der Farm speichert.

Hinweis

Die Dienstanwendung "Abonnementeinstellungen" muss vorhanden sein, bevor Skripts ausgeführt werden, die mit Feature Packs verwendet werden können.

<#
   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

Lizenzverwaltung

In SharePoint Server 2013 wurde eine neue Funktion zur Lizenzverwaltung hinzugefügt. Farmadministratoren können jetzt Benutzern Lizenzen zuweisen und Lizenzüberprüfungen aktivieren. Mithilfe dieser neuen Funktion können Sie sicherstellen, dass nur Benutzer mit entsprechender Lizenz ein spezifisches Feature verwenden können. Die Funktion vereinfacht außerdem das Bereitstellungsmodell, da Sie keine separaten Farmen für Standard und Enterprise Editionen von SharePoint Server mehr erstellen müssen.

Benutzerlizenzen werden zugewiesen, indem Ansprüche einem bekannten Lizenztyp zugeordnet werden. Ein Anspruch kann beispielsweise eine Sicherheitsgruppe von Active Directory-Domänendienste (AD DS) sein. Indem Sie die Sicherheitsgruppe ContosoFinanceDept einer Enterprise-Lizenz zuordnen, weisen Sie allen Mitgliedern dieser Gruppe effektiv eine Enterprise-Lizenz zu. Benutzern, die sich bei SharePoint Server anmelden, werden Ansprüche zugewiesen. SharePoint Server untersucht die Ansprüche von Benutzern, um ihre Lizenz zu bestimmen. Wenn ein Benutzer nicht über eine Lizenz für die Verwendung eines bestimmten Features verfügt, blockiert SharePoint den Zugriff auf dieses Feature zur Laufzeit.

Diese SharePoint Server 2013-Lizenzimplementierung wird mithilfe neuer Microsoft PowerShell-Cmdlets verwaltet. Standardmäßig ist die Lizenzverwaltung in SharePoint Server deaktiviert. Administratoren können sie jedoch mithilfe von Microsoft PowerShell aktivieren. Weitere Informationen zum Konfigurieren der Lizenzierung in SharePoint Server 2013 finden Sie unter Konfigurieren der Lizenzierung in SharePoint Server.

Lebenszyklusverwaltung

In diesem Whitepaper werden zwar die wichtigsten Überlegungen zur Infrastruktur beim Entwurf einer mehrmandantenfähigen SharePoint 2013-Lösung erläutert, und es enthält grundlegende Skripts zur Konfiguration, doch die allgemeine Verwaltung des Lebenszyklus des Betriebs ist unerlässlich. Beispielsweise sind benutzerdefinierte Mandantenverwaltung, Aufhebung der Bereitstellung von Abonnements, Archivierung, Benutzerverwaltung, Self-Service-Kennwortzurücksetzung und Kontingente gängige Bereiche, die eine Kombination aus mehr Windows PowerShell und Anpassungsaufwand erfordern, um ein vollständiges Dienstangebot bereitzustellen. Jeder Dienstanbieter hat in diesem Bereich unterschiedliche Anforderungen, und es ist unglaublich wichtig sicherzustellen, dass diese Anforderungen Teil der anfänglichen Eingrenzungs- und Entwurfsarbeit für die Infrastrukturplattform sind.

Einrichtung und Konfiguration

In diesem Abschnitt werden die allgemeinen Schritte zur Einrichtung und Konfiguration einer mehrmandantenfähigen SharePoint Server 2013-Hostingplattform beschrieben.

Danksagung

Dieser Abschnitt enthält Details und Enthält PowerShell-Skripts, die die Erstellung und Konfiguration verschiedener Komponenten veranschaulichen. Diese Skripts werden bereitgestellt, um die Konfigurationsanforderungen für die Mehrinstanzenfähigkeit zu veranschaulichen und stellen daher nicht die optimale Bereitstellungsreihenfolge dar. Sie können jedoch als Grundlage für die Entwicklung Ihrer eigenen benutzerdefinierten End-to-End-Skriptlösung dienen.

Die in den folgenden Unterabschnitten enthaltenen Microsoft PowerShell-Skripts basieren (ganz oder teilweise) auf der Arbeit von Spencer Harbar (http://www.harbar.net) und werden hier mit seiner gnädigen Zustimmung reproduziert. Weitere Informationen zum Originalwerk von Spencer Harbar finden Sie in den folgenden Dokumenten:

Die angegebenen PowerShell-Skripts enthalten Variablen, die entsprechend Ihrer Umgebung geändert werden sollten.

Bereitstellungsbeispiel

Dieser Abschnitt enthält ein Bereitstellungsbeispiel, bei dem eine einzelne Hostwebanwendung verwendet wird, die vom Host benannte Websitesammlungen und verwaltete Pfade des Hostheaders verwendet. Der Einfachheit halber wird sie auf einem einzelnen Server bereitgestellt. Dieses Bereitstellungsbeispiel ist das beabsichtigte Entwurfsmodell für die Mehrinstanzenfähigkeit mit SharePoint 2013 und kann auf eine Bereitstellung erweitert werden, bei der Dienst- instance Rollen auf mehreren Computern verteilt sind. Im Bereitstellungsbeispiel wird HTTP für die Webanwendung verwendet. In einer echten Bereitstellung sollte SSL zum Schutz der Anmeldung, der Inhalte und der Autorisierungstoken verwendet werden, die mit SharePoint-Apps und anderen OAuth2-bezogenen Diensten wie Workflow-Manager verwendet werden.

DNS-Konfiguration

Da für eine mehrmandantenfähige SharePoint-Umgebung Websitesammlungen mit Hostnamen verwendet werden, müssen Sie Ihr DNS basierend auf Ihrem Plan entsprechend konfigurieren (d. h. entsprechende DNS-Einträge etc. erstellen). Weitere Informationen zum Planen von Websitesammlungen mit Hostnamen für SharePoint Server 2013 finden Sie unter Architektur und Bereitstellung von Websitesammlungen mit Hostnamen (SharePoint 2013).

Wenn auch Apps für SharePoint unterstützt werden sollen, müssen Sie auch DNS für die Unterstützung Ihrer Umgebung konfigurieren. Weitere Informationen zum Konfigurieren einer App-Umgebung für SharePoint Server 2013 finden Sie unter Konfigurieren einer Umgebung für Apps für SharePoint Server.

Active Directory-Konfiguration

Wie weiter oben beschrieben, muss zur Unterstützung von Mehrmandantenfähigkeit in SharePoint Active Directory korrekt strukturiert werden, indem eine hierarchische Organisationseinheitenstruktur erstellt wird, um Benutzerprofilsynchronisierung für jedes Abonnement zu unterstützen. Außerdem müssen Sie geeignete Dienstkonten für Ihre Umgebung erstellen. Weitere Informationen zum Planen von Dienstkonten für SharePoint Server 2013 finden Sie unter Planen von Administrator- und Dienstkonten in SharePoint Server. In diesem Bereitstellungsbeispiel werden die folgenden drei Dienstkonten verwendet:

  • SPFarm: das Konto der SharePoint-Farm

  • SPServices : Die Anwendungspoolidentität, die Dienstendpunkte hostet

  • SPContent : Die Anwendungspoolidentität, die die Inhaltswebanwendung hostet

Erstellung und Konfiguration der SharePoint-Farm

Das folgende Microsoft PowerShell-Skript zeigt die Erstellung einer SharePoint-Farm.

<#
    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!" 

Proxy-Gruppe, Hostwebanwendung und verwaltete Pfade

Zunächst wird ein verwaltetes Konto für den Anwendungspool erstellt, der die Inhaltswebanwendung hosten wird. Eine neue Proxy-Gruppe wird erstellt, gefolgt von der Webanwendung. Abschließend erfolgt die Konfiguration der Webanwendung, um Self-Service Site Creation und die Erstellung gemeinsamer verwalteter Pfade zu erlauben. Es ist wichtig, eine "Stamm"-Websitesammlung in der Hostwebanwendung zu erstellen, auch wenn Endbenutzer nicht auf diese Websitesammlung zugreifen können. Diese "Stammwebsitesammlung" ist für die Unterstützung und das korrekte Betriebsverhalten von SharePoint 2013 erforderlich.

Hinweis

Dieses Beispiel verwendet für die Webanwendung 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!"

Nicht partitionierte Dienste

In dieser Phase können die nicht partitionierten Dienstanwendungen erstellt werden. Diese Dienstanwendungen sind entweder in der Farm für normale Vorgänge erforderlich (z. B. der Zustandsdienst), oder sie müssen nicht partitioniert werden, um die Mehrinstanzenfähigkeit zu unterstützen, da sie keine Daten speichern. Dazu ist ein weiteres verwaltetes Konto erforderlich, und dann wird jede Dienstanwendung nacheinander erstellt.

Das folgende Microsoft PowerShell-Skript zeigt, wie die nicht partitionierten Dienstanwendungen erstellt werden.

<#
    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!"

Erstellung und Konfiguration partitionierter Dienstanwendungen

In den folgenden Abschnitten werden die Microsoft PowerShell-Verfahren beschrieben, die zum Erstellen und Konfigurieren jeder Dienstanwendung erforderlich sind, die Partitionierung unterstützt. Das gleiche allgemeine Muster gilt für jede Dienstanwendung mit Ausnahme von Such- und Benutzerprofilen. Bezüglich der Dienstanwendungsproxys gibt es allerdings kleine Unterschiede.

Business Data Connectivity-Dienst

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Business Data Connectivity-Dienstanwendung im Partitionsmodus erstellen und zu einer benutzerdefinierten Dienstproxygruppe hinzufügen.

$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

Verwalteter Metadatendienst

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die verwaltete Metadatendienstanwendung im Partitionsmodus erstellt und zu einer benutzerdefinierten Dienstproxygruppe hinzufügen.

$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

Maschineller Übersetzungsdienst

Der Dienst "Maschinelle Übersetzung" unterstützt Mehrmandantenfähigkeit, indem Sie deren Dienstanwendung im Partitionsmodus erstellen. Es gibt keine mandantenspezifische Konfiguration, und der Dienst wird auf Farmebene verwaltet. Ihre Datenbank agiert im Endeffekt als Warteschlange und muss daher partitions-/mehrmandantenfähig sein.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Dienstanwendung "Maschinelle Übersetzung" im Partitionsmodus erstellen.

$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

Dienst für einmaliges Anmelden

Nach der Konfiguration im Partitionsmodus bleibt die Generierung von Verschlüsselungsschlüsseln eine Konfiguration auf Farmebene, die entweder über die Zentraladministration oder Windows PowerShell durchgeführt wird. Der Rest der Konfiguration des Secure Store-Diensts wird in die Mandantenverwaltung verschoben. Die Websitevorlage Mandantenverwaltung enthält jedoch nicht den Link zu dieser Seite, der mithilfe der Anpassungsmethode im Abschnitt Erweitern der Websitevorlage für die Mandantenverwaltung hinzugefügt werden kann.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Secure Store Service-Anwendung im Partitionsmodus erstellen und zu einer benutzerdefinierten Dienstproxygruppe hinzufügen.

$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 

Suchdienst

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Suchdienstanwendung im Partitionsmodus erstellen.

Hinweis

Das Skript für diese Dienstanwendung verwendet den Parameter Partitioned anstatt des Parameters 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

Die Word Automation Services-Dienstanwendung unterstützt den Partitionsmodus. Es gibt kein Cmdlet zum Erstellen eines Proxys.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Word Automation Services-Dienstanwendung im Partitionsmodus erstellen.

$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 

Benutzerprofildienst

Die Erstellung des Benutzerprofildienstes mithilfe von PowerShell, wie dies beim Bereitstellen im Partitionsmodus erforderlich ist, stellt eine Herausforderung dar, wenn die Windows PowerShell nicht als das SharePoint-Farmkonto ausgeführt wird. Um diese Herausforderung zu umgehen und den Benutzerprofilsynchronisierungsdienst erfolgreich zu starten, verwenden wir das Cmdlet Start-Process und simulieren die Ausführung des Skripts als Farmkonto.

Zwei Skripts sind erforderlich: Das erste Skript erstellt die UPA, das zweite Skript ruft das erste Skript auf.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Benutzerprofildienst-Anwendung im Partitionsmodus erstellen und einer benutzerdefinierten Dienstproxygruppe hinzufügen...

Hinweis

[!HINWEIS] Dieses Skript sollte NICHT direkt ausgeführt werden, da es ansonsten unmöglich ist, den Benutzerprofil-Synchronisierungsdienst zu starten. Dieses Skript sollte lokal gespeichert und der Speicherort notiert werden.

<#
    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} 

Das zweite Skript unten führt die erforderliche Arbeit aus, um das UPA-Erstellungsskript aufzurufen und die erforderlichen Dienstinstanzen zu starten. Der Speicherort des UPA-Erstellungsskripts sollte in der $upaScriptFile-Variablen aktualisiert werden. Darüber hinaus werden einige erforderliche Berechtigungen für den UPA festgelegt.

$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

Konfiguration der Verwaltung von Informationsrechten

Die Unterstützung für die Verwaltung von Informationsrechten für die Mehrinstanzenfähigkeit kann mithilfe der SharePoint-Zentraladministrationswebsite oder der aktualisierten Microsoft PowerShell-Cmdlets aktiviert werden.

Aktivieren der Verwaltung von Informationsrechten mithilfe der Zentraladministration

  1. Vergewissern Sie sich, dass das Benutzerkonto, mit dem dieses Verfahren ausgeführt wird, Mitglied der SharePoint-Gruppe Farmadministratoren und der Gruppe Administratoren auf dem Computer ist, auf dem die Zentraladministration ausgeführt wird.

  2. Wechseln Sie auf der Zentraladministration-Website zu Sicherheit.

  3. Wechseln Sie auf der Seite Sicherheit zu Verwaltung von Informationsrechten konfigurieren.

  4. Klicken Sie auf der Seite Verwaltung von Informationsrechten auf Diesen RMS-Server verwenden.

  5. Aktivieren Sie das Kontrollkästchen Aktivieren Sie dieses Kontrollkästchen in Konfigurationen mit mehreren Mandanten, um den Mandanten das Konfigurieren von IRM-Einstellungen auf Mandantenebene zu ermöglichen..

Aktivieren der Verwaltung von Informationsrechten mithilfe von Microsoft PowerShell

  1. Vergewissern Sie sich, dass Sie über die folgenden Mitgliedschaften verfügen:
  • Feste Serverrolle securityadmin auf der SQL Server-Instanz.

  • Feste Datenbankrolle db_owner auf allen Datenbanken, die aktualisiert werden sollen.

  • Gruppe "Administratoren" auf dem Server, auf dem Sie die PowerShell-Cmdlets ausführen.

    Ein Administrator kann mithilfe des Add-SPShellAdmin -Cmdlets Berechtigungen zur Verwendung von SharePoint Server 2013-Cmdlets gewähren.

    Hinweis

    [!HINWEIS] Wenn Sie keine Berechtigungen besitzen, fordern Sie bei Ihrem Setupadministrator oder SQL Server-Administrator Berechtigungen an. Weitere Informationen zu PowerShell-Berechtigungen finden Sie unter Add-SPShellAdmin.

  1. Starten Sie die SharePoint-Verwaltungsshell.

  2. Geben Sie an der Microsoft PowerShell-Eingabeaufforderung den folgenden Befehl ein:

Set-SPIRMSettings -IrmEnabled -UseActiveDirectoryDiscovery -SubscriptionScopeSettingsEnabled

Die Website für die Mandantenverwaltung bietet keine integrierten Konfigurationsoptionen für IRM. Um die Konfiguration anzuwenden, verwenden Sie das Set-SPSiteSubscriptionIRMConfig -Cmdlet, wie im folgenden Skript gezeigt:

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

Eine solche Konfiguration wird im Rahmen der Mandantenbereitstellung durchgeführt.

Mandantenbereitstellung und -verwaltung

In diesem Abschnitt werden die Prozess und Ansätze zur Bereitstellung von Mandanten und Anpassung der Mehrmandantenumgebung beschrieben.

Mandantenbereitstellung

Befolgen Sie die Schritte in der Tabelle, um einen Mandanten zu erstellen.

Aufgaben
Schritte
1. Erstellen Sie ein Websiteabonnement.
Geben Sie an der Microsoft PowerShell-Eingabeaufforderung die folgende Syntax ein:
$sub = New-SPSiteSubscription
2. Weisen Sie dem Websiteabonnement ein Feature Pack zu, und konfigurieren Sie mithilfe der Personenauswahl eine benutzerdefinierte Organisationseinheit.
Geben Sie an der Microsoft PowerShell-Eingabeaufforderung die folgende Syntax ein:
Set-SPSiteSubscriptionConfig -id $sub -FeaturePack $customerFeatures -UserAccountDirectoryPath "OU=$customerName,OU=Customers,DC=contoso,DC=com"
3. Erstellen Sie eine oder mehrere Websitesammlungen, die dem Websiteabonnement zugeordnet werden.
Geben Sie an der Microsoft PowerShell-Eingabeaufforderung die folgende Syntax ein:
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

Das folgende PowerShell-Skript zeigt, wie Sie eine Mandantenadministratorwebsite erstellen, die die Vorlage TENANTADMIN#0 verwendet. Wenn der Mandant für die Verwendung eines Enterprise Feature Packs konfiguriert ist, führt das Microsoft PowerShell-Skript weitere Vorgänge aus, d. h., es erstellt die Sammlung Meine Websites.

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!"  

Dieser Ansatz kann weiter angepasst werden, um andere Mandantenkonfigurationen zu enthalten, z. B. für Workflow, Apps und IRM. Ein solches Skript wird in eine Funktion oder benutzerdefinierte Cmdlets gekapselt, sodass es für zukünftige Mandanten wiederholt ausgeführt werden kann.

Workflowdienst

SharePoint Server 2013 erweitert den Workflow um einen bedeutenden funktionalen Bereich: unternehmenswichtige Features wie z. B. vollständig deklaratives Erstellen, REST und Service-Bus-Messaging, flexible Skalierbarkeit und Zuverlässigkeit dank verwalteter Dienste. In SharePoint 2013 kann ein neuer Workflowdienst verwendet werden, der auf den Windows Workflow Foundation-Komponenten von .NET Framework 4.5 aufbaut. Der neue Dienst heißt Workflow-Manager und soll eine zentrale Rolle im Unternehmen spielen.

Die SharePoint 2013 Workflow-Plattform wird für Sie und die von Ihnen verwendeten Tools erst verfügbar gemacht, nachdem Sie den neuen Workflow-Manager-Dienst heruntergeladen und installiert sowie für die Kommunikation mit der SharePoint Server 2013-Farm konfiguriert haben. Weitere Informationen zum Installieren und Konfigurieren des Workflow-Manager-Diensts für SharePoint 2013 finden Sie unter Installieren und Konfigurieren des Workflows für SharePoint Server.

Verwenden Sie zum Konfigurieren des Workflow-Dienstes das Register-SPWorkflowService -Cmdlet, um die Farm beim Workflow-Dienst-Manager im Partitionsmodus zu registrieren. Verwenden Sie bei dieser Farmregistrierung den SPSite-Parameter , um die URL einer vorhandenen Mandantenwebsitesammlung aus Ihrer Farm zu übergeben, und verwenden Sie den ScopeName-Parameter , um einen benannten Workflowbereich für Ihre Farm zu definieren.

Das folgende Windows PowerShell-Skript zeigt, wie Sie die SharePoint-Farm beim Workflow-Dienst-Manager im Partitionsmodus registrieren.

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!"

Um einen bestimmten Mandanten für SharePoint-Workflow zu aktivieren, müssen Sie den Workflow-Dienstproxy konfigurieren. Rufen Sie bei dieser Konfiguration einen Verweis auf die Stammwebsitesammlung des Mandanten ab, und registrieren Sie sie beim Workflowdienstproxy.

Das folgende PowerShell-Skript zeigt, wie Sie einen Mandanten für SharePoint-Workflow aktivieren.

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!" 

Nachdem der Mandant für die Verwendung von Workflow Service Manager konfiguriert wurde, können Sie sharePoint Designer verwenden, um Workflows mithilfe der SharePoint 2013-Workflowoption zu erstellen, wie im folgenden Diagramm dargestellt.

Dieses Diagramm zeigt die SharePoint 2013 -Workflowoption in SharePoint Designer

Erweitern der Vorlage für die Mandantenverwaltungswebsite

Verwenden Sie das benutzerdefinierte Aktionsdefinitionsschema, um Links auf der Hauptseite der Website für die Mandantenverwaltung hinzuzufügen und zu entfernen.

Die folgende Featuredefinition zeigt, wie Sie eine neue Gruppe und mehrere Links hinzufügen und den Link zur Seite "Websitesammlungen verwalten" entfernen.

<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>

Weitere Informationen zu benutzerdefinierten Aktionen, z. B. den Standard-IDs für integrierte Links, finden Sie unter Definitionsschema für benutzerdefinierte Aktionen.

Anpassen des Menübands

Das Server-Menüband in SharePoint Server 2013 kann mithilfe von Servermenüband-XML und ECMAScript (JavaScript, JScript) angepasst werden. Die XML-Datei definiert die Steuerelemente auf der Multifunktionsleiste. Das ECMAScript führt Aktionen auf einer Seite oder einem Objekt auf der Seite durch. Sie können ECMAScript, das im SharePoint FoundationECMAScript-Objektmodell vorhanden ist, oder integrierte ECMAScript-Funktionen verwenden. Sie können zur Seite auch eigenes ECMAScript hinzufügen und es zum Interagieren mit dem Menüband verwenden.

Wenn Sie das Servermenüband anpassen, können Sie Steuerelemente, Gruppen und Registerkarten hinzufügen, ersetzen und entfernen. Anpassungen am Menüband werden in einem Feature mithilfe von Servermenüband-XML definiert und können in einem Lösungspaket (.wsp-Datei) bereitgestellt werden. Menübandanpassungen können mithilfe der Attribute RegistrationId und RegistrationType auf einen bestimmten Listentyp begrenzt werden. Anpassungen können mithilfe des Attributs Scope in der Feature.xml-Datei auch auf eine Website oder eine bestimmte Webanwendung begrenzt werden.

Das folgende XML zeigt, wie Sie die Funktionalität der Schaltfläche Datenträgerkontingent auf der Seite Websitesammlungen verwalten ersetzen.

<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>

Weitere Informationen zum Anpassen des Menübands "Server" finden Sie unter Anpassen des Server-Menübands.

Erweitern einer Websitesammlung mithilfe benutzerdefinierter Eigenschaften

Die Dienstanwendung "Websiteabonnement" kann sowohl verwaltungsbezogene benutzerdefinierte Eigenschaften als auch mandantenbezogene benutzerdefinierte Eigenschaften speichern. Zu den unterstützten Eigenschaftstypen zählen die folgenden Werte:

  • string

  • int

  • long

  • bool

  • Guid

  • DateTime

Sie können benutzerdefinierte Eigenschaften verwenden, um Mandantenverwaltungsfunktionen, etwa die Mandantenkontingentsverwaltung, zu erweitern.

Das folgende PowerShell-Skript zeigt, wie Sie auf benutzerdefinierte Eigenschaften zugreifen.

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();
    }

Siehe auch

Konzepte

Allgemeiner Leitfaden für Hoster in SharePoint Server 2013