Noções básicas de multilocação no SharePoint Server 2013
APLICA-SE A:
2013
2016
2019
Subscription Edition
SharePoint in Microsoft 365
Este artigo descreve os componentes e serviços relacionados à multilocação no SharePoint Server 2013 e também fornece orientação arquitetônica, de segurança, operacional e de gerenciamento para ajudar os provedores de serviços na obtenção de um entendimento de multilocação no SharePoint Server 2013 para o planejamento, a concepção, a compilação e o gerenciamento de uma plataforma de hospedagem do SharePoint Server 2013 de multilocação.
Observação
A integração do Microsoft OneDrive com o Yammer não funciona para aplicativos de serviço particionados ou multilocação para implantações locais.
Antes de começar
Introdução à multilocação no SharePoint Server 2013
O que é multilocação?
Antes de apresentarmos a funcionalidade de multilocação no SharePoint Server 2013, você deve entender o conceito geral de multilocação e suas características relacionadas; isso vai ajudá-lo a tomar as decisões adequadas para o planejamento, projeto, operação e gerenciamento de sua plataforma de hospedagem do SharePoint Server 2013 de multilocação.
Multilocação refere-se à capacidade de gerenciar e particionar dados de sites e serviços ou software compartilhados de outra forma, a fim de acomodar vários locatários. Isso é diferente da execução de várias instâncias de um serviço ou da configuração de hardware separado. Nos produtos e tecnologias da Microsoft, a multilocação de serviços cria um ambiente de hospedagem no qual os recursos de farm de servidores são maximizados. Antes de aprender sobre ambientes de hospedagem, é importante compreender a arquitetura de serviços.
Componentes e serviços essenciais para permitir a multilocação no SharePoint Server 2013
Esta seção descreve os componentes e serviços essenciais para habilitar multilocatários no SharePoint Server 2013.
Aplicativo Web
Um aplicativo Web do SharePoint 2013 é composto de um site Serviços de Informações da Internet (IIS), que atua como uma unidade lógica de gestão e segurança para os conjuntos de sites que você criar. Cada aplicativo Web é representado por um site IIS diferente que usa um pool de aplicativos exclusivo ou compartilhado. Quando você cria um aplicativo Web, você também cria um banco de dados de conteúdo e define o método de autenticação usado para conectar ao(s) banco(s) de dados.
Conjunto de sites denominado de host
Conjuntos de sites denominados de host permitem atribuir um nome DNS exclusivo para conjuntos de sites. Por exemplo, você pode intitulá-los como http://TeamA.contoso.com e http://TeamB.fabrikam.com. Isso permite implantar muitos sites que usam nomes DNS únicos no mesmo aplicativo Web. Ele também permite que os provedores de serviços escalonem um ambiente para muitos clientes. Se você não usar conjuntos de sites denominados de host, o aplicativo Web do SharePoint vai conter vários conjuntos de sites baseados no caminho que compartilham o mesmo nome de host (nome DNS). Por exemplo, a Equipe A teria um conjunto de sites em http://contoso.com/sites/teamA e a Equipe B teria um conjunto de sites em http://fabrikam.com/sites/teamB.
Os conjuntos de sites denominados do host são fundamentalmente a única maneira de escalonar para ambientes de multilocação e proporcionar a máxima flexibilidade em relação ao namespace da URL usada. Se usar sites baseados em caminho com multilocação, o limite de software para caminhos gerenciados será alcançado de forma extremamente rápida.
Para obter informações adicionais sobre como planejar para conjuntos de sites denominados do host para SharePoint Server 2013, confira Arquitetura e implantação de conjunto de sites nomeados por host (SharePoint 2013).
Grupos de serviços (grupos de proxy)
Um grupo de serviços, também conhecido como grupo de proxy, é um grupo de aplicativos de serviço selecionados para uso por um aplicativo Web.
Por padrão, todos os aplicativos de serviço são incluídos no grupo padrão a menos que outro grupo seja especificado no momento em que o aplicativo de serviço é criado. Você pode adicionar e remover aplicativos de serviço do grupo padrão a qualquer momento. Quando você cria um aplicativo Web, você pode selecionar o grupo padrão ou pode criar um grupo personalizado de serviços. Você cria um grupo personalizado de serviços, selecionando apenas os aplicativos de serviço que você deseja que o aplicativo Web use.
Os grupos personalizados não são reutilizáveis em vários aplicativos da Web. Cada vez que você selecionar "personalizado" ao criar um aplicativo Web, você está selecionando os serviços apenas para o aplicativo Web que está criando.
Proxy do serviço
Quando você cria um aplicativo de serviço, é criado ao mesmo tempo um proxy para o aplicativo de serviço. Um proxy é uma entidade virtual que conecta aplicativos Web a aplicativos de serviço. Os proxies são listados na página Gerenciar aplicativos de serviço no site da Administração Central do SharePoint.
Os proxies são criados automaticamente se você usar Administração Central ou o Assistente de Configuração de Produtos do SharePoint 2016 para criar aplicativos de serviço. Se você usar oMicrosoft PowerShell para criar aplicativos de serviço, os proxies nem sempre são criados automaticamente e devem ser criados usando o Microsoft PowerShell.
Alguns proxies podem incluir configurações que podem ser alteradas. Por exemplo, se um aplicativo Web estiver conectado a várias instâncias do serviço de metadados gerenciados, você deve indicar os proxies que estão conectados ao aplicativo de serviço principal que hospeda a taxonomia corporativa. De um modo geral, essas configurações se transferem para a configuração de nível de locatário ao usar a multilocação.
Aplicativos de serviço
Um aplicativo de serviço é uma representação lógica de um determinado serviço e sua configuração de segurança e de gerenciamento é que definem seu comportamento operacional. Exemplos incluem Metadados Gerenciados e Perfis de usuário. Diferentes aplicativos de serviços são implementados de diferentes maneiras e isso vai influenciar o design de soluções de multilocação.
Para determinar a lista de aplicativos de serviço que está disponível em SharePoint Server 2013 e sua disponibilidade entre edições do SharePoint com o recurso de multilocação, consulte a seção Serviços e funcionalidades em Orientação geral para hosters no SharePoint Server 2013
Licenciamento e pacotes de recursos
Um pacote de recursos no SharePoint é uma forma de agrupar um conjunto de recursos no escopo do site ou no escopo da Web. Uma vez que os recursos do SharePoint são agrupados, podem ser associados à assinatura do local (ou seja, locatário). Todos os conjuntos de sites da assinatura do site (locatário) podem usar apenas os recursos no escopo do site ou da Web que fazem parte do pacote de recursos. Esta capacidade permite que os provedores de serviços forneçam ofertas de serviços em camadas com base em diferentes conjuntos de recursos.
No SharePoint Server 2013, um novo recurso foi adicionado para atribuir licenças diferentes do SharePoint para cada usuário. Esse recurso também ativa as verificações de licença do SharePoint no tempo de execução. Isso oferece flexibilidade adicional para que um provedor de serviços compile diferentes ofertas de serviços ao longo de um modelo de implantação simplificada. Em versões anteriores do SharePoint, os provedores de serviços tinham que criar diferentes modelos de implantação do SharePoint para cada versão do SharePoint. Para obter informações adicionais sobre os recursos do SharePoint, consulte a seção disponibilidade de recursos do SharePoint entre soluções locais do seguinte artigo: Descrição do Serviço do SharePoint.
Gerenciamento de Direitos de Informação
A Integração do Gerenciamento de Direitos de Informação no SharePoint Server 2013 adiciona suporte para multilocação, que permite a capacidade de gerenciar configurações do Gerenciamento de Direitos de Informação no nível de locatário.
Considerações sobre o projeto de arquitetura
Esta seção descreve várias considerações para arquitetar um ambiente de multilocação do SharePoint Server 2013. Conforme descrito anteriormente no documento, a multilocação traz algumas características únicas a considerar quando você arquitetar e projetar seu ambiente do SharePoint Server 2013. Você tem que considerar esses fatores com base em suas necessidades para tomar as decisões apropriadas.
Compreender os limites no SharePoint Server 2013
Entender os limites de software do SharePoint Server 2013 vai ajudá-lo a tomar as decisões corretas para escolher a arquitetura adequada para um ambiente de multilocação do SharePoint. Para obter informações adicionais sobre os principais limites para um banco de dados de conteúdo e conjunto de sites conforme eles aplicam a um ambiente de multilocação do SharePoint Server 2013, confira Limites do banco de dados de conteúdo para o SharePoint Server 2016 e Limites do conjunto de software para o SharePoint Server 2016.
Farm compartilhado vs. farm dedicado
Usar um farm compartilhado para hospedar conjuntos de sites de multilocação em um único aplicativo Web proporciona uma melhor escalabilidade em comparação ao uso de um aplicativo Web dedicado por locatário.
Use um aplicativo Web dedicado e pool de aplicativos por cliente somente se você precisa satisfazer as exigências de isolamento.
Não permita que código de confiança total seja implantado nos sites.
Não permita personalizações que afetam os recursos compartilhados, como o arquivo web.config.
Use conjuntos de sites denominados de host para criar vários conjuntos de sites no nível da raiz (sites com nome de domínio) ao longo de um aplicativo Web.
Um aplicativo Web vs. vários aplicativos Web
Use aplicativos Web dedicados para os locatários que exigem personalizações que afetam os recursos compartilhados por meio de um aplicativo Web, como o arquivo web.config.
Ao combinar vários locatários em um único farm, use um aplicativo Web dedicado do SharePoint para todo o conteúdo autenticado e um aplicativo Web dedicado separado para todo o conteúdo anônimo. Isso vai exigir duas IDs de assinaturas separadas para os locatários com ambos os tipos de conteúdo. Isso também vai simplificar o licenciamento.
Alguns recursos do SharePoint estão vinculados no nível de aplicativo Web, como a configuração da Criação do Conjunto de sites de autoatendimento. Depois de ativo, todos os locatários sob o mesmo aplicativo Web serão capazes de criar conjuntos de sites.
Projeto de ambiente de farm único
Em um ambiente de hospedagem de multiorganização em que os dados e a administração de locatário são isolados, a configuração de serviços compartilhados e particionados é muito importante. Este exemplo fornece uma implementação prática de serviços particionados e também fornece recomendações sobre como implantar sites de clientes.
Este exemplo detalha as seguintes maneiras em que os sites dos clientes podem ser implantados em um farm:
Pool de aplicativos dedicado e Web
Pool de aplicativo compartilhado e aplicativo Web dedicado
Aplicativo Web compartilhado
Sites autenticados
Sites não autenticados
Use um pool de aplicativos dedicados por cliente somente se você precisa satisfazer exigências de isolamento. Use aplicativos Web dedicados para os locatários que exigem personalizações que afetam os recursos que são compartilhados em um aplicativo Web, como o arquivo web.config.
Ao combinar vários locatários em um único aplicativo Web, use um aplicativo Web dedicado para todo o conteúdo autenticado e um aplicativo Web dedicado separado para todo o conteúdo anônimo. Isso vai exigir duas IDs de assinaturas separadas para os locatários com ambos os tipos de conteúdo. Isso também vai simplificar o licenciamento.
Não permita que código de confiança total seja implantado nos sites.
Não permita personalizações que afetam os recursos compartilhados, como o arquivo web.config.
No exemplo a seguir (sites autenticados), um conjunto de sites diferente denominado de host diferente é usado para cada empresa. A Empresa C inclui dois diferentes conjuntos de sites denominados de host. Abaixo de cada conjunto de sites denominado de host de nível superior, um caminho gerenciado é usado para criar uma segunda camada de conjuntos de sites de nível superior para sites como sites de equipe, Meus Sites, conteúdo de intranet publicado ou sites de divisão separados.
Projeto de ambiente em camadas
Conforme descrito anteriormente, há muitas coisas a considerar quando você planeja sua plataforma de hospedagem de multilocação do SharePoint Server 2013, entre esses fatores estão o custo, o gerenciamento simplificado, o isolamento de recursos, o desempenho e a escalabilidade.
Conforme sua base de clientes cresce, você pode ter dificuldade para atender a todos os requisitos de todos os seus clientes em um único ambiente. Nesse ponto, certas escolhas teriam que ocorrer quando você procurar equilibrar esses fatores.
Em um caso como este, uma alternativa que convém você considerar é um projeto de ambiente em camadas no qual vários ambientes do SharePoint atendem às diversas necessidades de seus clientes. Cada ambiente iria incidir sobre diferentes aspectos de suas ofertas de serviços, tais como baixo custo, alta densidade, maior isolamento de recursos e melhor qualidade de serviços (QoS) com custos mais elevados, e assim por diante.
Esta abordagem de projeto de ambiente em camadas pode fornecer diferentes acordos de nível de serviço aos seus clientes. Como resultado, você pode servir a uma ampla variedade de clientes, simplificar o gerenciamento e as operações, reduzir os custos de gerenciamento e aumentar suas margens de lucro.
Considerações de segurança
Esta seção discute as várias considerações de segurança para o planejamento e o design de uma plataforma de hospedagem de multilocação do SharePoint Server 2013. Deste ponto em diante, qualquer seção, tais como a seção Unidade Organizacional (OU), que fala sobre a configuração do people picker só funciona sem personalização adicional com a autenticação do Windows.
O SharePoint Server 2013 é compatível com vários métodos de autenticação e provedores de autenticação para os seguintes tipos de autenticação:
Autenticação do Windows
Autenticação baseada em formulários
Autenticação baseada em tokens do SAML
O tipo de autenticação do Windows aproveita seu provedor de autenticação do Windows existente e os protocolos de autenticação que um ambiente de domínio do Windows usa para validar as credenciais de clientes conectados. Os métodos de autenticação do Windows, que são usados pela autenticação baseada em declarações e modo clássico, incluem o seguinte:
NTLM
Kerberos
Digest
Básica
A autenticação baseada em formulários é um sistema de gerenciamento de identidade baseada em declarações que é criado sobre a associação do ASP.NET e a autenticação de provedor de função. A autenticação baseada em formulários pode ser usada contra as credenciais armazenadas em um provedor de autenticação, como o seguinte:
Serviços de Domínio Active Directory (AD DS)
Um banco de dados como um banco de dados do SQL Server
Um armazenamento de dados do Lightweight Directory Access Protocol (LDAP) como o Novell eDirectory, Novell Directory Services (NDS) ou Sun ONE
A autenticação baseada em formulários valida usuários com base em credenciais que os usuários inserem em um formulário de logon (normalmente uma página da Web). As solicitações não autenticadas são redirecionadas para uma página de logon, onde o usuário deve fornecer credenciais válidas e enviar o formulário. O sistema emite um cookie para solicitações autenticadas que contém uma chave para restabelecer a identidade de pedidos posteriores.
Para usar a autenticação baseada em formulários para autenticar os usuários em um sistema de gerenciamento de identidade que não é baseado no Windows ou um que seja externo, você deve registrar o provedor de associação e o gerenciador de funções em vários arquivos web.config. O SharePoint Server 2013 usa a interface do gerenciador de funções padrão do ASP.NET para coletar informações do grupo sobre o usuário atual. Cada função ASP.NET é tratada como um grupo de domínios pelo processo de autorização no SharePoint Server 2013. Você registra um gerenciador de funções em um arquivo web.config exatamente como você registra um provedor de associação para autenticação.
Se você quiser gerenciar funções ou usuários de associação no site do Administração Central, você deve registrar o provedor de associação e o gerenciador de funções no arquivo web.config do site do Administração Central. Você também deve registrar o provedor de associação e o gerenciador de funções no arquivo web.config do aplicativo Web que hospeda o conteúdo e no arquivo web.config do Serviço de Token de Segurança.
A autenticação baseada em token SAML no SharePoint Server 2013 usa o protocolo SAML 1.1 e o protocolo WS-F PRP. Ela requer coordenação com administradores de um ambiente baseado em declarações, seja seu próprio ambiente interno ou um ambiente de parceiro. Se usar o Serviços de Federação do Active Directory (AD FS) 2.0, você tem um ambiente de autenticação baseada em token SAML.
Para aplicativos Web que usam a autenticação baseada em declarações, o People Picker é um controle que está disponível no SharePoint Server 2013. O controle do People Picker usa provedores de declarações para listar, resolver, pesquisar e determinar a exibição "amigável" de usuários, grupos e declarações. Para obter informações adicionais sobre a configuração do people picker, consulte Seletor de Pessoas e visão geral sobre os provedores de declarações.
As zonas representam diferentes caminhos lógicos para ganhar acesso aos mesmos sites em um aplicativo Web. Cada aplicativo Web pode incluir até cinco zonas. Quando você cria um aplicativo Web, o Administração Central cria a zona denominada Padrão. Para criar zonas adicionais, estenda o aplicativo Web e selecione um dos nomes de zona restantes: Intranet, Extranet, Internet ou Personalizado.
Unidades Organizacionais
As Unidades Organizacionais (OUs) organizam os usuários e objetos computadores no ambiente do Active Directory. Para fins de hospedagem, a estrutura da unidade organizacional poderia ser organizada conforme mostrado no diagrama a seguir.

