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

Google Drive + OpenAI: granskningsbara baslinjer

Rickard Andersson Partner, Nodenordic.se

Att kopiera säkerhetskrav från molndokumentation är tidskrävande. Än värre: det blir inkonsekvent. En person skriver ”måste”, en annan skriver ”bör”, och din ”baseline” blir en hög med anteckningar som ingen kan granska.

Den här automatiseringen för security baseline träffar säkerhetsansvariga först, eftersom de äger revisioner och granskningar. Men DevOps-team och compliance-inriktade konsulter känner också av friktionen när varje ny tjänst kräver ”bara en baseline till”.

Det här arbetsflödet gör om en lista med AWS/Azure/GCP-dokumentations-URL:er till en felfri, efterlevnadsbar kontroll-baseline, sparar den i Google Drive och ger dig en nedladdningsbar fil. Du får se vad det gör, vad du behöver och hur du anpassar det.

Så här fungerar automatiseringen

Här är hela arbetsflödet du kommer att sätta upp:

n8n Workflow Template: Google Drive + OpenAI: granskningsbara baslinjer

Varför det här spelar roll: baselines som håller för granskning

Om du någon gång har försökt bygga en ”security baseline” från leverantörsdokumentation vet du att det verkliga problemet inte är att hitta vägledning. Det är att göra om vägledningen till något som är konsekvent, jämförbart och granskningsbart. Du slutar med flikar av URL:er, halvtolkade citat och kontroller skrivna i olika stilar mellan AWS, Azure och GCP. Sedan frågar någon: ”Går det här att efterleva?” och du inser att svaret är ”typ”, vilket inte är en bra position under en revisionscykel.

Friktionen byggs på. Här är var det brukar fallera i verkligheten.

  • Du lägger cirka 10 minuter per URL på att plocka ut de ”riktiga” kraven, och tappar sedan mer tid på att rensa det du kopierade.
  • Två källor säger samma sak med olika ord, vilket skapar duplicering och diskussioner i stället för tydlighet.
  • Kontroller blir till stycken, inte strukturerade block, så de är jobbiga att validera och svåra att importera i andra verktyg.
  • Varje uppdatering blir ett miniprojekt, så team skjuter på uppdateringar tills något tvingar fram det.

Det du bygger: multicloud-baselines från URL:er till Drive

Det här arbetsflödet startar med en enkel webhook-begäran: du skickar en molnleverantör (AWS, Azure eller GCP), ett teknologinamn (som ”Amazon S3”) och en lista med dokumentations-URL:er. n8n hämtar varje sida, tar bort brusig HTML (script, headers, formateringsskräp) och förbereder texten så att AI:n kan arbeta med den pålitligt. Därefter kör OpenAI en ”extrahera → komponera → bygga”-pipeline som först plockar ut säkerhetskrav i strikta, konsekventa textblock och sedan gör om blocken till efterlevnadsbara kontroller. Slutligen skapar eller kompletterar arbetsflödet en baseline-fil i Google Drive och returnerar ett nedladdningsbart TXT- eller JSON-artefakt via webhook-svaret.

Det börjar när du POST:ar till /webhook/create med Basic Auth. Därifrån hämtar HTTP Request-noder URL:erna, Code-noder sanerar och slår ihop innehåll, och AI-stegen standardiserar allt till en baseline du faktiskt kan granska. Resultatet hamnar i Google Drive och kommer också tillbaka till dig som en filnedladdning.

Det du bygger

Förväntade resultat

Säg att du bygger en baseline för ”Amazon S3” med 10 trovärdiga URL:er. Manuellt kan du lägga cirka 10 minuter per URL på att läsa och extrahera plus ytterligare en timme på att skriva om och ta bort dubbletter, alltså ungefär 3 timmar. Med det här arbetsflödet skickar du en POST (cirka 5 minuter att förbereda) och låter sedan n8n hämta, rensa och köra AI-pipelinen (ofta runt 15 minuter). Du får tillbaka en TXT- eller JSON-fil redo för granskning och är klar för dagen.

Innan du börjar

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Google Drive för att lagra och komplettera baseline-filer.
  • OpenAI för att extrahera, komponera och bygga baselinen.
  • Basic Auth-uppgifter (ställs in i dina n8n-webhookinställningar)

Kunskapsnivå: Medel. Du är bekväm med att lägga till inloggningsuppgifter, testa en webhook och justera en prompt utan att förstöra utdataformatet.

Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).

Steg för steg

En webhook-begäran startar allt. Du POST:ar till /webhook/create med cloudProvider, technology och en lista med 1–20 URL:er. Arbetsflödet validerar att URL:erna är riktiga http(s)-länkar och normaliserar leverantören till aws|azure|gcp.

