Partilhar via


Restringir ou habilitar o acesso a um aplicativo de serviço no SharePoint Server

APLICA-SE A:yes-img-132013 yes-img-162016 yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint no Microsoft 365

No SharePoint Server, é possível restringir o acesso a um aplicativo de serviço de modo que o aplicativo esteja disponível somente para aplicativos Web especificados.

Por padrão, todos os aplicativos de serviço no farm local estão disponíveis are a todos os aplicativos Web no farm local. Talvez você queira restringir o acesso a um aplicativo de serviço, se hospedar múltiplos clientes no mesmo farm, e queira isolar os aplicativos de serviço de um cliente do aplicativo Web de outro cliente.

Se você restringir o acesso a um aplicativo de serviço e decidir mais tarde que deseja torná-lo disponível para todo o farm, poderá remover a restrição.

Restringir o acesso a um aplicativo de serviço

Para restringir o acesso a um aplicativo de serviço, remova as contas de serviço do aplicativo de serviço. Contrariamente, para habilitar o acesso a um aplicativo de serviço, adicione contas de serviço ao aplicativo de serviço. É possível executar essas tarefas usando o Administração Central ou o PowerShell.

Para restringir o acesso a um aplicativo de serviço, é necessário completar as seguintes tarefas:

  1. Adicionar uma conta de serviço específica ao aplicativo de serviço.

  2. Remover o ID de farm local do aplicativo de serviço.

Os procedimentos neste artigo descrevem como restringir ou restaurar o acesso a um aplicativo de serviço. No entanto, é possível executar as etapas nos procedimentos a fim de adicionar qualquer conta de serviço a qualquer aplicativo de serviço ou para remover qualquer conta de serviço de qualquer aplicativo de serviço.

Por exemplo, o procedimento Para restaurar acesso a todo farm local a um aplicativo de serviço usando a Administração Central descreve explicitamente como adicionar o ID de farm local a um aplicativo de serviço. É possível usar o mesmo procedimento para adicionar outra conta de serviço a um aplicativo de serviço. Para fazer isso, forneça a conta de serviço apropriada em vez do ID de farm local.

Como, por padrão, o ID de farm local fornece acesso a todo farm local para o aplicativo de serviço, é redundante também conceder permissões explícitas ao aplicativo Web local para um aplicativo de serviço, a menos que você também remova o ID de farm local.

Para conceder permissões a um aplicativo de serviço, é necessário recuperar e fornecer a conta de serviço apropriada. Para um aplicativo Web, essa conta também é conhecida como uma conta de identidade do pool de aplicativo.

Depois de conceder permissões a uma conta de serviço e remover o ID de farm local de um aplicativo de serviço, apenas os aplicativos Web gerenciados pela conta de serviço atribuída podem acessar o aplicativo de serviço. É possível atribuir múltiplos aplicativos Web (que possuem contas de serviço de gerenciamento diferentes) ao mesmo aplicativo de serviço repetindo esses procedimentos e adicionando as diversas contas de serviço de aplicativo Web ao aplicativo de serviço.

Cuidado

Se você remover o ID de farm local de um aplicativo de serviço e não atribuir qualquer outra conta de serviço a esse aplicativo de serviço, o aplicativo de serviço ficará indisponível a todos os aplicativos Web.

Restringir o acesso a um aplicativo de serviço usando a Administração Central

Para restringir o acesso a um aplicativo de serviço usando o site da Administração Central do SharePoint, execute estas etapas:

  1. Recuperar a conta de serviço do aplicativo Web.

  2. Adicionar a conta de serviço do aplicativo Web ao aplicativo de serviço.

  3. Remover o ID de farm local do aplicativo de serviço.

Recuperar uma conta de serviço de aplicativo Web usando a Administração Central

  1. Verifique se a conta de usuário que está executando esse procedimento é membro do grupo Administradores de Farm do SharePoint.

  2. Na página inicial do Administração Central, na seção Segurança, clique em Configurar contas de serviço.

  3. Na página Contas de Serviço, selecione os serviços e o componente do aplicativo Web na primeira lista suspensa.

    A conta de serviço é exibida na lista Selecionar uma conta para este componente. Registre o nome da conta de serviço que você usará no próximo procedimento.

  4. Clique em Cancelar para sair da página Contas de Serviço sem fazer qualquer alteração.