No mínimo, você vai querer vincular uma diretiva de grupo à raiz do domínio, OU dos controladores de domínio, OU dos servidores do SharePoint e OU dos clientes.
Raiz do domínio
A segurança que será aplicada a todo o domínio é aplicada na Diretiva de Domínio. Essas configurações estão contidas em Objetos de Diretiva de Grupo (GPOs) que se aplicam a todo o domínio.
OU dos controladores de domínio
Os controladores de domínio mantêm os dados mais confidenciais em sua organização, dados que controlam a própria configuração de segurança. Os GPOs aplicados a este nível são usados para configurar e proteger os controladores de domínio no domínio.
OU dos servidores do SharePoint
Os servidores do SharePoint têm uma função única não incluída em outros servidores do diretório. Colocar esses servidores em seu próprio OU permite que políticas únicas sejam aplicadas a esses servidores. Eles também podem ser separados de outros servidores no diretório. Sub-OUs podem ser criadas quando GPOs diferentes precisam ser criados (como servidores de conteúdo de acesso anônimo versus servidores de conteúdo autenticado).
OU de clientes
Esta OU de nível superior permite que todas as contas de usuário sejam segregadas do resto do diretório. O próximo nível de OUs contém as OUs de cliente. Existe uma UO para cada cliente. Isso permite que todas as contas de usuário e contas de computador de um cliente sejam segregadas das de outros clientes. Além disso, esta é a estrutura de OU necessária para suportar a Sincronização de Perfil de Usuário em implementações de multilocação.
Para dar aos usuários a impressão de que eles estão entrando em seu próprio domínio personalizado, use o Editor de Interfaces de Serviço do Active Directory (ADSI Edit) ou outra ferramenta do AD para editar o atributo uPNSuffixes de cada OU de Cliente conforme mostrado no diagrama a seguir.

