Ao carregar um novo arquivo em uma pasta de biblioteca de documentos do SharePoint, o arquivo pode não herdar as permissões exclusivas da pasta. Em vez disso, o arquivo herda permissões da biblioteca ou site pai. Isso quebra o controle de acesso pretendido e pode expor dados confidenciais a usuários errados. A causa raiz é como o SharePoint lida com herança de permissões em nível de pasta e item. Este artigo explica por que isso acontece e fornece uma correção confiável usando Power Automate.
Principais Conclusões: Quebrando a Herança de Permissões para Novos Arquivos
- Modelo de herança de permissões do SharePoint: Os arquivos herdam permissões da biblioteca pai, não da pasta, a menos que a pasta tenha permissões exclusivas.
- Gatilho do Power Automate: Use o gatilho “Quando um arquivo é criado em uma pasta” para detectar novos uploads em uma pasta específica.
- Ação Enviar solicitação HTTP para o SharePoint: Use esta ação para quebrar a herança de permissões no novo arquivo e aplicar as permissões da pasta.
Por que as Permissões de Pasta Não se Aplicam a Novos Arquivos
O SharePoint usa um modelo hierárquico de herança de permissões. Por padrão, cada item em uma biblioteca de documentos herda permissões da própria biblioteca. Quando você quebra a herança de permissões em uma pasta e atribui permissões exclusivas a ela, essas permissões se aplicam apenas ao objeto da pasta. Qualquer novo arquivo carregado nessa pasta não herda automaticamente as permissões exclusivas da pasta. Em vez disso, o novo arquivo herda permissões da biblioteca pai. Isso é proposital. O SharePoint não propaga permissões de nível de pasta para itens filhos, a menos que você quebre explicitamente a herança em cada item.
O termo técnico para esse comportamento é “herança quebrada no nível do item”. A pasta tem permissões exclusivas, mas os arquivos recém-criados dentro dela não. Para aplicar as permissões da pasta nos novos arquivos, você deve quebrar a herança de permissões em cada arquivo e copiar as atribuições de permissão da pasta para o arquivo. Isso não é possível pela interface do usuário do SharePoint em massa. Você deve usar um fluxo do Power Automate ou um script do PowerShell para automatizar o processo.
Como Corrigir Novos Arquivos que Não Herdam Permissões de Pasta
As etapas a seguir criam um fluxo do Power Automate que é acionado quando um arquivo é adicionado a uma pasta específica. O fluxo quebra a herança de permissões no novo arquivo e aplica as mesmas permissões existentes na pasta.
- Acesse o Power Automate e crie um fluxo de nuvem automatizado
Faça login no Power Automate em make.powerautomate.com. Selecione Criar no menu esquerdo e escolha Fluxo de nuvem automatizado. Dê um nome ao fluxo, como “Aplicar Permissões de Pasta a Novos Arquivos”. - Adicione o gatilho do SharePoint “Quando um arquivo é criado em uma pasta”
Pesquise o gatilho Quando um arquivo é criado em uma pasta e selecione-o. Defina o Endereço do Site para o seu site do SharePoint. Defina a Pasta para a pasta específica que tem permissões exclusivas. Esse gatilho é executado sempre que um arquivo é adicionado a essa pasta. - Adicione uma etapa para obter as atribuições de permissão da pasta
Clique em Nova etapa e pesquise a ação Enviar uma solicitação HTTP para o SharePoint. Defina o Endereço do Site para o seu site. Defina o Método como GET. No campo Uri, insira:_api/web/lists/getbytitle('Documentos')/items({ID_da_Pasta})/roleassignments
Substitua{ID_da_Pasta}pelo ID da pasta. Use o conteúdo dinâmico ID do gatilho, se disponível. Caso contrário, use uma ação separada para recuperar o ID da pasta pelo caminho. - Analise a resposta JSON da solicitação de permissões da pasta
Adicione uma ação Analisar JSON. Defina o Conteúdo como o corpo da resposta da solicitação HTTP. Use este esquema para extrair as atribuições de função:{"type":"object","properties":{"value":{"type":"array","items":{"type":"object","properties":{"PrincipalId":{"type":"string"},"RoleDefinitionBinding":{"type":"string"}}}}}}
Este esquema pode precisar de ajustes com base no seu ambiente. O objetivo é capturar cada ID de principal e definição de função. - Quebre a herança de permissões no novo arquivo
Adicione outra ação Enviar uma solicitação HTTP para o SharePoint. Defina o Método como POST. No campo Uri, insira:_api/web/lists/getbytitle('Documentos')/items({ID_do_Item})/breakroleinheritance(copyRoleAssignments=false, clearSubscopes=true)
Substitua{ID_do_Item}pelo conteúdo dinâmico ID do gatilho. Defina os Cabeçalhos para incluirContent-Type: application/json;odata=verbose. Defina o Corpo como vazio ou{}. - Aplique as permissões da pasta ao novo arquivo
Adicione um controle Aplicar a cada. Em Selecionar uma saída das etapas anteriores, escolha a matriz value do JSON analisado. Dentro do loop, adicione uma terceira ação Enviar uma solicitação HTTP para o SharePoint. Defina o Método como POST. No campo Uri, insira:_api/web/lists/getbytitle('Documentos')/items({ID_do_Item})/roleassignments/addroleassignment(principalid={PrincipalId}, roledefid={RoleDefinitionId})
Substitua{ID_do_Item}pelo ID do arquivo,{PrincipalId}pelo PrincipalId do item atual e{RoleDefinitionId}pelo ID da definição de função do JSON analisado. - Salve e teste o fluxo
Clique em Salvar no topo. Carregue um arquivo de teste na pasta de destino. Verifique o histórico de execução do fluxo para confirmar que foi executado com sucesso. Verifique as permissões do novo arquivo no SharePoint selecionando o arquivo, clicando no ícone de informações e depois em Gerenciar acesso.
Se o Fluxo Não Funcionar ou Você Precisar de uma Alternativa
Fluxo do Power Automate falha com 403 Proibido
A conta do fluxo deve ter pelo menos permissões de Edição na biblioteca de documentos e na pasta de destino. Se a conta não tiver permissões para quebrar a herança em itens, a solicitação HTTP retornará um erro 403. Conceda ao proprietário do fluxo controle total na biblioteca ou use uma conta de serviço com permissões adequadas.
A herança de permissões é quebrada, mas as permissões ficam vazias
Se a pasta em si não tiver atribuições de função explícitas após quebrar a herança, a pasta ainda pode herdar do pai. Verifique se a pasta tem permissões exclusivas com pelo menos um usuário ou grupo atribuído. Se a matriz de atribuições de função da pasta estiver vazia, o fluxo não copiará nada. Atribua pelo menos uma permissão à pasta primeiro.
Você precisa aplicar permissões a arquivos em todas as subpastas
O gatilho neste fluxo monitora uma única pasta. Para cobrir todas as subpastas, crie um fluxo separado para cada subpasta ou use um script do PowerShell com PnP PowerShell. O script pode iterar por todas as pastas com herança quebrada e aplicar permissões a novos arquivos recursivamente.
Correção Manual vs. Automatizada: Comparação
| Item | Correção Manual | Fluxo do Power Automate |
|---|---|---|
| Esforço por arquivo | Alto — requer navegar pelas permissões de cada arquivo | Nenhum após a criação do fluxo |
| Escalabilidade | Não escalável além de alguns arquivos | Lida com centenas de arquivos automaticamente |
| Risco de erro | Alto — fácil perder um arquivo ou atribuir permissões erradas | Baixo — o fluxo aplica exatamente as mesmas permissões da pasta |
| Manutenção | Nenhuma | Requer monitoramento das execuções do fluxo e atualização se as permissões da pasta mudarem |
Agora você entende por que as permissões de pasta não se aplicam a arquivos recém-carregados no SharePoint. A correção exige quebrar a herança de permissões em cada novo arquivo e copiar as atribuições de função da pasta. Use o fluxo do Power Automate neste artigo para automatizar esse processo. Para uma alternativa mais rápida, considere usar PnP PowerShell com um runbook agendado do Azure Automation para verificar e corrigir permissões diariamente.