Los permisos de carpeta no se aplican a los archivos recién cargados: causa raíz y solución
🔍 WiseChecker

Los permisos de carpeta no se aplican a los archivos recién cargados: causa raíz y solución

Cuando cargas un archivo nuevo en una carpeta de una biblioteca de documentos de SharePoint, es posible que el archivo no herede los permisos únicos de la carpeta. En su lugar, el archivo hereda los permisos de la biblioteca principal o del sitio. Esto rompe el control de acceso previsto y puede exponer datos confidenciales a usuarios no autorizados. La causa raíz es cómo SharePoint maneja la herencia de permisos a nivel de carpeta y elemento. Este artículo explica por qué sucede y proporciona una solución fiable mediante Power Automate.

Puntos clave: Romper la herencia de permisos para archivos nuevos

  • Modelo de herencia de permisos de SharePoint: Los archivos heredan permisos de la biblioteca principal, no de la carpeta, a menos que la carpeta tenga permisos únicos.
  • Desencadenador de Power Automate: Utiliza el desencadenador “Cuando se crea un archivo en una carpeta” para detectar nuevas cargas en una carpeta específica.
  • Acción Enviar solicitud HTTP a SharePoint: Utiliza esta acción para romper la herencia de permisos en el archivo nuevo y aplicar los permisos de la carpeta.

ADVERTISEMENT

Por qué los permisos de carpeta no se aplican a los archivos recién cargados

SharePoint utiliza un modelo de herencia de permisos jerárquico. De forma predeterminada, cada elemento de una biblioteca de documentos hereda los permisos de la propia biblioteca. Cuando rompes la herencia de permisos en una carpeta y asignas permisos únicos a esa carpeta, esos permisos se aplican solo al objeto de carpeta. Cualquier archivo nuevo cargado en esa carpeta no hereda automáticamente los permisos únicos de la carpeta. En su lugar, el archivo nuevo hereda los permisos de la biblioteca principal. Esto es por diseño. SharePoint no propaga los permisos de nivel de carpeta a los elementos secundarios a menos que rompas explícitamente la herencia en cada elemento.

El término técnico para este comportamiento es “herencia rota a nivel de elemento”. La carpeta tiene permisos únicos, pero los archivos recién creados dentro de ella no. Para aplicar los permisos de carpeta a los archivos nuevos, debes romper la herencia de permisos en cada archivo y luego copiar las asignaciones de permisos de la carpeta al archivo. Esto no es posible a través de la interfaz de usuario de SharePoint de forma masiva. Debes usar un flujo de Power Automate o un script de PowerShell para automatizar el proceso.

Cómo solucionar que los archivos nuevos no hereden los permisos de carpeta

Los siguientes pasos crean un flujo de Power Automate que se activa cuando se agrega un archivo a una carpeta específica. El flujo rompe la herencia de permisos en el archivo nuevo y aplica los mismos permisos que existen en la carpeta.

  1. Ve a Power Automate y crea un flujo de nube automatizado
    Inicia sesión en Power Automate en make.powerautomate.com. Selecciona Crear en el menú izquierdo y luego elige Flujo de nube automatizado. Ponle a tu flujo un nombre como “Aplicar permisos de carpeta a archivos nuevos”.
  2. Agrega el desencadenador de SharePoint “Cuando se crea un archivo en una carpeta”
    Busca el desencadenador Cuando se crea un archivo en una carpeta y selecciónalo. Establece la Dirección del sitio en tu sitio de SharePoint. Establece la Carpeta en la carpeta específica que tiene permisos únicos. Este desencadenador se ejecuta cada vez que se agrega un archivo a esa carpeta.
  3. Agrega un paso para obtener las asignaciones de permisos de la carpeta
    Haz clic en Nuevo paso y busca la acción Enviar una solicitud HTTP a SharePoint. Establece la Dirección del sitio en tu sitio. Establece el Método en GET. En el campo URI, ingresa:
    _api/web/lists/getbytitle('Documents')/items({Folder_ID})/roleassignments
    Reemplaza {Folder_ID} con el ID de la carpeta. Usa el contenido dinámico ID del desencadenador si está disponible. Si no, usa una acción separada para recuperar el ID de la carpeta por su ruta.
  4. Analiza la respuesta JSON de la solicitud de permisos de carpeta
    Agrega una acción Analizar JSON. Establece el Contenido en el cuerpo de la respuesta de la solicitud HTTP. Usa este esquema para extraer las asignaciones de roles:
    {"type":"object","properties":{"value":{"type":"array","items":{"type":"object","properties":{"PrincipalId":{"type":"string"},"RoleDefinitionBinding":{"type":"string"}}}}}}
    Este esquema puede necesitar ajustes según tu entorno. El objetivo es capturar cada ID de principal y definición de rol.
  5. Rompe la herencia de permisos en el archivo nuevo
    Agrega otra acción Enviar una solicitud HTTP a SharePoint. Establece el Método en POST. En el campo URI, ingresa:
    _api/web/lists/getbytitle('Documents')/items({Item_ID})/breakroleinheritance(copyRoleAssignments=false, clearSubscopes=true)
    Reemplaza {Item_ID} con el contenido dinámico ID del desencadenador. Establece los Encabezados para incluir Content-Type: application/json;odata=verbose. Establece el Cuerpo en vacío o {}.
  6. Aplica los permisos de la carpeta al archivo nuevo
    Agrega un control Aplicar a cada. En Seleccionar una salida de pasos anteriores, elige la matriz valor del JSON analizado. Dentro del bucle, agrega una tercera acción Enviar una solicitud HTTP a SharePoint. Establece el Método en POST. En el campo URI, ingresa:
    _api/web/lists/getbytitle('Documents')/items({Item_ID})/roleassignments/addroleassignment(principalid={PrincipalId}, roledefid={RoleDefinitionId})
    Reemplaza {Item_ID} con el ID del archivo, {PrincipalId} con el PrincipalId del elemento actual y {RoleDefinitionId} con el ID de definición de rol del JSON analizado.
  7. Guarda y prueba el flujo
    Haz clic en Guardar en la parte superior. Sube un archivo de prueba a la carpeta de destino. Revisa el historial de ejecución del flujo para confirmar que se ejecutó correctamente. Verifica los permisos del archivo nuevo en SharePoint seleccionando el archivo, haciendo clic en el icono de información y luego en Administrar acceso.

ADVERTISEMENT

Si el flujo no funciona o necesitas una alternativa

El flujo de Power Automate falla con 403 Prohibido

La cuenta del flujo debe tener al menos permisos de edición en la biblioteca de documentos y en la carpeta de destino. Si la cuenta no tiene permisos para romper la herencia en los elementos, la solicitud HTTP devuelve un error 403. Otorga al propietario del flujo control total sobre la biblioteca o usa una cuenta de servicio con permisos adecuados.

La herencia de permisos se rompe pero los permisos están vacíos

Si la carpeta en sí no tiene asignaciones de roles explícitas después de romper la herencia, la carpeta puede seguir heredando del elemento principal. Verifica que la carpeta tenga permisos únicos con al menos un usuario o grupo asignado. Si la matriz de asignaciones de roles de la carpeta está vacía, el flujo no copia nada. Asigna al menos un permiso a la carpeta primero.

Necesitas aplicar permisos a archivos en todas las subcarpetas

El desencadenador de este flujo observa una sola carpeta. Para cubrir todas las subcarpetas, crea un flujo separado para cada subcarpeta o usa un script de PowerShell con PnP PowerShell. El script puede iterar a través de todas las carpetas con herencia rota y aplicar permisos a los archivos nuevos de forma recursiva.

Solución manual vs. automatizada: comparación

Elemento Solución manual Flujo de Power Automate
Esfuerzo por archivo Alto: requiere hacer clic a través de los permisos para cada archivo Ninguno después de crear el flujo
Escalabilidad No escalable más allá de unos pocos archivos Maneja cientos de archivos automáticamente
Riesgo de error Alto: es fácil omitir un archivo o asignar permisos incorrectamente Bajo: el flujo aplica exactamente los mismos permisos que la carpeta
Mantenimiento Ninguno Requiere monitorear las ejecuciones del flujo y actualizarlo si cambian los permisos de la carpeta

Ahora entiendes por qué los permisos de carpeta no se aplican a los archivos recién cargados en SharePoint. La solución requiere romper la herencia de permisos en cada archivo nuevo y copiar las asignaciones de roles de la carpeta. Usa el flujo de Power Automate de este artículo para automatizar este proceso. Para una alternativa más rápida, considera usar PnP PowerShell con un runbook de Azure Automation programado para escanear y corregir permisos diariamente.

ADVERTISEMENT