Conceder e remover permissões de contas de serviço a fim acessar um aplicativo de serviço usando a Administração Central

  1. Verifique se a conta de usuário que está executando esse procedimento é membro do grupo Administradores de Farm do SharePoint.

  2. Na página inicial do Administração Central, na seção Gerenciamento de aplicativos, clique em Gerenciar aplicativos de serviço.

  3. Na página Gerenciar Aplicativos de Serviço, clique na linha que contém o aplicativo de serviço para o qual você deseja atribuir permissões.

    A faixa de opções fica disponível.

  4. No grupo Compartilhamento da faixa de opções, clique em Permissões.

  5. Na caixa de diálogo Permissões de Ligação , escreva o nome da conta de serviço que obteve no procedimento anterior e, em seguida, clique em Adicionar.

  6. Certifique-se de que o nome da conta de serviço recém-adicionado esteja selecionado no painel central e clique na caixa de seleção apropriada no painel inferior para fornecer o nível de permissão exigido.

  7. No painel central, clique em Farm Local e clique em Remover.

  8. Verifique se a página Permissões de Conexão lista somente a conta de serviço que você deseja acessar o aplicativo de serviço e se a conta de serviço tem as permissões necessárias no aplicativo de serviço. Clique em OK para alterar as permissões ou clique em Cancelar para encerrar a tarefa sem fazer alterações.

É possível conceder e remover permissões de qualquer conta de serviço usando esse procedimento. Para restaurar o ID de farm local para o aplicativo de serviço usando o CentralAdmin_2nd é necessária uma etapa adicional que não se aplica a outras contas de serviço. Para saber mais sobre como fazer isso, confira Restaurar o acesso de todo farm a uma aplicativo de serviço posteriormente neste artigo.

Restringir o acesso a um aplicativo de serviço usando o Microsoft PowerShell

Todos os procedimentos nesta secção partem do princípio de que tem as permissões adequadas.

O processo que restringe o acesso a um aplicativo de serviço usando o PowerShell é mais complexa do que executar a mesma tarefa usando o Administração Central. No PowerShell, você usará alguns procedimentos para coletar e armazenar informações para inserir em procedimentos posteriores.

Depois de iniciar o PowerShell, as etapas restantes para restringir o acesso a um aplicativo de serviço são as seguintes:

  1. Recuperar o ID de farm local.

  2. Recuperar a conta de serviço do aplicativo Web.

  3. Criar uma nova entidade de declarações que contém a conta de serviço do aplicativo Web.

  4. Recuperar o objeto de segurança do aplicativo de serviço.

  5. Adicionar a conta de serviço do aplicativo Web ao objeto de segurança do aplicativo de serviço.

  6. Remover o ID de farm local do objeto de segurança do aplicativo de serviço.

  7. Atribuir o objeto de segurança atualizado para o aplicativo de serviço.

  8. Exibir e revisar as permissões atualizadas

Para iniciar uma sessão do Microsoft PowerShell

  1. 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 os cmdlets do PowerShell.

    Um administrador pode usar o cmdlet Add-SPShellAdmin para conceder permissões para usar cmdlets SharePoint Server.

    Observação

    [!OBSERVAçãO] Se você não possui permissões, entre em contato com o Administrador da instalação ou com o administrador do SQL Server para solicitar permissões. Para mais informações sobre as permissões do PowerShell, consulte Add-SPShellAdmin.

  2. Inicie o Shell de Gerenciamento do SharePoint.

Para recuperar uma conta de serviço de aplicativo Web e criar uma nova entidade de declarações usando o Microsoft PowerShell

  1. No prompt de comando do PowerShell, digite o seguinte comando para recuperar a conta de serviço (ou seja, a conta de identidade do pool de aplicativo) de um aplicativo Web:

    $webapp = Get-SPWebApplication <http://WebApplication>
    $webApp.ApplicationPool.UserName
    

    Onde <http://WebApplication> está o URL da aplicação Web.

    O nome da conta de serviço do aplicativo Web é exibida no prompt de comando.

  2. Para criar uma nova entidade de declarações, digite o seguinte comando:

    $principal = New-SPClaimsPrincipal <ServiceAccount> -IdentityType WindowsSamAccountName
    

    Em <que ServiceAccount> é o nome de utilizador (sob a forma de jane@contoso.com ou contoso\jane) que foi obtido ao executar o comando anterior. A variável $principal conterá a nova entidade de declarações.