Após a configuração do atributo uPNSuffixes de uma OU de Cliente, seu valor estará disponível para associar-se com uma conta de usuário dentro da OU do Cliente, conforme mostrado no diagrama a seguir.

Autenticação do usuário
A autenticação do usuário é a validação da identidade de um usuário em um provedor de autenticação, que é um diretório ou banco de dados que contém as credenciais do usuário e pode confirmar que o usuário as enviou corretamente. Um exemplo de um provedor de autenticação é Serviços de Domínio Active Directory (AD DS). Outros nomes comuns para um provedor de autenticação são diretório do usuário e repositório de atributos .
Um método de autenticação é uma troca específica de credenciais da conta e outras informações que confirmam a identidade de um usuário. O resultado do método de autenticação prova que, normalmente na forma de um token que contém declarações, um provedor de autenticação autenticou um usuário.
Um tipo de autenticação é uma maneira específica de validar as credenciais em um ou mais provedores de autenticação, às vezes usando um protocolo padrão do setor. Um tipo de autenticação pode usar diversos métodos.
Após a identidade de um usuário ser validada, o processo de autorização determina os sites, conteúdos e outros recursos que o usuário pode acessar.
O planejamento de métodos e tipos de autenticação de usuário deve determinar os seguintes itens:
Os métodos e tipos de autenticação de usuário para cada aplicativo Web e zona.
A infraestrutura de autenticação necessária para suportar os métodos e tipos de autenticação determinados.
Como migrar seus aplicativos web e zonas atuais que usam autenticação de modo clássico para usar a autenticação baseada em declarações.
Serviços de Federação do Active Directory (AD FS)
O SharePoint Server 2013 suporta autenticação com base em declarações. Os Serviços de Federação do Active Directory (AD FS) podem ser configurados para atuar como um Serviço de Token de Segurança do Provedor de Identidade (IP-STS) de um aplicativo Web do SharePoint Server 2013. Nesta configuração, o AD FS emite tokens de segurança baseados em SAML consistindo em declarações para que computadores cliente possam acessar aplicativos Web que usam a autenticação baseada em declarações. Você pode usar um provedor de identidade alternativo que não seja o AD FS. Mas ele deve suportar o padrão WS-Federation. Também ao usar a configuração do AD FS, o código personalizado é necessário.
Para obter informações adicionais sobre como configurar a autenticação de declarações baseada em SAML com o AD FS para SharePoint Server 2013, consulte Configurar a autenticação de declarações baseadas em SAML com o AD FS no SharePoint Server.
Considerações de gerenciamento e operacionais
Esta seção discute várias considerações de gerenciamento e operacionais para um ambiente de multilocatários do SharePoint Server 2013.
Gerenciamento de capacidade
O gerenciamento de capacidade é um processo contínuo porque nenhuma implementação permanece estática sobre o conteúdo e uso. Você tem que planejar para o crescimento e mudança, para que o ambiente do SharePoint Server 2013 possa continuar a fornecer uma solução de negócios eficaz. Para obter mais informações sobre o gerenciamento de capacidade no SharePoint Server 2013, consulte Visão geral de gerenciamento de capacidade e dimensionamento do SharePoint Server 2013.
Gerenciamento de Aplicativos
O aplicativos para SharePoint fornece um novo método para fornecer informações ou funcionalidade específicas para um site do SharePoint. Um aplicativo para SharePoint é um aplicativo pequeno, autônomo e fácil de usar que resolve uma necessidade específica do usuário final ou da empresa. Os proprietários do site podem descobrir e baixar aplicativos para SharePoint de um Repositório do SharePoint público ou do Catálogo de Aplicativos interno da empresa e instalá-los em seus sites do SharePoint. Esses aplicativos para SharePoint integram o melhor da Web com SharePoint Server 2013. Eles não substituem os recursos do SharePoint nem os pacotes de solução, que personalizam ou aumentam os sites do SharePoint. Ao contrário de recursos e soluções, que os administradores do farm ou do conjunto de sites precisam instalar, o aplicativos para SharePoint são aplicativos autônomos que os proprietários de sites podem adicionar aos seus sites do SharePoint. O aplicativos para SharePoint têm um ciclo de vida simples: eles podem ser instalados, atualizados e desinstalados pelos proprietários do site.
O Serviço de Gerenciamento de Aplicativos no SharePoint Server 2013 é habilitado à multilocação. A maioria das configurações de aplicativo e funcionalidade de gerenciamento é exposta por meio do site de Administração de locatário e permite que cada administrador de locatários defina suas configurações individuais.
Backup e restauração
Ao realizar operações de restauração de backup não relacionadas a locatário em uma plataforma de hospedagem de multilocação do SharePoint Server 2013, você pode seguir a orientação geral para a realização de operações de backup e restauração em ambientes do SharePoint Server 2013, consulte Backup e restauração no SharePoint Server.
Observe que no SharePoint Server 2013, a plataforma de fluxo de trabalho é independente da plataforma do SharePoint. Portanto, as operações de backup e restauração no Gerenciador de Fluxo de Trabalho devem ser coordenadas com as operações de backup e restauração do SharePoint para garantir que ambas permaneçam em sincronia uma com a outra. Para saber mais sobre como planejar as operações de backup e restauração para o Gerenciador de Serviço de Fluxo de Trabalho, consulte Recuperação de Desastres e Restauração de Escopo no Workflow Manager 1.0
Quando você executar operações de backup e restauração específicas do locatário em uma plataforma de hospedagem de multilocação do SharePoint Server 2013, você pode ter que manter os seguintes componentes relacionados ao locatário em sincronia um com o outro: aplicativos de serviços, fluxo de trabalho, bancos de dados de conteúdo e conjuntos de sites.
Aplicativos de serviço
Os aplicativos de serviço que estão configurados no Modo de partição têm um ou mais bancos de dados associados que contêm dados específicos ao locatário. Embora você possa executar operações de backup e restauração gerais nesses aplicativos de serviços tanto nos níveis de banco de dados e do aplicativo, existem comandos limitados para realizar operações de backup e restauração detalhadas específicas ao locatário nesses aplicativos de serviço ou em seus bancos de dados.
Considerações de aplicativo de serviço
Serviço de gerenciamento de aplicativos
O serviço de Gerenciamento de aplicativos é o aplicativo de serviço usado para controlar o recurso do aplicativo para SharePoint apresentado no SharePoint Server 2013. O aplicativos para SharePoint fornece um novo método para fornecer informações ou funcionalidades específicas para um site do SharePoint. Um aplicativo para SharePoint aplicativo pequeno, autônomo e fácil de usar que resolve uma necessidade específica do usuário final ou da empresa. O Serviço de Gerenciamento de Aplicativo não suporta o Modo de Partição, no entanto, é habilitado à Assinatura de Site de forma nativa. No ambiente de multilocação do SharePoint, a maior parte da funcionalidade de Gerenciamento de Aplicativo (ou seja, Gerenciar Catálogo de Aplicativos, Gerenciar licenças de aplicativo, Permissões do aplicativo e assim por diante.) é obtida usando o Site de Administração de locatário.
O diagrama a seguir mostra o gerenciamento de aplicativos no site de administração de locatários.

