Grundlegendes zur Mandantenfähigkeit in SharePoint Server 2013
GILT FÜR:2013 2016 2019 Subscription Edition SharePoint 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 Organisationen, 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 (OE), in dem die Konfiguration der Personenauswahl behandelt wird, nur ohne weitere Anpassung mit der 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-Authentifizierungsmethoden, die sowohl für die anspruchsbasierte Authentifizierung als auch für den 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 Übersicht über Personenauswahl 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.
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.
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.
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) können als Identitätsanbieter-Sicherheitstokendienst (IP-STS) für eine SharePoint Server 2013-Webanwendung konfiguriert werden. 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.
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.
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.
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 Dienstinstanzrollen auf mehreren Computern verteilt sind. Im Bereitstellungsbeispiel wird HTTP für die Webanwendung verwendet. In einer echten Bereitstellung sollte SSL verwendet werden, um Anmeldungen, Inhalte und die Autorisierungstoken zu schützen, 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 & 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 & 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 & 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 & 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 & Proxy, and User Profile Service Instance
If omitted, -ProfileSyncDBServer, -SocialDBServer & -ProfileDBServer are the SharePoint Default DB Server
If omitted, -SyncInstanceMachine is the local machine
#>
Write-Host "Creating $upaName Application & 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
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.
Wechseln Sie auf der Zentraladministration-Website zu Sicherheit.
Wechseln Sie auf der Seite Sicherheit zu Verwaltung von Informationsrechten konfigurieren.
Klicken Sie auf der Seite Verwaltung von Informationsrechten auf Diesen RMS-Server verwenden.
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
- 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.
Starten Sie die SharePoint-Verwaltungsshell.
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 des Workflowdienst-Managers konfiguriert wurde, können Sie Mithilfe von SharePoint Designer Workflows mithilfe der SharePoint 2013-Workflowoption erstellen, wie im folgenden Diagramm dargestellt.
Erweitern der Vorlage für die Mandantenverwaltungswebsite
Hinzufügen oder Entfernen von Links
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();
}