Aplicação de Licenças de Utilizador no SharePoint 2013

De entre as várias novas funcionalidades incluídas no SharePoint 2013, há uma que injustamente me passou despercebida até recentemente: User License Enforcement (Aplicação de Licenças de Utilizador). Digo injustamente porque é uma funcionalidade que já fazia falta há muito tempo e acho que merece mais atenção do que tem recebido.

Até agora, qualquer utilizador com acesso a uma farm de SharePoint teria acesso a todas as funcionalidades incluídas na edição instalada do SharePoint (Standard ou Enterprise), independentemente do nível de CAL (Client Access License) que lhe esteja associado. Isto significa que, se uma empresa possui uma farm de SharePoint com licença Enterprise, qualquer utilizador conseguirá aceder a todas as funcionalidades Enterprise, mesmo que lhe tenha sido atribuída uma CAL Standard.

Na maioria das grandes empresas, por questões de otimização de custos, é bastante comum encontrar cenários em que apenas são atribuídas licenças Enterprise a alguns utilizadores, ficando todos os outros com licenças Standard. Uma das formas de assegurar que cada utilizador consegue aceder apenas às funcionalidades incluídas no seu nível de licença é ter duas farms de SharePoint separadas, uma com edição Standard e outra com a edição Enterprise. No entanto, esta não é uma solução aceitável na maioria dos casos.

O SharePoint 2013 resolve esta questão com a nova capacidade de Aplicação de Licenças de Utilizador (ou User License Enforcement) que permite mapear licenças com utilizadores específicos ou com grupos de Active Directory. Quando o User License Enforcement está ativo, os utilizadores conseguem aceder apenas às funcionalidades incluídas na sua licença, as restantes serão bloqueadas. Quando está inativo, que é a opção por omissão, o SharePoint funciona como nas versões anteriores.

A gestão do User License Enforcement é realizada exclusivamente através de cmdlets de PowerShell na SharePoint 2013 Management Shell. Existem oito cmdlets que são explicados em detalhe mais abaixo:

  • Get-SPUserLicensing
  • Enable-SPUserLicensing
  • Disable-SPUserLicensing
  • Get-SPUserLicense
  • Get-SPUserLicenseMapping
  • New-SPUserLicenseMapping
  • Add-SPUserLicenseMapping
  • Remove-SPUserLicenseMapping

Ativar e Desativar o User License Enforcement

Para validar se esta funcionalidade está ativa, deve ser utilizado o cmdlet Get-SPUserLicensing na consola de gestão do SharePoint 2013. Retornará true se a funcionalidade está ativa, e false caso contrário (ver Figura 1). Como indicando anteriormente, o User License Enforcement está inativo por omissão.

SharePoint: Utilização do cmdlet Get-SPUserLicensing
Figura 1: Utilização do cmdlet Get-SPUserLicensing.

Para o ativar, basta executar o cmdlet Enable-SPUserLicensing. Para o desativar, basta executar o cmdlet Disable-SPUserLicensing. Nenhum dos cmdlets requer parâmetros ou retornará (ver Figura 2).

SharePoint: Utilização dos cmdlets Enable-SPUserLicensing e Disable-SPUserLicensing
Figura 2: Utilização dos cmdlets Enable-SPUserLicensing e Disable-SPUserLicensing.

Agora que já falámos sobre como ativar e desativar o User License Enforcement, é aconselhável mantê-lo desativado até que esteja corretamente configurado. De outra forma poderá, involuntariamente, bloquear o acesso às funcionalidades Enterprise para utilizadores que deveria ter acesso a elas, ou permitir o acesso a funcionalidades que os utilizadores não deveriam ser autorizados a aceder.

Obter Licenças Disponíveis

Para validar quais as licenças que estão disponíveis na sua farm de SharePoint, poderá utilizar o cmdlet  Get-SPUserLicense (ver Figura 3).

SharePoint: Get-SPUserLicense
Figura 3: Utilização do cmdlet Get-SPUserLicense.

Existem cinco tipos de licença (embora na minha farm existam apenas quatro):

  • Enterprise
  • Standard
  • Project
  • OfficeWebAppsEdit
  • Duet

As licenças Enterprise e Standard correspondem às duas edições do SharePoint Server, que já existem há várias versões do produto. Para consultar as diferenças entre as duas, basta aceder ao TechNet: http://technet.microsoft.com/en-us/library/sharepoint-online-service-description.aspx#bkmk_FeaturesOnPremise.

Quanto aos outros tipos: a licença Project é utilizada para controlar o acesso às funcionalidades de Project Server, a licença OfficeWebAppsEdit é utilizada para permitir aos utilizadores a edição de documentos nas Office Web Apps, e a licença Duet é utilizada para permitir o acesso às funcionalidades do Duet (integração entre SharePoint e SAP).

