Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

SharePoint + Excel: hitta risklänkar snabbt

Rickard Andersson Partner, Nodenordic.se

Extern delning i SharePoint börjar “litet”, och sprider sig sedan tyst över webbplatser, bibliotek och slumpmässiga nästlade mappar tills ingen kan svara på en grundfråga: vad är exponerat just nu?

IT-administratörer får oftast skulden när något läcker, men ansvariga för regelefterlevnad och driftschefer känner av det lika mycket. Den här automatiseringen för SharePoint-riskrevision ersätter timmar av klickande i behörighetsskärmar med en enkel, Excel-klar lista som du faktiskt kan agera på.

Det här arbetsflödet skannar din tenant, hittar anonyma länkar och gäst-/extern åtkomst, och outputtar bara det riskfyllda. Du får se vad det fångar, hur det fungerar och vad du behöver för att köra det schemalagt.

Så här fungerar automatiseringen

Se hur den här löser problemet:

n8n Workflow Template: SharePoint + Excel: hitta risklänkar snabbt

Utmaningen: extern delning gömmer sig mitt framför ögonen

SharePoint-behörigheter är bedrägligt lätta att ställa till. Någon delar en mapp “tillfälligt”, någon annan skapar en vem som helst-länk för en leverantör, och månader senare är samma länk fortfarande giltig, fortfarande sökbar och fortfarande utanför policyn. Det värsta är skalan. Delning kan finnas på webbplatsnivå, biblioteksnivå, i en mapp tre nivåer ner eller på en enskild fil med bruten arvshantering. Att kontrollera detta manuellt över en hel tenant går långsamt, och du känner dig aldrig klar.

Det eskalerar snabbt. Här är var det fallerar i riktiga team.

  • Du slutar med att bara granska de “viktiga” webbplatserna, vilket gör att risken sprider sig överallt annars.
  • Behörighetsarv bryts i nästlade mappar, så en kontroll på toppnivå ger dig falsk trygghet.
  • Anonyma länkar och gästanvändare ser olika ut beroende på var du tittar, vilket gör att exponeringar missas.
  • När ledningen ber om bevis fastnar du med att ta skärmdumpar av behörighetspaneler i stället för att exportera en korrekt formaterad rapport.

Lösningen: skanna SharePoint automatiskt och exportera en risklista

Det här arbetsflödet använder Microsoft Graph för att gå igenom din SharePoint Online-tenant och lyfta fram enbart de objekt som delas externt. Det börjar med att hämta alla SharePoint-webbplatser och samlar sedan in enheterna (dokumentbiblioteken) i varje webbplats. Därifrån kör det ett rekursivt underarbetsflöde som går igenom mappar och filer från roten och neråt, utan att hoppa över nästlat innehåll. För varje upptäckt objekt hämtar det behörigheter, slår ihop behörigheterna med objektmetadata och tillämpar sedan ett filtreringssteg som flaggar anonyma länkar samt externa eller gäst-användare. Till slut återstår en normaliserad datamängd: objektnamn, typ, URL, senast ändrad, var det ligger och beviset som visar varför det flaggades.

Arbetsflödet startar när du kör det manuellt (eller senare, schemalagt). Därefter traverserar det webbplatser och bibliotek, inspekterar rekursivt varje mapp och fil och outputtar en kort lista med enbart externt delade objekt. Den outputen är det du skickar till Excel-rapportering eller vidare åtgärder.

Vad som ändras: före vs. efter

Praktisk effekt

Säg att du hanterar 30 SharePoint-webbplatser med 5 dokumentbibliotek vardera, och att du stickprovar bara 10 objekt per bibliotek. Om varje kontroll tar cirka 2 minuter (öppna, behörigheter, bekräfta länktyp, anteckna), blir det ungefär 50 timmar manuellt arbete. Med det här arbetsflödet startar du skanningen en gång, låter den traversera tenanten och exporterar bara externt delade objekt. Även om skanningen kör ett tag i bakgrunden sjunker din hands-on-tid till cirka 30 minuter: starta, granska Excel-listan och fördela åtgärder.

Krav

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • SharePoint Online (Microsoft 365) som miljön som granskas.
  • Microsoft Graph-åtkomst för att lista webbplatser, enheter och behörigheter.
  • Microsoft Entra ID-appregistrering (skapa i Entra-admincenter) för att generera klientuppgifter och bevilja Sites.Read.All.

Svårighetsnivå: Medel. Du kopplar OAuth2-klientuppgifter och uppdaterar en lista med tenant-domäner i en nod.

Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).

Flödet i arbetsflödet

Du startar revisionen. Arbetsflödet körs via en manuell trigger idag, och kan senare kombineras med en schematrigger så att du får återkommande kontroller utan att behöva komma ihåg det.

Det bygger din regel för “internt vs externt”. I variabelsteget definierar du dina interna tenant-domäner (som yourDomain.com och yourDomain.onmicrosoft.com) så att arbetsflödet kan betrakta allt annat som extern exponering.

