Ao quebrar a herança de permissões em um site, biblioteca, lista ou item do SharePoint, você cria permissões exclusivas que não são mais gerenciadas pelo pai. Com o tempo, essas permissões quebradas podem se acumular e se tornar difíceis de rastrear. Isso pode levar a lacunas de segurança onde usuários têm acesso que não deveriam ou onde o acesso é removido acidentalmente. Este artigo explica como identificar todos os locais com permissões exclusivas em um site do SharePoint usando ferramentas nativas e PowerShell, sem software de terceiros.
Principais Conclusões: Auditoria de Permissões Exclusivas no SharePoint
- Configurações do Site > Permissões do Site: Mostra o status atual de herança de permissões para o site raiz e permite verificar subsites.
- SharePoint Management Shell (PowerShell): A maneira mais eficiente de verificar todos os subsites, listas, bibliotecas e itens quanto à herança quebrada.
- Exportação dos resultados para CSV: Permite revisar e arquivar a auditoria completa de permissões em uma planilha legível.
O que causa permissões exclusivas e por que auditá-las
O SharePoint usa herança de permissões por padrão. Um novo subsite herda permissões do conjunto de sites pai. Uma biblioteca herda do site, e uma pasta ou item herda da biblioteca. Quando você quebra essa herança, cria permissões exclusivas para aquele objeto específico. Isso é feito frequentemente para conceder acesso a um grupo específico a uma única biblioteca de documentos sem afetar o resto do site.
O problema é que permissões exclusivas não são automaticamente visíveis na página de permissões padrão do site. Você precisa verificar cada subsite, biblioteca, lista e item individualmente. Com o tempo, permissões exclusivas órfãs podem permanecer após o término de um projeto ou a saída de um usuário da organização. Auditar permissões exclusivas ajuda a encontrar esses objetos, revisar quem tem acesso e decidir se deve restaurar a herança ou atualizar as permissões.
Passos para auditar permissões exclusivas usando a interface do navegador
O método do navegador funciona para sites pequenos com poucos subsites e bibliotecas. Para sites grandes, use o método PowerShell na próxima seção.
- Abra Permissões do Site
Acesse seu site do SharePoint. Selecione o ícone de engrenagem Configurações > Permissões do site. Na página Permissões, observe a parte superior da faixa de opções. Se você vir Gerenciar pai, o site herda permissões do pai. Se vir Excluir permissões exclusivas, o site tem permissões exclusivas. - Verifique cada subsite
Navegue até cada subsite. Repita o passo 1. Anote o nome do subsite e se ele tem permissões exclusivas. Você precisa fazer isso manualmente para cada subsite. - Verifique listas e bibliotecas
Abra uma biblioteca. Selecione o ícone de engrenagem Configurações > Configurações da biblioteca. Em Permissões e Gerenciamento, selecione Permissões para esta biblioteca de documentos. A faixa de opções mostra Gerenciar pai (herdado) ou Excluir permissões exclusivas (exclusivo). Repita para cada lista e biblioteca. - Verifique pastas e itens
Abra uma biblioteca. Selecione uma pasta ou item. Selecione os três pontos > Gerenciar acesso. O painel mostra permissões herdadas ou exclusivas. Repita para cada pasta e item que você suspeita ter herança quebrada.
Passos para auditar permissões exclusivas usando PowerShell
O PowerShell verifica todos os objetos em um conjunto de sites e exporta os resultados para um arquivo CSV. Este método funciona para sites com muitos subsites, bibliotecas e itens.
- Instale o SharePoint Online Management Shell
Abra o PowerShell como administrador. ExecuteInstall-Module -Name Microsoft.Online.SharePoint.PowerShell. Se for solicitado sobre NuGet, selecione Sim. - Conecte-se ao SharePoint Online
ExecuteConnect-SPOService -Url https://seutenant-admin.sharepoint.com. Insira suas credenciais de administrador global ou administrador do SharePoint. - Execute o script de verificação de permissões
Copie e cole o script a seguir no PowerShell. Substituahttps://seutenant.sharepoint.com/sites/seustiepela URL do seu conjunto de sites. O script verifica todos os webs, listas, pastas e itens quanto à herança quebrada e exporta os resultados para um arquivo CSV em sua área de trabalho.
$SiteUrl = "https://seutenant.sharepoint.com/sites/seustie"
$OutputFile = "$env:USERPROFILE\Desktop\UniquePermissionsAudit.csv"
$Results = @()
$Webs = Get-SPOSite -Identity $SiteUrl | Get-SPOSite -Limit All | ForEach-Object { Get-SPOWeb -Site $_.Url }
foreach ($Web in $Webs) {
$WebCtx = $Web.Context
$WebCtx.Load($Web)
$WebCtx.Load($Web.Webs)
$WebCtx.Load($Web.Lists)
$WebCtx.ExecuteQuery()
# Verificar permissões exclusivas do web
if (-not $Web.HasUniqueRoleAssignments) {
$Results += [PSCustomObject]@{
ObjectType = "Web"
Title = $Web.Title
Url = $Web.Url
HasUniquePermissions = $false
}
} else {
$Results += [PSCustomObject]@{
ObjectType = "Web"
Title = $Web.Title
Url = $Web.Url
HasUniquePermissions = $true
}
}
foreach ($List in $Web.Lists) {
if (-not $List.HasUniqueRoleAssignments) {
$Results += [PSCustomObject]@{
ObjectType = "List"
Title = $List.Title
Url = $List.ParentWeb.Url + "/" + $List.Title
HasUniquePermissions = $false
}
} else {
$Results += [PSCustomObject]@{
ObjectType = "List"
Title = $List.Title
Url = $List.ParentWeb.Url + "/" + $List.Title
HasUniquePermissions = $true
}
}
}
}
$Results | Export-Csv -Path $OutputFile -NoTypeInformation
Write-Host "Auditoria concluída. Arquivo salvo em $OutputFile"
O script verifica apenas o web raiz e seus webs filhos imediatos. Para verificar todos os subsites recursivamente, você precisa de um script mais avançado que percorra a WebCollection de cada web. O CSV de saída contém três colunas: ObjectType (Web, List, Library, Folder ou Item), Title, Url e HasUniquePermissions (True ou False).
Problemas comuns ao auditar permissões exclusivas
O script PowerShell não retorna resultados para listas ou bibliotecas
O script acima carrega apenas a propriedade Lists de cada web. Se uma lista ou biblioteca estiver oculta na interface, ela ainda aparece nos resultados. Se você não vir listas, verifique se a URL do conjunto de sites está correta e se você tem direitos de Administrador do Conjunto de Sites. Execute Get-SPOSite -Identity $SiteUrl para confirmar que o site existe.
A interface do navegador não mostra permissões exclusivas, mas o PowerShell mostra muitas
A interface do navegador verifica apenas o web ou lista atual. O PowerShell verifica todos os objetos. Se você nunca quebrou a herança no site, mas os usuários relatam problemas de acesso, verifique as permissões do conjunto de sites pai. Um conjunto de sites pode herdar do nível do tenant, e alterações no nível do tenant podem não aparecer na página de permissões do site.
Você não consegue restaurar a herança após a auditoria
Para restaurar a herança, vá até o objeto com permissões exclusivas. Selecione Configurações > Permissões do site ou Configurações da biblioteca > Permissões para esta biblioteca de documentos. Na faixa de opções, selecione Excluir permissões exclusivas. Isso remove as permissões exclusivas e o objeto passa a herdar do pai novamente. Todas as atribuições de permissões exclusivas atuais são perdidas. Certifique-se de ter um registro das permissões atuais antes de excluí-las.
Método do navegador vs Método PowerShell: Principais diferenças
| Item | Interface do Navegador | PowerShell |
|---|---|---|
| Configuração necessária | Nenhuma | Instalar SharePoint Online Management Shell |
| Escopo da verificação | Um web, lista ou item por vez | Todos os webs, listas, bibliotecas, pastas e itens em um conjunto de sites |
| Formato de saída | Botões visuais na faixa de opções | Exportação para arquivo CSV |
| Melhor para | Sites com menos de 5 subsites e 10 bibliotecas | Sites com muitos subsites, bibliotecas ou itens |
| Detalhes de permissão incluídos | Não, mostra apenas o status da herança | Não, mostra apenas o status da herança (pode ser estendido com código adicional) |
Após concluir a auditoria, revise o arquivo CSV e decida quais objetos precisam de alterações de permissão. Para objetos que não exigem mais acesso exclusivo, restaure a herança. Para objetos que precisam de permissões diferentes, atualize as atribuições de função diretamente. Use o botão Verificar Permissões na faixa de opções para verificar as permissões efetivas de um usuário específico antes de fazer alterações.