Recuperar o objeto de segurança do aplicativo de serviço.

  1. Para recuperar o objeto de segurança do aplicativo de serviço, digite os seguintes comandos. A variável $security irá armazenar o objeto de segurança da aplicação de serviço.

    $spapp = Get-SPServiceApplication -Name "<ServiceApplicationDisplayName>"
    $spguid = $spapp.id
    $security = Get-SPServiceApplicationSecurity $spguid
    

    Em que< ServiceApplicationDisplayName> é o nome a apresentar da aplicação de serviço.

    Importante

    [!IMPORTANTE] É necessário colocar o nome de exibição entre aspas, e ele precisa corresponder exatamente ao nome de exibição do aplicativo de serviço. Isso inclui a capitalização. Se você tiver mais de um aplicativo de serviço com o mesmo nome de exibição (não recomendamos isso), você poderá executar o cmdlet Get-SPServiceApplication sem argumentos para exibir todo os aplicativos de serviço. Em seguida, é possível identificar o aplicativo de serviço diretamente por seu GUID.

    Get-SpServiceApplication
    

    Todos os aplicativos de serviço são listados.

    $spapp = Get-SpserviceApplication -Identity <GUID>
    $spguid = $spapp.id
    

    Em <que GUID> é o GUID da aplicação de serviço para a qual pretende atualizar as permissões.

Para atualizar o objeto de segurança do aplicativo de serviço usando as permissões preferidas

  1. A primeira etapa para atualizar o objeto de segurança do aplicativo de serviço é adicionar a nova entidade de declarações $principal ao objeto de segurança do aplicativo de serviço $security. Para fazer isso, digite o seguinte comando:

    Grant-SPObjectSecurity $security $principal -Rights "<Rights>"
    

    Em <que Rights> são as permissões que pretende conceder. Normalmente, será Controle Total. As permissões disponíveis podem variar entre os aplicativos de serviço.

    Se você não quiser conceder as permissões de Controle Total e não souber quais permissões podem ser concedidas ao aplicativo de serviço, execute os seguintes comandos para retornar as strings de permissão disponíveis:

    $rightslist = Get-SPServiceApplicationSecurity $spapp
    $rightslist.NamedAccessRights
    
  2. Para remover o ID do farm local (que está armazenado na variável $farmID ) do objeto de segurança da aplicação de serviço $security, escreva o seguinte comando:

    Revoke-SPObjectSecurity $security $farmID
    
  3. Para atribuir o objeto de segurança $security atualizado à aplicação de serviço e confirmar que o objeto de segurança da aplicação de serviço está devidamente atualizado, escreva os seguintes comandos:

    Set-SPServiceApplicationSecurity $spapp -ObjectSecurity $security (Get-SPServiceApplicationSecurity $spapp).AccessRules
    

    É possível adicionar ou remover qualquer conta de serviço a um aplicativo de serviço usando estes procedimentos.

Restaurar o acesso de todo farm a uma aplicativo de serviço

É possível restaurar o acesso de todo o farm a um aplicativo de serviço adicionando o ID de farm local ao aplicativo de serviço. Faça isso usando os comandos Administração Central ou o PowerShell. No entanto, é necessário usar o PowerShell para obter o ID de farm local.

Para recuperar a ID do farm local usando o PowerShell

  1. Este procedimento começa após a etapa 4 do procedimento Para iniciar uma sessão do Microsoft PowerShell.

  2. O comando seguinte obtém o ID do farm local, armazena-o na variável $farmID e apresenta o ID na linha de comandos:

    $farmID = Get-SPFarm | select id
    

    Se você quiser restaurar o acesso de todo farm usando o Administração Central, copie esse valor na área de transferência para usá-lo no procedimento a seguir.

    Se você quiser restaurar o acesso de todo farm ao aplicativo de serviço usando o PowerShell, digite os seguintes comandos adicionais no prompt de comando do PowerShell. Você usará as informações recuperadas no procedimento a seguir.

    $claimProvider = (Get-SPClaimProvider System).ClaimProvider 
    $principal = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid
    