Serviço Conectividade de Dados Corporativos
Uma vez configurado no modo de partição, toda a configuração do serviço Conectividade de Dados Corporativos move-se para a administração de locatários. No entanto, o modelo de site de administração de locatários não inclui o link para esta página, que pode ser adicionado usando a técnica de personalização na seção de modelo de site Estendendo a administração de locatários
Serviço de Repositório Seguro
Uma vez configurado no modo de partição, a geração de chaves de criptografia permanece uma configuração de nível de farm realizada por meio da Administração Central ou do Windows PowerShell. O restante da configuração do serviço de Repositório Seguro é transferido para a administração de locatários. No entanto, o modelo de site de administração de locatários não inclui o link para esta página, que pode ser adicionado usando a técnica de personalização na seção de modelo de site Estendendo a administração de locatários.
Serviço de metadados gerenciados
Uma vez configurado no modo de partição, toda a configuração se transfere para administração de locatários, e a publicação de Tipo de conteúdo é ativada por padrão.
Serviço de pesquisa
Muitas funções relacionadas à configuração de pesquisa específica do locatário são expostas no site de administração de locatários como mostra o diagrama a seguir.

Observação
Muitos dos cmdlets *.EnterpriseSearch* Microsoft PowerShell agora são habilitados à partição e podem ser usados para automatizar algumas funções de configuração e gerenciamento expostas no site de administração de locatários.
Serviço Perfil de Usuário
Um grande número de elementos de configuração são transferidos para administração de locatários; no entanto, grande parte da configuração de sincronização do perfil permanece em um nível de farm e é aplicável a todos os locatários, conforme ilustrado na figura a seguir.