Dokumentationen hämtas och rensas. n8n hämtar varje sida med en HTTP Request-nod och tar sedan bort script, styles och annan boilerplate med Code-steg, så att innehållet blir säkert och konsekvent att bearbeta.

OpenAI gör råtext till efterlevnadsbara kontroller. Extraktorn producerar strikta 3-raders kravblock, kompositören skriver om dem till strikta 7-raders efterlevnadsbara kontroller och konsoliderar verkliga motsvarigheter, och därefter genererar byggsteget en slutlig baseline (TXT eller JSON). Om du aktiverar granskarloopen valideras baselinen och kan revideras en gång till för kvalitet.

Google Drive blir systemet som gäller. Arbetsflödet hittar eller skapar rätt Drive-mapp (via mapp-ID, sökväg eller namn) och kompletterar eller skapar filen. Du får också ett nedladdningsbart artefakt direkt i webhook-svaret, vilket gör det enkelt att koppla vidare till en annan process.

Du kan enkelt ändra utdataformat (TXT vs JSON) eller Drive-destinationslogik utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: Konfigurera webhook-triggern

Konfigurera endpointen för inkommande förfrågningar och valideringsflödet som startar workflowet.

  1. Öppna Incoming Create Hook och ställ in Path till create, HTTP Method till POST och Response Mode till responseNode.
  2. Ställ in Authentication till basicAuth.
  3. Inloggningsuppgifter krävs: Anslut era httpBasicAuth-inloggningsuppgifter i Incoming Create Hook.
  4. Bekräfta att Incoming Create Hook skickar output till Validate Request Payload.

⚠️ Vanlig fallgrop: Webhook-body måste innehålla cloudProvider, technology och en array med giltiga HTTP/HTTPS-urls, annars stoppas flödet vid valideringen.

Steg 2: Validera indata och lös upp grundinställningar

Validera förfrågan, generera en UUID, lös upp målmappen i Drive och mappa OpenAI assistant-ID:n för senare steg.

  1. I Validate Request Payload behåller ni valideringslogiken som den är för att normalisera cloudProvider, technology och urls.
  2. I Validate Required Inputs säkerställer ni att villkoret kontrollerar att {{$json.ok}} är lika med true för att släppa igenom giltiga payloads.
  3. I Send Validation Error ställer ni in Response Body till ={{$json}} så att ogiltiga payloads returneras till anroparen.
  4. I Create Short UUID behåller ni JavaScript-koden som genererar en UUID med 12 tecken för filnamngivning.
  5. I Locate Drive Folder ställer ni in Query String till n8n_defysec.
  6. Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter till Locate Drive Folder (och alla andra Google Drive-noder).
  7. I List OpenAI Assistants ställer ni in Resource till assistant och Operation till list.
  8. Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter till List OpenAI Assistants (och alla andra OpenAI-noder).
  9. I Assign Core Settings mappar ni fält med uttryck: uuid ={{ $('Create Short UUID').first().json.uuid }}, cloudprovider ={{ $('Incoming Create Hook').first().json.body.cloudProvider }}, technology ={{ $('Incoming Create Hook').first().json.body.technology }}, urls ={{ $('Incoming Create Hook').first().json.body.urls }} och gdrive_target ={{ $('Locate Drive Folder').first().json.id }}.
  10. I Assign Core Settings mappar ni assistant-ID:n från Resolve AI Assistants: assistant_extractor_id, assistant_composer_id, assistant_baseline_id, assistant_auditor_id och assistant_reviewer_id till deras {{$json...}}-värden.

Tips: Om Locate Drive Folder inte hittar mappen kommer Assign Core Settings att misslyckas. Säkerställ att mappnamnet matchar n8n_defysec exakt.

Steg 3: Sätt upp URL-extraktion och tolkning av AI-kontroller

Expandera URL:er till enskilda items, hämta och rensa webbinnehåll och extrahera sedan kontroll-data med AI-extraktorn.

  1. I Expand URL List behåller ni mappningslogiken som omvandlar urls till enskilda items med uuid, cloudProvider, technology och url.
  2. I Batch URL Processor låter ni Reset vara avstängt för att möjliggöra iterativ bearbetning av varje URL.
  3. I Fetch Web Content ställer ni in URL till ={{ $json.url }} och behåller header-värdet för User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 med Timeout 10000 och Allow Unauthorized Certs aktiverat.
  4. I Clean HTML Content behåller ni JavaScript-koden som tar bort scripts/styles och returnerar sanitizedText samt metadata från Batch URL Processor.
  5. I AI Extractor Stage ställer ni in Text till =CloudProvider: {{ $json.cloudProvider}} Technology: {{ $json.technology }} Data Source: {{ $json.url }} Data: {{ $json.sanitizedText }} och behåller Resource som assistant med Assistant ID ={{ $('Assign Core Settings').first().json.assistant_extractor_id }}.
  6. Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter i AI Extractor Stage.
  7. I Check Controls Result säkerställer ni att villkoret kontrollerar att {{$json.output}} inte är lika med NO_CONTROLS_FOUND, så att giltiga output skickas vidare och ogiltiga output går tillbaka för batching.

Steg 4: Hantera extraherade filer i Google Drive

Sök efter befintliga extraherade kontrollfiler, avgör om ni ska lägga till eller skapa nytt och uppdatera Drive därefter.

  1. I Search Extracted Files ställer ni in Query String till ={{$items("Assign Core Settings")[0].json.uuid}}_extractedControls_ och aktiverar Return All.
  2. I Prepare Extracted Info behåller ni logiken som tar fram action, fileId och fileName baserat på befintliga Drive-filer.
  3. I Decide Append Or Create bekräftar ni att villkoret kontrollerar att {{$json.action}} är lika med append för att ladda ned och slå ihop befintliga filer.
  4. I Download Existing File ställer ni in Operation till download och File ID till ={{ $json.fileId }}.
  5. I Merge Extracted Text behåller ni JavaScript-koden som lägger till AI-output till befintlig text och output:ar binärdata för uppdateringar.
  6. I Update Existing File ställer ni in Operation till update och aktiverar Change File Content.
  7. I Upload New File ställer ni in Name till ={{ $json.fileName }} och Folder ID till ={{ $('Assign Core Settings').first().json.gdrive_target }}.
  8. Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter till alla Google Drive-noder (Search Extracted Files, Upload New File, Update Existing File, Download Existing File och Find Controls File).

⚠️ Vanlig fallgrop: Om Assign Core Settings inte löser upp gdrive_target kommer uppladdningar och uppdateringar att misslyckas. Verifiera att Drive-mappen finns och att inloggningsuppgifterna har åtkomst.

Steg 5: Konfigurera kontrollkomposition, baseline-generering och granskningsloop

Bygg kontrollistan, hantera flöden där “inga kontroller” hittas och generera baseline med audit- och review-iterationer.

  1. I Find Controls File ställer ni in Query String till ={{$items("Assign Core Settings")[0].json.uuid}}_extractedControls.txt och aktiverar Return All.
  2. I Read Controls Content behåller ni JavaScript-koden som extraherar och normaliserar filinnehållet till content.
  3. I AI Control Composer ställer ni in Text till =CloudProvider: {{ $('Assign Core Settings').first().json.cloudprovider }} Technology: {{ $('Assign Core Settings').first().json.technology }} {{ $json.content }} och Assistant ID till ={{ $('Assign Core Settings').first().json.assistant_composer_id }}.
  4. I Route Control Outcome behåller ni regeln som routar {{$json.output}} lika med NO_CONTROLS_FOUND till Reply No Controls, och fallback-vägen till Handle No-Controls Flag.
  5. I Reply No Controls behåller ni JSON-svarskroppen som förklarar vilka kontrollblock som krävs.
  6. I AI Baseline Builder ställer ni in Text till =CloudProvider: {{ $('Assign Core Settings').first().json.cloudprovider }} Technology: {{ $('Assign Core Settings').first().json.technology }} {{ $json.output }} och Assistant ID till ={{ $('Assign Core Settings').first().json.assistant_baseline_id }}.
  7. I Stage Controls Payload ställer ni in data till ={{ $json.output }} för att mata efterföljande audit- och review-steg.
  8. I AI Baseline Auditor ställer ni in Text till ={{ $json.data }} och Assistant ID till ={{ $('Assign Core Settings').first().json.assistant_auditor_id }}.
  9. I Evaluate Audit Result behåller ni villkoret som kontrollerar att {{$json.output}} är lika med GOOD_ENOUGH för att gå vidare till Prepare Baseline File, annars routa till Prepare Review Feedback och AI Baseline Reviewer.
  10. I AI Baseline Reviewer ställer ni in Text till ={{ $json.Original_Data }} {{ $json.Last_Version }} {{ $json.Data_feedback}} och Assistant ID till ={{ $('Assign Core Settings').first().json.assistant_reviewer_id }} för att fortsätta förbättringsloopen.

Tips: AI assistant-ID:n löses upp i Resolve AI Assistants och mappas i Assign Core Settings. Om något assistant-ID saknas kommer motsvarande OpenAI-nod att misslyckas.

Steg 6: Konfigurera leverans av output

Generera en slutlig fil från den stage:ade output:en och returnera den till webhook-anroparen.

  1. I Prepare Baseline File behåller ni JavaScript-koden som läser Stage Controls Payload, identifierar JSON jämfört med text och genererar en binär fil med ett autogenererat namn.
  2. I Respond With File ställer ni in Respond With till binary och behåller headern Content-Disposition =attachment; filename="{{ $binary.data.fileName }}".

Steg 7: Testa och aktivera ert workflow

Kör en fullständig testcykel från webhooken och bekräfta att den förväntade output-filen returneras.

  1. Klicka på Execute Workflow och posta sedan en exempel-payload till Incoming Create Hook-URL:en med cloudProvider, technology och giltiga urls.
  2. Bekräfta att Send Validation Error endast svarar när payload-valideringen misslyckas och att giltiga förfrågningar fortsätter till Drive- och OpenAI-stegen.
  3. Verifiera att svaret från Respond With File innehåller en nedladdningsbar fil med ett namn i stil med controls_[technology]_[timestamp].json eller .txt.
  4. När ni är nöjda växlar ni workflowet till Active för att möjliggöra produktionsanvändning.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Felsökningstips

  • Google Drive-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det uppstår fel, kontrollera först Drive-nodens val av inloggningsuppgifter och åtkomst till mappen.
  • Om du använder Wait-liknande beteende (eller är beroende av långsamma dokumentsajter) varierar processtiderna. Öka batchstorleken eller lägg till fördröjning om efterföljande AI-noder börjar fallera på tomt eller delvis innehåll.
  • Standardprompter i AI-noderna är generiska. Lägg in dina baseline-stilregler tidigt (termer, omfångsspråk, ”måste” vs ”bör”), annars kommer du att redigera utdata för alltid.

Snabba svar

Hur lång tid tar det att sätta upp den här automatiseringen för security baseline?

Cirka 30 minuter om dina inloggningsuppgifter är klara.

Krävs kodning för den här automatiseringen för security baseline?

Nej. Du kopplar främst ihop konton, ställer in Basic Auth och klistrar in en testpayload till webhooken.

Är n8n gratis att använda för det här arbetsflödet för automatisering av security baseline?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod i n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med OpenAI API-kostnader, som oftast är några cent per körning beroende på hur många URL:er du bearbetar.

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

Två alternativ: n8n Cloud (managerat, enklast att komma igång) 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.

Kan jag modifiera det här arbetsflödet för automatisering av security baseline för andra användningsfall?

Ja, och det bör du förmodligen. Du kan byta leverantör genom att ändra cloudProvider i webhook-payloaden, och du kan bredda eller smalna av omfånget genom att justera prompterna som används i AI Extractor Stage och AI Control Composer-noderna. Vanliga justeringar är att tvinga igenom din interna kontrollformulering, lägga till ”evidence”-fält i JSON-utdata och routa olika teknologier till olika Drive-mappar via logiken i Locate Drive Folder.

Varför fallerar min Google Drive-anslutning i det här arbetsflödet?

Oftast är det behörighetsrelaterat. Bekräfta att Google Drive-inloggningen i n8n har åtkomst till målmappen (särskilt om du skickar in en folderId för en delad enhet), och välj sedan om inloggningen i den Drive-nod som fallerar för att uppdatera anslutningen. Om du söker via sökväg/namn kan felstavade mappnamn och saknad åtkomst till överordnade mappar också ge ett ”hittas inte”-beteende som ser ut som ett auth-fel.

Vilken volym kan det här arbetsflödet för automatisering av security baseline hantera?

Begäran stödjer 1–20 URL:er per körning.

Är den här automatiseringen för security baseline bättre än att använda Zapier eller Make?

Ofta, ja, eftersom det här inte är en enkel integration i två steg. n8n hanterar batchning, förgrening och flerstegs AI-kvalitetsloopar utan att du behöver brottas med plattformsbegränsningar, och self-hosting kan vara avgörande om du kör många baselines. Zapier eller Make kan fungera om du bara vill ha ”URL in, sammanfattning ut”, men de strikta TXT/JSON-kontrakten och audit-/granskarloopen är där det här arbetsflödet verkligen gör nytta. Dessutom är logiken för ”komplettera eller skapa” i Drive enklare att uttrycka tydligt i n8n. Prata med en automationsexpert om du vill ha hjälp att välja.

När det här väl rullar slutar ”bygga en baseline” att vara ett projekt och blir en beställning. Det är hela poängen.

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