Säkerhet i connectorn¶
Den här sidan är skriven för dem som ska godkänna den säkra connectorn — IT, säkerhet, eller den som ansvarar för nätverket där Monitor körs. Den beskriver exakt vad connectorn gör, vad den inte kan göra, och hur ni stänger av den.
Ska ni sätta upp connectorn snarare än granska den, börja i stället på Integrationer och affärssystem.
Kort version¶
En liten container körs i ert nätverk bredvid Monitor. Den ringer ut till Colleag och håller anslutningen öppen. Colleag skickar läsförfrågningar tillbaka genom samma anslutning.
flowchart LR
M[("Monitor")] ---|"ert nät"| C["Connector<br/>bredvid Monitor"]
C -->|"utgående HTTPS, port 443"| H["connector.colleag.ai"]
H --- A["Colleag"]
- Ingen inkommande brandväggsregel. Ingen portöppning. Ingen VPN. Ingen publik adress på er sida.
- Tunneln når en värd och en port — den Monitor-instans ni angett. Inte subnätet, inte maskinen den råkar köra på.
- Colleag läser ett företag i Monitor — det företagsnummer ni angett. Ge Colleags Monitor-användare behörighet bara i det företaget, så håller Monitor själv gränsen. Se Avgränsa med företag i Monitor.
- Colleag läser bara. Ingenting skrivs tillbaka till ert affärssystem.
- Ni kan återkalla den från Colleag när som helst, och anslutningen dör omedelbart.
Vad som faktiskt körs¶
En enda container, publicerad öppet så att ert team kan granska den innan ni kör något:
ghcr.io/colleag-ai/erp-connector:stable
Den kör chisel, en TCP-tunnel med öppen källkod som går över HTTP. Kommandot den startar skrivs ut i containerns egen startlogg, och det ser ut så här:
chisel client --auth <connector-id>:<hemlighet> --keepalive 25s \
https://connector.colleag.ai R:<port>:<monitor-värd>:<monitor-port>
R: betyder omvänd tunnel. Den talar om för hubben att "förfrågningar som
kommer in på den här porten hör till den värden och porten på min sida".
Kopplingen låses vid start utifrån den MONITOR_URL ni satt. Agenten kan inte
förmås att nå något annat utan att ni ändrar variabeln och startar om den.
Trafikens riktning¶
Anslutningen upprättas från ert nätverk och utåt, över TLS mot
connector.colleag.ai:443. Er brandvägg behöver tillåta den utgående trafiken
och ingenting mer.
Ingenting lyssnar i ert nätverk. Stoppas agenten stängs tunneln och Colleag rapporterar helt enkelt connectorn som offline; det finns ingen reservväg in i era system.
Vad som lämnar ert nätverk¶
Agenten är en tunnel, inte en synkronisering. Det finns ingen schemalagd export och ingen kopia av er ERP-databas hos oss.
Data rör sig när en agent i Colleag gör en specifik läsning — ett lagersaldo, en orderhistorik, en leverantörs fakturor — som svar på något en användare frågat om. Svaret färdas tillbaka och används för att besvara frågan. Colleag sparar konversationen, så siffror som förekommer i ett svar bevaras som en del av den konversationen, precis som allt annat en agent skriver.
| Vad | Var det stannar | |
|---|---|---|
| Sparas | En sökspegel av artikelregistret — nummer, benämning, enhet, livscykelstatus, typ — och artikelnumret varje produkt är kopplad till | I Colleags databas. Kan synkas om när som helst och töms när integrationen kopplas bort |
| Läses vid fråga | Lagersaldon, priser, ordrar, fakturor och allt annat en agent slår upp | Bara i konversationen, eller i ett dokument någon bett om |
| Aldrig | Skrivningar till Monitor, schemalagd export, en kopia av ERP-databasen | — |
Den enda kopia vi faktiskt behåller
Produktsökningen behöver hitta en artikel på namn utan att anropa ert ERP vid varje tangenttryck, så Colleag håller en sökspegel av ert artikelregister: artikelnummer, benämning, enhet, livscykelstatus och typ. Ingenting annat — inga priser, inga lagersaldon, inga ordrar, inga kunder och inga leverantörer.
Den fylls när någon ber om det eller när produktväljaren fyller den vid första sökningen, den kan synkas om när som helst eftersom varje rad kom från ert ERP, och den töms när integrationen kopplas bort.
En sak till sparas per produkt: artikelnumret som ett produktutrymme är kopplat till, vilket är det som gör att strukturen kan hämtas för den.
Allt annat en agent läser från Monitor används för att svara och bevaras sedan bara inuti konversationen eller i ett dokument någon bett den skriva.
Vart era ERP-siffror mer kan färdas¶
- In i dokument. En rapport en agent skriver — en leverantörsbedömning, en månadsrapport — lagras, versionshanteras och blir sökbar som vilket annat dokument som helst, med sina siffror i sig.
- In i sökindexet. Dokumenttext styckas och bäddas in för att kunna sökas på betydelse. Inbäddningarna beräknas av en vektormodell — i SaaS Azure OpenAI inom EU — så siffror som skrivits in i ett dokument färdas dit på samma sätt som dokumentets ord. Se Sökindexet.
- In i driftloggar. API:t loggar vilken entitet den frågade och med vilket filter, vilket kan innehålla ett artikelnummer eller ett datumintervall. Loggar sparas i 30 dagar och ingår inte i produktens egen sökning.
- In i säkerhetskopior. Databasen säkerhetskopieras automatiskt, med 35 dagars historik i produktion.
Avgränsa med företag i Monitor¶
Monitor delar upp data i företag, och varje företag har ett eget
företagsnummer, till exempel 001.1. Colleag kopplas till ett företag i taget:
inloggningen och varje läsning går mot det företagsnummer som angetts under
Settings → Integrations, och sökspegeln av artikelregistret fylls bara från
det företaget.
Företaget är därför den enklaste gränsen ni har. Låt gränsen gälla på er sida också: ge Colleags Monitor-användare behörighet bara i det valda företaget. Då håller Monitor själv gränsen, oavsett vad som är inställt i Colleag. Ligger civil verksamhet och försvar i olika företag kan Colleag kopplas till det civila utan att det andra någonsin blir synligt.
flowchart LR
U["Colleags Monitor-användare"] -->|"läser"| B
U -. "ingen behörighet" .- A
subgraph S["Monitor-servern — exempel"]
A["001.1 Försvarsprodukter"]
B["002.1 Civila produkter"]
T["900.1 Testföretag"]
end
| Ert Monitor | Gör så här |
|---|---|
| Civil och skyddsvärd verksamhet i olika företag | Koppla Colleag till det civila företaget och ge Monitor-användaren behörighet bara där. |
| Ett testföretag | Ett testföretag är oftast en kopia av det skarpa, och en kopia är lika känslig som originalet. Rensa bort känsliga artiklar, kunder och ordrar först, eller lägg upp ett pilotföretag med bara pilotproduktens artiklar och strukturer. |
| Allt i samma företag | Företaget kan inte avgränsa något: inom ett företag kan Colleag läsa hela artikelregistret. Börja med ett rensat test- eller pilotföretag, eller välj lokal server, där ingenting lämnar ert nät. |
Vill ni byta företag senare, till exempel när säkerhetsgranskningen är klar, ändrar ni företagsnumret i Colleag, ger Monitor-användaren behörighet i det nya företaget och synkar om artikelspegeln.
Hubben är ingen öppen dörr¶
connector.colleag.ai terminerar er tunnel, men den vidarebefordrar inte
trafik in i den åt vem som helst. Vidarebefordrings-endpointerna kräver en
intern proxynyckel (X-Colleag-Proxy-Key) som bara Colleags API har. En
förfrågan utan den avvisas innan den når er tunnel.
Varje connector är dessutom bunden till sin egen tilldelade port, avgränsad till en organisation. En kunds tunnel går inte att nå från en annans.
Autentiseringsuppgifter¶
Två separata hemligheter är inblandade, och ingen av dem ger tillgång till den andra.
Connector-token autentiserar agenten mot hubben. Den har formen
connector-id:hemlighet och är den ni klistrar in i COLLEAG_TOKEN. Den ger
en enda rättighet: att öppna en tunnel för en connector på en port.
Era Monitor-uppgifter är det Colleag använder för att fråga affärssystemet. De lagras krypterade (Fernet) och skickas aldrig till agenten — agenten flyttar byte och ser dem aldrig i klartext.
Använd en dedikerad Monitor-användare
Skapa ett Monitor-konto åt Colleag med enbart läsrättigheter, i stället för att återanvända en persons inloggning. Det håller spårbarheten i Monitor ärlig och gör att ett återkallande blir en enda åtgärd på er sida också.
Återkalla åtkomst¶
Öppna Settings → Integrations i Colleag, leta upp raden för den säkra connectorn och välj Revoke. Token ogiltigförklaras omedelbart och hubben släpper tunneln; en agent som fortfarande kör kommer att försöka igen och misslyckas tills den stoppas.
Att rotera i stället för att återkalla utfärdar en ny token och ogiltigförklarar den gamla i samma steg, så en läckt token kan bytas utan servicefönster.
Att stoppa containern hos er får samma praktiska effekt sett från ert nätverk, och kräver ingen åtgärd i Colleag.
Om maskinen som kör agenten komprometterades¶
Värt att säga rakt ut, eftersom det är frågan som avgör de flesta granskningar.
En angripare med containern och dess token skulle kunna öppna en tunnel till samma Monitor-värd och port som agenten redan var konfigurerad för — ingenting annat i ert nätverk. De skulle inte nå andra värdar, andra portar eller andra kunders tunnlar, och de skulle inte kunna använda token för att logga in i Colleag eller läsa något som lagras där.
De skulle fortfarande behöva giltiga Monitor-uppgifter för att få ut data ur affärssystemet, och de ligger krypterade hos oss i stället för på maskinen.
Att återkalla token i Colleag stänger den vägen omedelbart.
Var den bör köras¶
Vilken maskin eller virtuell server som helst i ett nätverkssegment som når Monitor och kan göra utgående HTTPS-anrop. Det är en liten, långkörande process; en containervärd ni redan driftar är det vanliga valet.
Den återansluter av sig själv efter ett nätavbrott eller en omstart — chisel håller anslutningen vid liv med 25 sekunders keepalive och försöker igen när den bryts. Efter en omstart av värden startar ni containern igen, så återupprättas tunneln utan någon åtgärd i Colleag.
Statusmärket under Settings → Integrations visar online med en tidpunkt för senaste kontakt, vilket är snabbaste sättet att bekräfta att allt mår bra.
Det enkla fallet. Docker eller Podman, docker run-kommandot från
uppsättningspanelen, och en omstartspolicy så att den kommer tillbaka efter en
omstart. Mer krävs inte.
Agenten fungerar på Windows, med en sak att känna till: det är en Linux-container — Alpine med en liten tunnelbinär — så Docker måste köra i Linux containers-läge. Det är Docker Desktops standardläge, med WSL 2 som motor. Är Docker ställt på Windows containers startar imagen inte, och felet handlar om operativsystem snarare än om något som rör Colleag.
Två praktiska noteringar:
Använd PowerShell-kommandot, inte bash-varianten. Panelen visar båda.
PowerShell tolkar inte \ som radfortsättning, så klistrar man in Linux-blocket
får man invalid reference format. PowerShell-blocket använder en backtick i
stället.
Tänk på vem som är inloggad. På Windows 10 och 11 kör Docker Desktop inuti
en användarsession — den startar när någon loggar in, och en server som startas
om obevakat kommer tillbaka utan agent tills någon loggar på.
--restart unless-stopped startar om containern, men först när Docker självt är
igång. Behöver connectorn överleva omstarter på egen hand, välj i stället något
av dessa:
- Windows Server med WSL 2-motorn, där Docker kör som en tjänst.
- En liten Linux-VM i samma nätverk — ofta det minst överraskande valet.
- En maskin som redan är containervärd i er miljö.
Inget av det ändrar vad agenten gör eller vad den kan nå. Det är samma image och samma utgående tunnel oavsett.
Nästa: Inställningar och administration →