Fluxo de trabalho
Conforme observado anteriormente, no SharePoint Server 2013, a plataforma de fluxo de trabalho é separada da plataforma do SharePoint. A plataforma de fluxo de trabalho em si usa um ou mais bancos de dados. Embora você possa executar operações de backup e restauração gerais em nível de banco de dados nesses bancos de dados, não existem comandos, nem utilitários para a realização de operações de backup e restauração específicas do locatário nesses bancos de dados de fluxo de trabalho.
Bancos de dados de conteúdo
Se um locatário tiver uso exclusivo de um ou mais bancos de dados de conteúdo dedicados, você pode realizar operações de restauração e backup gerais em nível de banco de dados nesses bancos de dados.
Observação
Não é possível atingir um uso exclusivo de um ou mais bancos de dados de conteúdo dedicados por meio do uso de recursos padrão do produto, por exemplo, a criação de site pessoal. Este é um exemplo de onde a personalização é necessária a fim de atender a uma determinada oferta de nível de serviço.
O seguinte scrip do Microsoft PowerShell mostra como executar uma ação de backup inicial em um banco de dados de conteúdo de locatário.
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!"
Conjuntos de sites
Você pode executar operações de backup e restauração específicas em um conjunto de sites de locatário. A ferramenta que você escolher usar depende do tamanho do próprio conjunto de sites. Os cmdlets do Microsoft PowerShell são uma escolha apropriada para conjuntos de sites de pequeno e médio porte.
O seguinte script do Microsoft PowerShell mostra como executar uma ação de backup em um conjunto de sites de locatário.
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!"
Monitoramento
Existem muitas ferramentas que permitem monitorar o SharePoint Server 2013 e solucionar problemas. Diferentes ferramentas abrangem diferentes aspectos do ambiente, embora possa haver áreas sobrepostas. Considere quais ferramentas podem maximizar seus benefícios de monitoramento. Para obter orientação sobre como planejar o monitoramento para SharePoint Server 2013, consulte Plano para monitoramento no SharePoint Server.
Gerenciamento de pacote de serviços
Conforme descrito anteriormente, um pacote de recursos pode ser usado para agrupar diferentes recursos e associá-los a uma assinatura do site (ou seja, locatário). Todos os conjuntos de sites na assinatura do site (locatário) podem usar apenas os recursos no escopo do site ou da Web que fazem parte do pacote de recursos. Esta capacidade permite que os provedores de serviços forneçam ofertas de serviços em camadas com base em diferentes conjuntos de recursos. São criados pacotes de recursos que usam o cmdlet do New-SPSiteSubscriptionFeaturePack para criar o contêiner de pacote de recursos e o cmdlet Add-SPSiteSubscriptionFeaturePackMember adicionar os recursos individuais para o contêiner.
O seguinte script do Microsoft PowerShell mostra como criar um pacote de recursos em nível de locatário representando recursos do SharePoint Foundation 2013 e armazena a ID do pacote de recursos no recipiente de propriedades do farm.
Observação
O aplicativo de serviço de configurações de inscrição deve estar presente antes de executar scripts que funcionam com pacotes de serviços.
<#
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
Gerenciamento de licenciamento
No SharePoint Server 2013, foi adicionado um novo recurso de gerenciamento de licenças. Os administradores de farm agora podem atribuir licenças a usuários e permitir verificações de licença do tempo de execução. Ao utilizar esta nova funcionalidade, você pode garantir que apenas os usuários que têm a licença apropriada usem um recurso específico. A funcionalidade também simplifica o modelo de implantação, porque você não precisa mais compilar farms separados para as edições Standard e Enterprise do SharePoint Server.
As licenças de usuário são atribuídas por meio do mapeamento de declarações para um tipo de licença conhecido. Por exemplo, uma declaração pode ser um grupo de segurança dos Serviços de Domínio Active Directory (AD DS). Ao mapear o grupo de segurança ContosoFinanceDept para uma licença Enterprise, você atribui efetivamente uma licença Enterprise a todos os membros do grupo. Aos usuários que fizerem logon no SharePoint Server são atribuídas as declarações. O SharePoint Server examina as declarações de usuários para determinar a sua licença, se um usuário não tiver uma licença para utilizar um determinado recurso, o SharePoint bloqueia o acesso a esse recurso no tempo de execução.
Essa implementação de licença do SharePoint Server 2013 é gerenciada pelo uso de novos cmdlets do Microsoft PowerShell. Por padrão, o licenciamento é desativado no SharePoint Server. No entanto, os administradores podem optar por ativá-la usando o Microsoft PowerShell. Para obter informações adicionais sobre como configurar o licenciamento no SharePoint Server 2013, consulte Configure licensing in SharePoint Server.
Gerenciamento do ciclo de vida
Embora este white paper descreva as principais considerações de infraestrutura ao projetar uma solução de multilocação do SharePoint 2013 e forneça os scripts de linha de base para a configuração, o gerenciamento geral do ciclo de vida das operações é imperativo. Por exemplo, a administração de locatário personalizada, o desprovisionamento de assinaturas, arquivamento, gerenciamento de usuários, redefinição de senha de autoatendimento e quotas são todos áreas comuns que exigem uma combinação do Windows PowerShell e esforços de personalização adicionais para fornecer uma oferta de serviços completa. Cada provedor de serviços terá necessidades diferentes nesta esfera e é extremamente importante garantir que esses requisitos sejam parte da definição de escopo inicial e trabalho de design para a plataforma de infraestrutura.
Instalação e configuração
Esta seção descreve as etapas gerais para instalar e configurar uma plataforma de hospedagem de multilocatários do SharePoint Server 2013.
Reconhecimento
Esta seção fornece detalhes e contém os scripts do PowerShell que demonstram a criação e a configuração de vários componentes. Estes scripts geralmente são fornecidos para demonstrar os requisitos de configuração para multilocação e, portanto, não representam a ordem de provisionamento ideal, no entanto, eles podem servir como base para o desenvolvimento de sua própria solução de script de extremidade-a-extremidade personalizada.
Os scripts Microsoft PowerShell contidos nas seguintes sub-seções são baseados (inteiramente ou em parte) no trabalho de Spencer Harbar (http://www.harbar.net) e são reproduzidos aqui com o seu consentimento gracioso. Consulte os seguintes documentos para ver a sua obra original.
Os scripts do PowerShell fornecidos incluem variáveis, que devem ser modificadas para se adequarem ao seu ambiente.
Exemplo de implantação
Esta seção apresenta um exemplo de implantação que faz uso de um único aplicativo Web de hospedagem usando conjuntos de sites denominados de host e caminhos gerenciados de cabeçalho de host. Ele é implantado em um único servidor por uma questão de simplicidade, este é o modelo de projeto pretendido para multilocação com o SharePoint 2013 e pode ser estendido para uma implantação onde as funções de instância de serviço são articuladas em vários computadores. O exemplo de implantação usa HTTP para o aplicativo Web. Em uma implantação real, SSL deve ser usado para proteger os tokens de autorização, conteúdo e entrada usados com Aplicativos do SharePoint e outros serviços relacionados ao OAuth2, como o Gerenciador de Fluxo de Trabalho.
Configuração de DNS
Como os conjuntos de sites denominados de host serão usados para um ambiente de multilocação do SharePoint, você deve configurar seu DNS (isto é, criar registros de DNS apropriados, etc.) com base no seu plano. Para obter mais orientação sobre como planejar conjuntos de sites denominados de host para SharePoint Server 2013, confira Arquitetura e implantação de conjunto de sites nomeados por host (SharePoint 2013).
Se você também pretende oferecer suporte ao aplicativos para SharePoint, você também deve configurar o DNS para suportar o seu ambiente. Para obter informações adicionais sobre como configurar um ambiente de aplicativos para o SharePoint Server 2013, consulte Configurar um ambiente para aplicativos do SharePoint Server.
Configuração do Active Directory
Conforme descrito anteriormente, para dar suporte à multilocação no SharePoint, o Active Directory deve ser corretamente estruturado, criando uma estrutura de unidade organizacional hierárquica para suportar a sincronização de perfil de usuário para cada assinatura. Você também tem que criar contas de serviços apropriadas para o seu ambiente. Para obter informações adicionais sobre como planejar contas de serviço para o SharePoint Server 2013, consulte Planejar contas administrativas e de serviço no SharePoint Server. Neste exemplo de implantação, as três contas de serviço a seguir são usadas:
SPFarm - a Conta do Farm do SharePoint
SPServices - a identidade do pool de aplicativos que hospeda os pontos de extremidades do aplicativo de serviços
SPContent - a identidade do pool de aplicativos que hospeda o aplicativo de Web de conteúdo
A criação e configuração do farm do SharePoint
O script a seguir Microsoft PowerShell mostra como criar um farm do SharePoint.
<#
1. Farm Creation.ps1
Creates a new SharePoint Farm
Creates Central Administration on Port 8080
Update initial variables as needed to reflect your environment
Script will prompt for the password of the farm account
#>
asnp Microsoft.SharePoint.PowerShell
$databaseServer = "SQLSP1"
$configDatabase = "HostingFarm_Config"
$adminContentDB = "HostingFarm_Content_Admin"
$passphrase = "Password1"
$farmAccountName = "FABRIKAM\spfarm"
$farmAccount = Get-Credential $farmAccountName
$passphrase = (ConvertTo-SecureString $passphrase -AsPlainText -force)
Write-Host "Creating Configuration Database and Central Admin Content Database..."
New-SPConfigurationDatabase -DatabaseServer $databaseServer -DatabaseName $configDatabase `
-AdministrationContentDatabaseName $adminContentDB `
-Passphrase $passphrase -FarmCredentials $farmAccount
$spfarm = Get-SPFarm -ErrorAction SilentlyContinue -ErrorVariable err
if ($spfarm -eq $null -or $err) {
throw "Unable to verify farm creation."
}
Write-Host "ACLing SharePoint Resources..."
Initialize-SPResourceSecurity
Write-Host "Installing Services ..."
Install-SPService
Write-Host "Installing Features..."
Install-SPFeature -AllExistingFeatures
Write-Host "Creating Central Administration..."
New-SPCentralAdministration -Port 8080 -WindowsAuthProvider NTLM
Write-Host "Installing Help..."
Install-SPHelpCollection -All
Write-Host "Installing Application Content..."
Install-SPApplicationContent
Write-Host "Farm Creation Done!"
Grupo de proxies, aplicativo Web de hospedagem e caminhos gerenciados
Inicialmente, uma conta gerenciada é criada para o pool de aplicativos que hospeda o aplicativo Web de conteúdo. Um novo grupo de proxies é criado, seguido pelo aplicativo Web. Finalmente, a configuração do aplicativo Web para permitir a criação de site pessoal e a criação de caminhos gerenciados compartilhados é realizada. É extremamente importante criar um conjunto de sites "raiz" no aplicativo Web de hospedagem, mesmo que este conjunto de sites não seja acessado por usuários finais. Isso é necessário para suporte e comportamento operacional correto do SharePoint 2013.
Observação
Este exemplo usa HTTP para o aplicativo Web.
<#
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!"
Serviços não particionados
Nesta fase, os aplicativos de serviço não particionados podem ser criados. Esses aplicativos de serviços são exigidos no farm para operações normais (por exemplo, o serviço de estado) ou não precisam ser particionados a fim de suportar a multilocação, pois não armazenam dados. Para isso, outra conta gerenciada é necessária, e em seguida cada aplicativo de serviço é criado, por sua vez.
O seguinte script do Microsoft PowerShell mostra como criar os aplicativos de serviço não particionados.
<#
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!"
Criação e configuração de aplicativos de serviço particionados
As seguintes seções descrevem os procedimentos do Microsoft PowerShell necessários para criar e configurar cada aplicativo de serviço que suporta o particionamento. O mesmo padrão geral se aplica a cada aplicativo de serviço com exceção da Pesquisa e Perfis de usuário. No entanto, existem pequenas diferenças relacionadas aos proxies de aplicativos de serviço.
Serviço Conectividade de Dados Corporativos
O seguinte script do Microsoft PowerShell apresenta como criar o aplicativo do serviço Conectividade de Dados Corporativos no modo de partição e adicioná-lo a um grupo de proxies de serviço personalizado.
$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
Serviço de metadados gerenciados
O seguinte script do Microsoft PowerShell apresenta como criar o aplicativo de serviço de metadados gerenciados no modo de partição e adicioná-lo a um grupo de proxy de serviço personalizado.
$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
Serviço de tradução automática
O serviço de tradução automática suporta a multilocação, criando seu aplicativo de serviço no modo de partição. Não há nenhuma configuração específica do locatário e o serviço é gerenciado no nível de farm. Seu banco de dados está atuando efetivamente como uma fila e, portanto, tem que ser habilitado à partição/locatário.
O seguinte script do Microsoft PowerShell mostra como criar o aplicativo de serviço de Tradução Automática no Modo de Partição.
$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
Serviço de repositório seguro
Uma vez configurado no modo de partição, a geração de chaves de criptografia permanece uma configuração de nível de farm realizada por meio da Administração Central ou do Windows PowerShell. O restante da configuração do serviço de Repositório Seguro é transferido para a administração de locatários. No entanto, o modelo de site de administração de locatários não inclui o link para esta página, que pode ser adicionado usando a técnica de personalização na seção de modelo de site Estendendo a administração de locatários.
O seguinte script do Microsoft PowerShell mostra como criar o aplicativo do Serviço de Repositório Seguro no modo de partição e como adicioná-lo a um grupo de proxies de serviço personalizado.
$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
Serviço de Pesquisa
O seguinte script do Microsoft PowerShell mostra como criar o aplicativo de serviço de pesquisa no modo de partição.
Observação
O script para este aplicativo de serviço usa o parâmetro Partitioned em vez do parâmetro 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!"
Serviços de Automação do Word
O aplicativo de serviço Serviços de Automação do Word suporta o Modo de partição. Não há cmdlet para criar um proxy.
O seguinte script do Microsoft PowerShell mostra como criar o aplicativo de serviço do Word Automation Services no Modo de Partição.
$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
Serviço Perfil de Usuário
A criação do serviço Perfil de Usuário usando o PowerShell conforme necessário quando o provisionamento no modo particionado apresenta um desafio quando não estiver executando o Windows PowerShell como a conta do farm do SharePoint. Para contornar esse problema e iniciar com êxito o serviço de Sincronização de Perfil do Usuário, aproveitamos o cmdlet do Start-Process e simulamos a execução do script como a conta do farm.
Dois scripts são necessários, o primeiro script cria o UPA e o segundo script chama o primeiro script.
O script do Microsoft PowerShell a seguir mostra como criar o aplicativo Serviço de Perfil de Usuário no Modo de Partição e adicioná-lo a um grupo de Proxy de Serviço personalizado...
Observação
Este script NÃO deve ser executado diretamente, pois nesse caso será impossível iniciar a instância de serviço de Sincronização de Perfil de Usuário. Este script deve ser salvo localmente e seu local deve ser anotado.
<#
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}
O segundo script abaixo realiza o trabalho necessário para chamar o script de criação de UPA e iniciar as instâncias de serviço necessárias. A localização do script de criação de UPA deve ser atualizada na variável $upaScriptFile. Além disso, algumas permissões necessárias são definidas no UPA.
$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$upaScriptfile = "c:\partitionedUPAcreation.ps1"
$upaName = "User Profile Service"
$user = "FABRIKAM\Administrator"
$serviceUser = "FABRIKAM\spservices"
# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName
# Start User Profile Service Instance
Write-Host "Starting User Profile Service Instance..."
Get-SPServiceInstance | ? { $_.TypeName -eq "User Profile Service" } | Start-SPServiceInstance
Write-Host "Restarting SPTimerV4..."
Restart-Service SPTimerV4
# Grab the Farm Account credentials
Write-Host "Please enter the Farm Account Password:"
$farmAcct = (Get-SPFarm).DefaultServiceAccount
$cred = Get-Credential $farmAcct.Name
# Create a new process to initiate User Profile Service Application creation under UAC elevation
Write-Host "Creating new process for UPA creation..."
Start-Process $PSHOME\powershell.exe -Credential $cred -ArgumentList "-Command Start-Process $PSHOME\powershell.exe -ArgumentList `"'$upaScriptfile'`" -Verb Runas" -Wait
Get-Date
Write-Host "UPA Created!"
# Start the User Profile Synchronization Service Instance
Write-Host "Starting the UPS Service Instance..."
Get-Date
$upa = Get-SPServiceApplication | where-object {$_.Name -eq $upaName}
$upsInstanceName = "User Profile Synchronization Service"
[String]$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($cred.Password));
Get-SPServiceInstance | where-object {$_.TypeName -eq $upsInstanceName} | % {
$_.Status = [Microsoft.SharePoint.Administration.SPObjectStatus]::Provisioning
$_.IsProvisioned = $false
$_.UserProfileApplicationGuid = $upa.Id
$_.Update()
$upa.SetSynchronizationMachine($_.Server.Address, $_.Id, $cred.UserName, $password) # this can cause update conflicts
Start-SPServiceInstance $_
}
Write-Host "Waiting on $upsInstanceName to provision..."
Write-Host "Baseline time is 130 seconds"
[int]$time = 0
$ups = Get-SPServiceInstance | where-object {$_.TypeName -eq $upsInstanceName}
while(-not ($ups.Status -eq "Online")){
sleep 10;
Write-Host "Still waiting... ($time seconds elapsed)"
$ups = Get-SPServiceInstance | where-object {$_.TypeName -eq $upsInstanceName}
$time = $time + 10
}
Write-Host "$upsInstanceName provisioned, it took $time seconds."
Get-Date
Write-Host "UPS Service Instance Started"
# UPA Settings and Permissions, do this after UPS SI Started and Get it again to prevent update conflicts
Write-Host "Configuring NETBios Domain Names and UPA Permissions..."
$upa = Get-SPServiceApplication | where-object {$_.Name -eq $upaName}
$upa.NetBIOSDomainNamesEnabled=1
$upa.Update()
function Grant-ServiceAppPermission($app, $user, $perm, $admin) {
$sec = $app | Get-SPServiceApplicationSecurity -Admin:$admin
$claim = New-SPClaimsPrincipal -Identity $user -IdentityType WindowsSamAccountName
$sec | Grant-SPObjectSecurity -Principal $claim -Rights $perm
$app | Set-SPServiceApplicationSecurity -ObjectSecurity $sec -Admin:$admin
}
Grant-ServiceAppPermission $upa $user "Full Control" $false
Grant-ServiceAppPermission $upa $serviceUser "Full Control" $false
Configuração do gerenciamento de direitos de informação
O suporte ao gerenciamento de direitos de informação para multilocação pode ser ativado usando o site da Administração Central do SharePoint ou os cmdlets do Microsoft PowerShell.
Ativar o Gerenciamento de Direitos de Informação usando o Administração Central
Verifique se a conta de usuário que está executando esse procedimento é membro do grupo Administradores de Farm do SharePoint e do grupo de Administradores no computador que está executando o Administração Central.
No site do Administração Central, vá para Segurança.
Na página Segurança, vá para Configurar gerenciamento de direitos de informação
Na página Gerenciamento de direitos de informação, clique em Usar este servidor RMS.
Certifique-se de marcar a caixa de seleção chamada Marque esta caixa em configurações multilocatário para permitir que os locatários definam as configurações de IRM no nível do locatário.
Ativar o Gerenciamento de Direitos de Informação usando o Microsoft PowerShell
- Verifique se você possui as seguintes associações:
A função de servidor fixa securityadmin na instância do SQL Server.
A função de banco de dados fixa db_owner em todos os bancos de dados que devem ser atualizados.
O grupo de administradores no servidor no qual você está executando o cmdlets do PowerShell.
Um administrador pode usar o cmdlet Add-SPShellAdmin para conceder permissões para usar cmdlets do SharePoint Server 2013.
Observação
Se você não possui permissões, entre em contato com o Administrador da configuração ou com o administrador do SQL Server para solicitar permissões. Para saber mais sobre as permissões do PowerShell, confira Add-SPShellAdmin.
Abra o Shell de Gerenciamento do SharePoint.
No prompt de comando do PowerShell, digite o seguinte comando:
Set-SPIRMSettings -IrmEnabled -UseActiveDirectoryDiscovery -SubscriptionScopeSettingsEnabled
Não há opções de configuração interna para IRM dentro do site de Administração de locatário. Para aplicar a configuração, use o cmdlet Set-SPSiteSubscriptionIRMConfig conforme mostrado no seguinte script:
$subscription=Get-SPSiteSubscription "http://www.contoso.com"
Set-SPSiteSubscriptionIRMConfig -identity $subscription -IrmEnabled -CertificateServerUrl "http://rms.contoso.com"
Geralmente, tal configuração é realizada como parte do provisionamento de locatários.
Provisionamento e gerenciamento de locatários
Esta seção descreve os processos e as abordagens para provisionamento de locatários e personalização do ambiente de multilocação.
Provisionamento de locatários
Para criar um locatário, siga as etapas na tabela.
| Tasks |
Steps |
|---|---|
| 1. Criar uma assinatura do site. |
No prompt de comando do Microsoft PowerShell, digite a seguinte sintaxe: $sub = New-SPSiteSubscription |
| 2. Atribua um pacote de recursos para a assinatura do site e configure a OU personalizada usando o people picker. |
No prompt de comando do Microsoft PowerShell, digite a seguinte sintaxe: Set-SPSiteSubscriptionConfig -id $sub -FeaturePack $customerFeatures -UserAccountDirectoryPath "OU=$customerName,OU=Customers,DC=contoso,DC=com" |
| 3. Crie um ou mais conjuntos de sites a serem atribuídos à assinatura do site. |
No prompt de comando do Microsoft PowerShell, digite a seguinte sintaxe: 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 |
O seguinte script do PowerShell como criar um site de administração de locatários que usa o modelo TENANTADMIN#0. Se o locatário for configurado para usar um pacote de recursos corporativos, o script do Microsoft PowerShell executa operações adicionais, ou seja, ele cria o conjunto do Meus Sites.
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!"
Esta abordagem pode ser ainda mais personalizada para conter outra configuração de locatário, como para o fluxo de trabalho, aplicativos e IRM. Geralmente, esse script é encapsulado em uma função ou cmdlets personalizados, o que lhe permite ser executado repetidamente para os futuros locatários.
Serviço de fluxo de trabalho
O SharePoint Server 2013 traz um grande avanço para o fluxo de trabalho, incluindo recursos corporativos, como a autoria totalmente declarativa, mensagens REST e Service Bus, escalabilidade elástica e confiabilidade de serviços gerenciados. O SharePoint 2013 pode usar um novo serviço de fluxo de trabalho compilado nos componentes da Windows Workflow Foundation do NET Framework 4.5. O novo serviço é chamado de Gerenciador de Fluxo de Trabalho e foi projetado para desempenhar um papel central na empresa.
A plataforma de fluxo de trabalho do SharePoint 2013 torna-se disponível para você e suas ferramentas, somente depois que você baixar e instalar o novo serviço do gerenciador de fluxo de trabalho e configurá-lo para se comunicar com o farm do SharePoint Server 2013. Para obter informações adicionais sobre como instalar e configurar o serviço do gerenciador de fluxo de trabalho do SharePoint 2013, consulte Instalar e configurar o fluxo de trabalho para o SharePoint Server 2013.
Para configurar o serviço de fluxo de trabalho, use o cmdlet Register-SPWorkflowService para registrar o farm com o gerenciador de serviço de fluxo de trabalho no modo de partição. Ao fazer isso, use o parâmetro SPSite para passar a URL de qualquer conjunto de sites de locatário existente de seu farm e use o parâmetro ScopeName para definir um escopo de fluxo de trabalho nomeado para seu farm.
O seguinte script do Windows PowerShell mostra como registrar o farm do SharePoint com o gerenciador de fluxo de trabalho no modo de partição.
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!"
Para permitir um locatário específico para o fluxo de trabalho do SharePoint, você deve configurar o proxy do serviço de fluxo de trabalho. Ao fazer isso, obtenha uma referência para o conjunto de sites raiz do locatário e registre-o com o proxy de serviço de fluxo de trabalho.
O seguinte script do Microsoft PowerShell mostra como habilitar um locatário para o Fluxo de trabalho do SharePoint.
Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue
#Get the Workflow Service Application Proxy
$wfProxy = Get-SPWorkflowServiceApplicationProxy
#Create a credential object
$user = New-Object System.Net.NetworkCredential ("domain\Admin", "Password")
#Get the SPSite object of the root site collection of the tenant
$site = Get-SPSite http://tenant.domain.com
#Set the Workflow address for the tenant site (reference our workflow scope)
$wfProxy.SetWorkflowServiceAddress($site,"http://WFSvr01:12291/HostingFarm")
#Register the proxy with tenant site collection
$wfProxy.Register($site,$user)
#Connect the tenant site collection to the proxy
$wfProxy.Connect($site)
Write-Host "Tenant Workflow Registration Script Completed!"
Após configurar o locatário para usar o gerenciador de serviço de fluxo de trabalho, você poderá usar o SharePoint Designer para criar fluxos de trabalho usando a opção de fluxo de trabalho do SharePoint 2013, como mostrado no diagrama a seguir.

Estender o modelo de site de administração de locatário
Adicionar ou remover links
Use o esquema de definição de ação personalizada para adicionar e remover links na página principal do site de administração de locatários.
A seguinte definição de recurso mostra como adicionar um novo grupo, vários links e remover o link para a página de gerenciamento de conjuntos de sites.
<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>
Para saber mais sobre ações personalizadas, como as IDs padrão para links internos, consulte Esquema de definição de ação personalizada.
Personalizar a faixa de opções
A faixa de opções do servidor no SharePoint Server 2013 pode ser personalizada usando o XML da faixa de opções do servidor e ECMAScript (JavaScript, JScript). O XML define os controles na faixa de opções. O ECMAScript realiza ações em uma página ou em um objeto na página. Você pode usar ECMAScript que existe no modelo de objeto do SharePoint do FoundationECMAScript ou funções ECMAScript embutidas. Você também pode adicionar seu próprio ECMAScript à página e usá-lo para interagir com a faixa de opções.
Ao personalizar a faixa de opções do servidor, você pode adicionar, substituir e remover controles, grupos e guias. As personalizações da faixa de opções são definidas usando o XML da faixa de opções do servidor em um recurso e podem ser implantadas em um pacote de solução (arquivo .wsp). As personalizações da faixa de opções podem ser delimitadas para um tipo de lista específico usando os atributos RegistrationId e RegistrationType. As personalizações também podem ser delimitadas para um site ou um aplicativo Web em particular usando o atributo Scope no arquivo Feature.xml.
O XML a seguir mostra como substituir a funcionalidade do botão Cota de Disco na página Gerenciar Conjuntos de Sites.
<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>
Para obter informações adicionais sobre como personalizar a faixa de opções do servidor, consulte Personalizar a faixa de opções do servidor.
Estendendo uma assinatura de site usando propriedades personalizadas
O aplicativo de serviço de assinatura de site pode armazenar tanto as propriedades personalizadas administrativas quanto as propriedades personalizadas de locatário. Os tipos de propriedade suportados incluem os seguintes valores:
string
int
long
bool
Guid
DateTime
Você pode usar as propriedades personalizadas para estender a funcionalidade de gerenciamento de locatário, como o gerenciamento de cotas de locatário.
O seguinte script do PowerShell mostra como acessar as propriedades personalizadas.
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();
}