Naar de hoofdinhoud

IP-allowlist

De IP-allowlist beperkt je organisatie tot de netwerken die je opgeeft. Is de lijst ingesteld, dan wordt een verzoek van een adres daarbuiten geweigerd, ook als de inloggegevens geldig zijn en de gebruiker via SSO is ingelogd.

Je vindt hem onder Beveiliging › Toegang › IP-toegestane lijst (<your-org>/_admin/security/access/ip-allowlist). Alleen eigenaren van de organisatie kunnen hem wijzigen.

Waar de lijst geldt

Er is één lijst, en die geldt voor elk onderdeel hieronder:

OnderdeelWat van buiten de lijst wordt geweigerd
Webbeheer<your-org>/_admin/*
fremforge-APIhttps://frem.sh/_app/api/v1/orgs/<your-org>/*
Webinterface van repository’sDe pagina’s van de organisatie en haar private repository’s, bestanden, issues, pull requests, releases en bijlagen
REST-API van Forgejohttps://frem.sh/api/v1/-aanroepen op de private repository’s van de organisatie, en op de organisatie zelf
Git over HTTPSKlonen, fetch en push
Git LFSDownloads en uploads van objecten, en bestandsvergrendelingen
PakketregistersElk register, inclusief het containerregister
Git via SSHNiets. Zie Git over SSH valt er niet onder.

Publieke repository’s blijven voor iedereen leesbaar, omdat hun inhoud toch al openbaar is. Een lid dat op een publieke repository is ingelogd, wordt nog steeds gecontroleerd zodra diegene pusht, instellingen wijzigt of de pagina’s van de organisatie opent. Anonieme bezoekers krijgen nooit een weigering te zien: een private repository ziet er voor hen hetzelfde uit als altijd.

De beveiligingspagina toont Waar de lijst nu geldt, met één regel per onderdeel: Afgedwongen, Alleen gelogd (met de reden) of Valt er niet onder. De API geeft dezelfde informatie terug in surfaces. Zijn deze pagina en dat paneel het oneens, dan heeft het paneel gelijk.

Uitrol. Eén lijst voor elk onderdeel wordt geleidelijk ingeschakeld. Tot je organisatie is overgezet, kan het paneel een onderdeel tonen als Alleen gelogd — wordt nog uitgerold. Verzoeken van buiten de lijst worden dan in het auditlog vastgelegd, maar niet geweigerd. Het webbeheer en Git over HTTPS worden overal afgedwongen (bij een oudere lijst met scope web alleen het webbeheer; zie hieronder).

De lijst instellen

  • Gebruik CIDR-notatie: 203.0.113.0/24, 2001:db8::/48. Eén adres is /32, of /128 voor IPv6.
  • Zet één bereik per regel, of scheid ze met komma’s. Het maximum is 100 bereiken.
  • /0 wordt geweigerd. Wil je elk adres toestaan, laat de lijst dan leeg.
  • Neem je kantoor- en VPN-bereiken op, en de uitgaande adressen van alle CI die niet op fremforge draait.
  • De pagina toont Je adres op dit moment: het adres dat fremforge voor jou ziet.

Je kunt jezelf niet buitensluiten door op te slaan. Bevat een afdwingende lijst je eigen adres niet, dan wordt het opslaan geweigerd: voeg je adres toe, of vink eerst Alleen-auditvoorbeeld aan.

Een wijziging werkt binnen ongeveer een minuut op elk onderdeel.

Alleen-auditvoorbeeld

Met Alleen-auditvoorbeeld aan legt elk onderdeel de verzoeken vast die het zou weigeren, maar laat ze door. Een goede manier om een lijst in te voeren:

  1. Voer de bereiken in en vink Alleen-auditvoorbeeld aan. Sla op.
  2. Gebruik de organisatie een dag of twee zoals gewoonlijk, inclusief CI en eventuele integraties.
  3. Bekijk de gebeurtenissen ip_allowlist.would_block in het auditlog. Elke gebeurtenis noemt het onderdeel, het adres, een voorbeeldpad en hoeveel verzoeken ze vertegenwoordigt.
  4. Voeg legitieme bereiken toe die je hebt gemist.
  5. Vink Alleen-auditvoorbeeld uit. Vanaf nu wordt de lijst afgedwongen.

Door fremforge gehoste runners

CI-jobs op de eigen runners van fremforge bereiken je organisatie vanuit het netwerk van fremforge, niet vanuit het jouwe. Het token dat voor een job wordt aangemaakt, werkt altijd. Door fremforge gehoste runners toestaan (standaard aan) bepaalt of andere inloggegevens die vanaf een runner worden gebruikt, zoals een PAT of een OAuth-token dat als secret is opgeslagen, ook werken. Zet dit uit als je wilt dat een gestolen PAT nutteloos is, zelfs wanneer hij vanuit een CI-job wordt gebruikt.

Zelf gehoste runners en externe CI worden net als elke andere client beoordeeld op hun uitgaande adres. Voeg die adressen toe aan de lijst.

Als een eigenaar is buitengesloten

Je adres kan veranderen: een nieuw kantoor, een VPN-storing, een reis. Noodtoegang (break-glass) zet elk onderdeel 24 uur lang op alleen loggen. Niets wordt blijvend omzeild, en elke stap wordt in het auditlog vastgelegd.

  • Selfservice voor eigenaren. Open https://frem.sh/_app/ip-allowlist/break-glass?org=<your-org> vanaf elk netwerk, ingelogd als eigenaar. We mailen een ondertekende link naar het eigen e-mailadres van je account. De link werkt 30 minuten. Open hem en bevestig. Weigeringspagina’s en Git-foutmeldingen voor je organisatie tonen dit adres.
  • De support van fremverk kan op verzoek dezelfde noodtoegang voor je organisatie inschakelen.

Noodtoegang eindigt na 24 uur vanzelf en wordt nooit verlengd zolang hij aan staat. Herstel de lijst en beëindig hem daarna eerder met Noodtoegang nu beëindigen op de beveiligingspagina.

Acties in het auditlog: ip_allowlist.break_glass.activated, ip_allowlist.break_glass.ended.

Lijsten van vóór de tijd dat één lijst elk onderdeel dekte

Oudere lijsten hadden een scope: web (alleen webbeheer) of web+git (plus Git over HTTPS). Die lijsten blijven afdwingen waar ze dat eerder deden. Op de andere onderdelen loggen ze verzoeken die geweigerd zouden worden, gedurende 30 dagen nadat we de eigenaren van de organisatie hebben geïnformeerd, en daarna dwingen ze ook daar af. De beveiligingspagina toont de datum.

Wil je niet wachten, gebruik dan Nu op alle onderdelen afdwingen (actie in het auditlog: security.ip_allowlist.enforce_all). Je kunt een lijst niet terugzetten naar een oude scope, en elke nieuwe lijst dekt elk onderdeel.

Git over SSH valt er niet onder

De IP-allowlist filtert Git over SSH niet. SSH bereikt fremforge via een load balancer die het adres van de client vervangt door dat van een van onze eigen clusternodes, dus het adres waarvandaan je ontwikkelaar verbinding maakt, is voor ons niet zichtbaar. We beoordelen een verbinding niet op een adres waarvan we weten dat het onjuist is. Een lijst die stilletjes elke SSH-gebruiker blokkeert, of ze stilletjes allemaal doorlaat terwijl hij beweert te filteren, zou erger zijn dan het gewoon te zeggen.

Moet in je organisatie elke Git-bewerking op IP worden gefilterd:

  1. Zet SSH-protocol toestaan uit op de pagina Authenticatiebeleid. Dit is de standaard voor organisaties die na 2026-05-22 zijn aangemaakt.
  2. Laat leden HTTPS gebruiken met Git Credential Manager (Veilig inloggen). Git over HTTPS valt wel onder de lijst.

Met SSH uit wordt elke Git-bewerking via SSH op de repository’s van de organisatie geweigerd: push, klonen en fetch, en Git LFS via SSH. Dat is een weigering van SSH als geheel, geen IP-controle, dus de beveiligingspagina toont Git over SSH nog steeds als Valt er niet onder, en de API geeft ssh_covered: false terug.

Wat een geweigerd verzoek te zien krijgt

OnderdeelAntwoord
fremforge-API403 not-in-allowlist met het adres dat we zagen
Webinterface, webbeheerEen weigeringspagina met de organisatie en het adres, en de link voor noodtoegang
REST-API van Forgejo, LFS, pakketten403 met dezelfde melding
Git over HTTPSgit toont de melding en de link voor noodtoegang

Elke weigering wordt vastgelegd als ip_allowlist.blocked, en elk verzoek dat alleen wordt gelogd als ip_allowlist.would_block. Herhalingen vanaf hetzelfde adres op hetzelfde onderdeel worden gegroepeerd in één gebeurtenis met een count, zodat een verkeerd geconfigureerde CI-lus het log niet overspoelt.

API

De lijst is ook beschikbaar via de fremforge-API, met de scopes policy:read en policy:write.

# Read: the list, the runner toggle, per-surface modes, break-glass state
curl -H "Authorization: Bearer $TOKEN" \
  https://frem.sh/_app/api/v1/orgs/<your-org>/security

# Replace the list
curl -X PUT -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"cidrs":["203.0.113.0/24","2001:db8::/48"],"audit_only":true,"allow_platform_runners":true}' \
  https://frem.sh/_app/api/v1/orgs/<your-org>/security/ip-policy

Het object ip_allowlist bevat cidrs, scope, audit_only, allow_platform_runners, surfaces (per onderdeel: mode is enforce of audit, plus een reason), new_surfaces_enforce_at, break_glass_until en ssh_covered.

Via de API geldt de bescherming tegen buitensluiten voor het eigen adres van de aanroeper. Fouten: invalid-cidr voor een ongeldig bereik, invalid-allowlist voor meer dan 100 bereiken, een bereik /0 of een lijst die de aanroeper zou blokkeren, en invalid-scope voor een oude scope.

Beperkingen

  • Kan de Git-service van fremforge het beleid van de organisaties langer dan 24 uur niet lezen, dan stopt hij met het afdwingen van de lijst in plaats van elke organisatie te weigeren. De fremforge-API en het webbeheer worden daardoor niet geraakt. Zo’n storing is een platformincident waarop we ingrijpen; bij normaal gebruik wordt het niet verwacht.
  • Adressen worden beoordeeld zoals de edge van fremforge ze ziet. Een proxy of NAT voor je gebruikers bepaalt welk adres dat is, dus zet het uitgaande bereik van de proxy op de lijst.
  • Maximaal 100 bereiken.