Mapeamento de Licenças de Utilizador

Mapear utilizadores em licenças é, na prática, mapear claims em direitos. Para criar um novo mapeamento é necessário executar o cmdlet New-SPUserLicenseMapping que pode ser utilizado de várias formas, dependendo do tipo de claim que está a ser mapeado.

Pode mapear-se um grupo de Active Directory numa licença, executando o seguinte comando:

$mapping = New-SPUserLicenseMapping 
           -SecurityGroup “Enterprise Users” 
           -License “Enterprise”

É também possível mapear um Forms-based Role numa licença usando os parâmetros -RoleProvider e -Role em vez do parâmetro -SecurityGroup:

$mapping = New-SPUserLicenseMapping 
           -RoleProvider “MyRoleProvider” 
           -Role “Enterprise Users” 
           -License “Enterprise”

Finalmente, é possível mapear uma claim numa licença utilizando os parâmetros -ClaimType, -OriginalProvider e -Value, ou apenas o parâmetro -Claim com uma referência para um objecto SPClaim.

SharePoint: Utilização do cmdlet New-SPUserLicenseMapping
Figura 4: Utilização do cmdlet New-SPUserLicenseMapping.

Aquando da criação do mapeamento, é ainda possível especificar qual a Web Application a que o mesmo se aplica, permitindo a configuração de licenças de utilizador por web application. Se não for especificada uma web application, o mapeamento é aplicado a toda a farm.

Uma vez criado o mapeamento, é necessário executar o cmdlet Add-SPUserLicenseMapping para o adicionar à farm:

Add-SPUserLicenseMapping -Mapping $mapping

Obter Mapeamentos de Licenças de Utilizador

Para verificar quais os mapeamentos configurados na farm, pode utilizar-se o cmdlet Get-SPUserLicenseMapping sem quaisquer parâmetros. Note-se que os mapeamentos definidos ao nível de uma web application não serão retornados quando se obtêm os mapeamentos definidos para toda a farm.

SharePoint: Utilização do cmdlet Get-SPUserLicenseMapping
Figura 5: Utilização do cmdlet Get-SPUserLicenseMapping.

Para listar os mapeamentos configurados para uma web application específica, basta adicionar o parâmetro -Web Application com o respetivo endereço URL.

Remover Mapeamentos de Licenças de Utilizador

Para remover um mapeamento utiliza-se o cmdlet Remove-SPUserLicenseMapping. O único parâmetro obrigatório é a identidade do mapeamento (um GUID) que é facilmente obtido executando o cmdlet Get-SPUserLicenseMapping.

Efeitos do User License Enforcement

No que respeita ao User License Enforcement, as duas perguntas mais comuns são:

  • Onde é que a licença é aplicada?
  • O que acontece quando um utilizador tenta aceder a uma funcionalidade que não está disponível para o seu tipo de licença?

Sobre a primeira pergunta, a licença é aplicada nas seguintes situações:

  • Quando é acedida uma página com web parts que requerem uma licença específica (por exemplo a Excel Viewer Web Part ou InfoPath Form Viewer);
  • Ao aceder à galeria de web parts para adicionar uma nova web part a uma página;
  • Ao selecionar um site template na criação de um novo site;
  • Ao tentar editar um documento nas Office Web Apps.

Em relação ao que acontece nestas situações, há duas hipóteses:

  • Um utilizador sem a licença exigida não verá os componentes aos quais não tem acesso (web parts e site templates); ou
  • O SharePoint negará o acesso ao componente para o qual o utilizador não tem licença, apresentando-lhe uma mensagem que explica a razão pela qual não pode aceder-lhe.

Notas Adicionais

Há algumas notas adicionais que me parece importante lembrar:

  • A funcionalidade de User License Enforcement está disponível apenas para ambientes SharePoint 2013 On Premise. O SharePoint Online utiliza um modelo de licenciamento por utilizador pelo que não necessita desta funcionalidade para controlar o acesso a funcionalidades específicas.
  • O User License Enforcement só funciona com Web Applications que usem autenticação baseada em Claims.
  • Uma vez ativado, terá que ser associada uma licença a todos os utilizadores, até às contas de serviço. Se nos esquecermos de associar uma licença a um utilizador, este será classificado como Unlicensed e ser-lhe-á vedado o acesso à maioria das funcionalidades do SharePoint.

Referências

Poderá encontrar informação adicional sobre cmdlets PowerShell no TechNet: http://technet.microsoft.com/en-us/library/jj219609.aspx.

Publicado na edição 44 (PDF) da Revista PROGRAMAR.