Microsoft Graph hämtar inventeringen. Det hämtar alla SharePoint-webbplatser i tenanten, filtrerar bort systemwebbplatser och hämtar sedan enheter (dokumentbibliotek) per webbplats. Varje enhet startar en rekursiv genomgång av mappar och filer, eftersom båda kan ha unika behörigheter.

Behörigheter granskas och filtreras till en kort lista. För varje hittat objekt hämtar arbetsflödet behörigheter, slår ihop dem med objektmetadata och flaggar anonyma länkar samt gäst-/externa identiteter (inklusive markörer som #ext# och urn:spo:guest). Endast externt delade objekt går vidare.

Du kan enkelt justera filtreringsreglerna för att matcha striktare policys, eller skicka slutdatamängden någon annanstans än Excel (till exempel till en ärendekö). Se den fullständiga implementeringsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera den manuella triggern

Starta arbetsflödet manuellt under uppsättning och testning.

  1. Lägg till noden Manual Launch Trigger som startpunkt för arbetsflödet.
  2. Lämna alla fält med standardvärden eftersom denna trigger inte kräver någon konfiguration.

Steg 2: Anslut Microsoft Graph och hämta SharePoint-webbplatser

Definiera era interna domäner och hämta SharePoint-webbplatser och drives från Microsoft Graph.

  1. I Assign Tenant Domains ställer ni in tenantDomains till er domänlista, t.ex. [ "yourDomain1.onmicrosoft.com", "yourDomain1.com" ].
  2. Öppna Retrieve SharePoint Sites och ställ in URL till https://graph.microsoft.com/v1.0/sites?search=*.
  3. Inloggningsuppgifter krävs: Anslut era oAuth2Api-inloggningsuppgifter i Retrieve SharePoint Sites.
  4. I Separate Site Records ställer ni in Field To Split Out till value.
  5. I Filter Out System Sites konfigurerar ni villkoret för att exkludera systemwebbplatser med Left Value {{ $json.webUrl }} och Right Value contentstorage med Operation inställd på notContains.
  6. I Fetch Site Drives ställer ni in URL till =https://graph.microsoft.com/v1.0/sites/{{ $json.id }}/drives?$select=id,name,webUrl.
  7. Inloggningsuppgifter krävs: Anslut era oAuth2Api-inloggningsuppgifter i Fetch Site Drives.
  8. I Separate Drive Records ställer ni in Field To Split Out till value.
Anslut samma Microsoft Graph-oAuth2Api-inloggningsuppgift till alla HTTP request-noder som frågar Graph: Retrieve SharePoint Sites, Fetch Site Drives, Retrieve Item Permissions, Fetch Folder Children och Fetch Drive Items.

Steg 3: Konfigurera delarbetsflödet för uppräkning av objekt

Använd delarbetsflödet för att räkna upp drive-objekt och mappar och skicka sedan alla resultat vidare.

  1. I Run Sub-Workflow (Configure Required) ställer ni in Mode till each och väljer mål-delarbetsflödet i Workflow ID (för närvarande tomt).
  2. Bekräfta att workflowInputs mappar driveId till {{ $json.id }} i Run Sub-Workflow (Configure Required).
  3. I delarbetsflödet börjar ni med Subflow Items Trigger för att ta emot indata driveId och folderId.
  4. I Check Folder Input konfigurerar ni villkoret för att kontrollera Left Value {{ $json.folderId }} med Operation notEmpty.
  5. I Fetch Folder Children ställer ni in URL till =https://graph.microsoft.com/v1.0/drives/{{ $('Subflow Items Trigger').item.json.driveId }}/items/{{ $('Subflow Items Trigger').item.json.folderId }}/children?$select=id,name,webUrl,folder,file,parentReference,lastModifiedDateTime och Method till =GET.
  6. I Fetch Drive Items ställer ni in URL till =https://graph.microsoft.com/v1.0/drives/{{ $json.driveId }}/root/children?$select=id,name,webUrl,folder,file,parentReference,lastModifiedDateTime.
  7. I Separate Item Records ställer ni in Field To Split Out till value och routar sedan till Check Non-Folder Item.
  8. I Check Non-Folder Item konfigurerar ni villkoret så att Left Value {{ $json.folder }} använder Operation notExists.
  9. I Run Sub-Workflow (Configure Required) 2 väljer ni mål-delarbetsflödet i Workflow ID och mappar indata: driveId till {{ $('Subflow Items Trigger').item.json.driveId }} och folderId till {{ $json.id }}.
  10. I Combine Items and Folders ställer ni in Number Inputs till 3 och routar sedan till Pass Through All Data med Include Other Fields aktiverat.
⚠️ Vanlig fallgrop: Både Run Sub-Workflow (Configure Required) och Run Sub-Workflow (Configure Required) 2 har tomma fält för Workflow ID. Ni måste välja rätt delarbetsflöde för att granskningen ska fungera.

Steg 4: Slå ihop objektdetaljer med behörigheter

Hämta behörigheter parallellt och kombinera dem med objektmetadata innan ni granskar extern delning.

  1. Från Run Sub-Workflow (Configure Required) kan ni notera att den skickar utdata parallellt till både Retrieve Item Permissions och Map Item Output.
  2. I Retrieve Item Permissions ställer ni in URL till =https://graph.microsoft.com/v1.0/drives/{{ $('Separate Drive Records').item.json.id }}/items/{{ $json.id }}/permissions.
  3. Inloggningsuppgifter krävs: Anslut era oAuth2Api-inloggningsuppgifter i Retrieve Item Permissions.
  4. I Map Permissions Output mappar ni permissions till {{ $json }}.
  5. I Map Item Output mappar ni item till {{ $json }}.
  6. I Combine Permission and Item ställer ni in Mode till combine och Combine By till combineByPosition.

Steg 5: Sätt upp detektering av extern delning

Analysera kombinerad data för att flagga anonyma länkar och externa huvudmän.

  1. Öppna Filter External Sharing och behåll JavaScript-koden som den är för att upptäcka extern delning via anonyma länkar och gästanvändare.
  2. Verifiera att koden refererar till tenant-domäner från Assign Tenant Domains med $('Assign Tenant Domains').first().json.tenantDomains.
  3. Bekräfta att utdataschemat inkluderar objektidentitet, flaggor för externalSharing samt detaljerade listor för anonymousLinks och externalPrincipals.
Om er tenant använder fler domäner lägger ni till dem i Assign Tenant Domains för att minska falska positiva i Filter External Sharing.

Steg 6: Testa och aktivera ert arbetsflöde

Validera granskningen från början till slut och aktivera den sedan för användning i produktion.

  1. Klicka på Execute Workflow från Manual Launch Trigger för att köra ett manuellt test.
  2. Bekräfta att Filter External Sharing endast returnerar objekt med anonyma länkar eller externa huvudmän.
  3. Granska exempelutdata för att säkerställa att fälten webUrl, itemId och externalSharing är ifyllda.
  4. När det är validerat växlar ni arbetsflödet till Active för produktionsanvändning.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Var uppmärksam på

  • Microsoft Graph-uppgifter kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först behörigheterna i Entra ID-appregistreringen och n8n:s OAuth2-uppgiftskonfiguration.
  • Om du använder Wait-noder eller extern rendering varierar processingtider. Öka väntetiden om nedströmsnoder misslyckas på grund av tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in ert varumärkesspråk tidigt, annars kommer du att redigera output för alltid.

Vanliga frågor

Hur snabbt kan jag implementera den här automatiseringen för SharePoint-riskrevision?

Vanligtvis cirka en timme när din Entra-app är klar.

Kan icke-tekniska team implementera den här SharePoint-riskrevisionen?

Ja, men de behöver någon som kan skapa Entra ID-appregistreringen och bevilja Graph-behörigheter. Efter det är det mest uppsättningen av uppgifter och att redigera en domänlista.

Är n8n gratis att använda för det här arbetsflödet för SharePoint-riskrevision?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna in Microsoft Graph-åtkomst (oftast täckt av Microsoft 365-licensiering) och eventuella hostingkostnader om du self-hostar.

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, enklast uppsättning) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.