Restaurar o acesso de todo farm a um aplicativo de serviço usando a Administração Central

  1. Execute as etapas 1 a 3 do procedimento Conceder e remover permissões para contas de serviço a fim de acessar um aplicativo de serviço usando a Administração Central.

  2. Na caixa de diálogo Permissões de Ligação , copie o ID do farm local que obteve no procedimento anterior e, em seguida, clique em Adicionar.

  3. Certifique-se de que o ID de farm local esteja selecionado no painel central. Clique na caixa de seleção Controle Total no painel inferior.

  4. Clique em OK para restaurar o acesso de todo farm ao aplicativo de serviço ou clique em Cancelar para encerrar a tarefa sem fazer alterações.

Restaurar o acesso de todo farm local a um aplicativo de serviço usando o Microsoft PowerShell

  1. Este procedimento começa após o passo 2 do procedimento Para obter o ID do farm local com o Windows PowerShell.

  2. Para restaurar o ID de farm local recuperado para o objeto de segurança do aplicativo de serviço $security, digite os seguintes comandos:

    $spapp = Get-SPServiceApplication -Name "<ServiceApplicationDisplayName>"
    $spguid = $spapp.id
    $security = Get-SPServiceApplicationSecurity $spguid
    Grant-SPObjectSecurity -Identity $security -Principal $Principal -Rights "Full Control"
    Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
    

    Em que< ServiceApplicationDisplayName> é o nome a apresentar da aplicação de serviço.

    Importante

    [!IMPORTANTE] É necessário colocar o nome de exibição entre aspas, e ele precisa corresponder exatamente ao nome de exibição do aplicativo de serviço. Isso inclui a capitalização. Se você tiver mais de um aplicativo de serviço com o mesmo nome de exibição (não recomendamos isso), você poderá executar o cmdlet Get-SPServiceApplication sem argumentos para exibir todo os aplicativos de serviço. Em seguida, é possível identificar o aplicativo de serviço diretamente por seu GUID.

Exemplos de código do Microsoft PowerShell

No exemplo seguinte, o administrador quer restringir o acesso à aplicação de serviço "Contoso BDC" à aplicação http://contoso/hawaii Web, que é gerida pela conta de serviço "contoso\jane". Ao adicionar "contoso\jane" e remover a conta de serviço do farm local da aplicação de serviço, "Contoso BDC" está restrito apenas às aplicações Web geridas pela conta de serviço "contoso\jane" – neste caso, http://contoso/hawaii.

$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider 
$farmappId = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid 
webapp = get-spwebapplication http://contoso
$webapp.applicationpool
$principal = New-SPClaimsPrincipal contoso/jane -IdentityType WindowsSamAccountName
$spapp = Get-SPServiceApplication -Name "Contoso BDC"
$spguid = $spapp.id
$security = Get-SPServiceApplicationSecurity $spguid
Grant-SPObjectSecurity $security $principal -Rights "Full Control"
Revoke-SPObjectSecurity $security $farmappId
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules

No exemplo a seguir, o acesso ao aplicativo de serviço "Contoso BDC" é restaurado para todos os aplicativos Web no farm local.

$farmid = Get-SPFarm | select id
$claimProvider = (Get-SPClaimProvider System).ClaimProvider 
$farmappId = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmid 
$spapp = Get-SPServiceApplication -Name "Contoso BDC"
$spguid = $spapp.id
$security = Get-SPServiceApplicationSecurity $spguid
Grant-SPObjectSecurity -Identity $security -Principal $farmappId -Rights "Full Control"
Set-SPServiceApplicationSecurity $spguid -ObjectSecurity $security
(Get-SPServiceApplicationSecurity $spguid).AccessRules

Confira também

Conceitos

Adicionar ou remover conexões de aplicativo de serviço de um aplicativo Web no SharePoint Server

Permissões de conta e configurações de segurança no SharePoint Server 2016 e 2019

Outros recursos

Criar um aplicativo Web no SharePoint Server

Get-SPWebApplication

New-SPClaimsPrincipal

Get-SPServiceApplication

Get-SPServiceApplicationSecurity

Grant-SPObjectSecurity

Set-SPServiceApplicationSecurity

Get-SPFarm

Get-SPClaimProvider