Hur anpassar jag den här SharePoint-riskrevisionslösningen till mina specifika utmaningar?

Börja i steget “Assign Tenant Domains”, eftersom den regeln styr vad som behandlas som externt. Du kan också anpassa filtreringslogiken som flaggar anonyma länkar och externa användare, till exempel genom att behandla vissa partnerdomäner som “tillåtna” eller genom att exkludera vissa webbplatser efter steget “Retrieve SharePoint Sites”.

Varför misslyckas min SharePoint-anslutning i det här arbetsflödet?

Oftast handlar det om Microsoft Graph-behörigheter eller ett problem med OAuth2-klientuppgifter. Bekräfta att Entra-appen har application permission Sites.Read.All beviljad med adminsamtycke, och verifiera sedan att klienthemligheten inte har löpt ut. Kontrollera också att varje HTTP Request-nod använder samma OAuth2-uppgift i n8n. Om det fungerar för vissa webbplatser men inte andra kan du stöta på åtkomstbegränsningar på specifika webbplatssamlingar.

Vad är kapaciteten för den här SharePoint-riskrevisionslösningen?

Om du self-hostar beror kapaciteten mest på din server och hur länge du är villig att låta skanningen köra.

Är den här automatiseringen för SharePoint-riskrevision bättre än att använda Zapier eller Make?

För djup SharePoint-granskning är svaret oftast ja. Du flyttar inte bara data mellan två appar; du traverserar enheter rekursivt, förgrenar på mappar vs filer och slår ihop behörighetsbevis till en enda datamängd. n8n hanterar den typen av logik snyggt, och du kan self-hosta om du vill ha obegränsade körningar utan att räkna varje task. Zapier eller Make kan fungera för lättviktiga SharePoint-triggers, men en tenant-omfattande revision blir snabbt klumpig. Prata med en automationsexpert om du vill ha en snabb rimlighetskontroll innan du bygger.

När du kan se varje anonym länk och varje gästdelning på ett ställe slutar SharePoint-åtgärder att vara en gissningslek. Kör det månadsvis, håll Excel-listan tajt och gå vidare med veckan.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal