1 open besluit1414 voorstellen

Onderwerp

Publicatie, namen en TLS

Hoe een dienst van buiten bereikbaar wordt: via een eigen virtueel adres op de externe verkeersverdeling, als doorgifte zonder TLS-afsluiting, met TLS, certificaat en naam bij de ingang of bij de dienst zelf.

Nog niet bevestigd door een mens. Eigenaar: vdo89. Bron in de atlas

Domein
Volgt uit
Functies
Producten
Verwant

Wat het is

Een dienst wordt bereikbaar via een eigen virtueel adres op de externe verkeersverdeling, die het verkeer als TCP doorgeeft aan de ingang van het cluster of aan de dienst. Daar eindigt TLS, met een eigen certificaat en een vast TLS-profiel. Namen en adressen komen vooraf uit de registratie.

Dit onderwerp beschrijft hoe applicatieclusters en platformdiensten worden gepubliceerd, welke namen en certificaten daarbij horen en hoe de cryptografie per pad wordt getoetst. De paren van de verkeersverdeling zelf staan in De externe verkeersverdeling.

Waarom zo

Omdat de verkeersverdeling alleen doorgeeft, blijft de versleuteling van de client tot bij de dienst ongebroken: de verkeersverdeling hoeft geen certificaten te bewaren en kan de sleuteluitwisseling niet verzwakken. Een eigen adres per dienst houdt iedere publicatie afgebakend, zodat een generieke ingang geen consoles of beheerroutes openzet.

Het voorstel legt de publicatie, de namen en de levenscyclus van certificaten vast als code en draaiboeken, zodat publiceren en intrekken herhaalbaar is en niets achterlaat.

Uitspraken

2 vastgesteld22 voorstellen

Alle 22 voorstellen vaststellen

Eén gecontroleerde ingang

VastgesteldRegel#

Van buiten het datacenter zijn toepassingen en API’s alleen bereikbaar via een virtueel adres van de externe verkeersverdeling, die het verkeer doorgeeft aan de ingang van het cluster of aan de dienst. Werkers, ingangsadressen en API-adressen worden nooit rechtstreeks gepubliceerd, en beheerinterfaces en beheeradressen nooit.

VastgesteldOntwerpbesluit#

De externe verkeersverdeling werkt op laag 4: zij geeft TCP door zonder TLS af te sluiten, heeft geen dienstcertificaten en kiest niet op hostnaam. TLS eindigt bij de API-server, de ingang van het cluster of de dienst zelf, die ook het certificaat beheert. De verkeersverdeling is zo de netwerkgrens tussen extern en platform, terwijl de TLS-verbinding van de client pas bij de ingang of de dienst eindigt.

Toelichting

Afgewezen: clusteringangen rechtstreeks publiceren met MetalLB en BGP vanaf de werkers, want dan staan de werkers van ieder applicatiecluster in de ingangszone en is er geen paar per afnemer; en de bestaande HAProxy-voorziening, die legacy is.

VoorstelWerking#

Bij het publiceren van een versleutelde dienst onderhandelt de client TLS met het werkelijke TLS-eindpunt. De verkeersverdeling bezit het dienstcertificaat niet en verandert de hybride sleuteluitwisseling van TLS 1.3 niet.

VanNaarHandeling
Infoblox en NetBoxPublicatieWijzen naam en virtueel adres toe, met per API, apps-ingang, platformdienst of eigen poort een afgebakend doel.
ClientPaar van de verkeersverdelingVerbindt op het virtuele adres; de verkeersverdeling geeft TCP door zonder TLS-afsluiting.
FirewallDoeladres van MetalLBLaat alleen de vastgelegde stroom vanuit het adres naar achteren naar het clusteradres toe.
API, ingang of dienstTLS-clientSluit TLS af met een eigen certificaat en TLS-profiel; een HTTP-route voert HSTS.
ToepassingOntvangende gegevensbronControleert identiteit en gegevensrechten, onafhankelijk van de bereikbaarheid.
VoorstelWerking#

Achter de verkeersverdeling ziet de ingang als bron het adres naar achteren van het paar in het ingangssegment, zonder X-Forwarded-For of PROXY-protocol. De verkeersverdeling legt per verbinding clientadres, virtueel adres en doel vast, en het SOC correleert de logboeken van client, virtueel adres en doel.

Publicatie per cluster en dienst

VoorstelOntwerpbesluit#

Ieder applicatiecluster krijgt twee virtuele adressen, elk met een eigen virtuele server en een gezondheidscontrole: api voor de besturing op TCP 6443, naar het API-adres van de gehoste besturing op het clusterbeheer, en apps voor toepassingen op TCP 443, naar het ingangsadres van het cluster in zijn eigen VLAN. Er is geen contentswitch; de namen zijn api.<naam> en *.apps.<naam>.

Toelichting

De draaiboeken leggen servicegroup, lbvserver (TCP of SSL_BRIDGE) en de bindingen aan, zonder sslcertkey, sslprofile, sslvserver of csvserver. De virtuele server voor de API is er voor teams; werkers gebruiken het API-adres rechtstreeks.

VoorstelRegel#

Achter iedere virtuele server staat één doeladres dat alleen die dienst bedient. Iedere gepubliceerde platformdienst en iedere gedeclareerde verbinding met een eigen poort krijgt een eigen virtueel adres en een eigen doeladres; een generieke clusteringang mag geen extra consoles of beheerroutes bereikbaar maken.

Toelichting

Controle: de TLS-scan en een configuratievergelijking. Eigenaar: platformbeheer; het TLS-profiel valt onder de CISO-functie.

VoorstelOntwerpbesluit#

Het gemeenschappelijke paar publiceert naast de applicatieclusters ook de platformeindpunten, elk met een eigen doeladres: de API-publicatie op het clusterbeheer, het portaal, de toegangsvoorziening voor de aanmelding van teams, de aanmeldroutes van de gehoste besturingen voor OAuth, Konnectivity en Ignition, de teamingang van de beheerwerkplek en het ontvangstpunt van het bouwcluster, dat alleen GitLab bereikt. Consoles, standaard- en beheeringangen en de API van het clusterbeheer blijven onbereikbaar.

Toelichting

Zonder deze publicaties en de API op 6443 vanaf kantoor kunnen teams zich niet aanmelden en de API niet gebruiken; zij vullen de vaste stromen tussen de routeringsdomeinen aan. De dynamische test van het bouwcluster gaat via de virtuele adressen van de clusters voor ontwikkelen en beproeven. De verhoogde teamgroep komt alleen mee via de aanmeldroute van de teampool, want de verkeersverdeling filtert niet; gebruik van buiten de teampool is een aanvaard restrisico dat binnen 1 uur wordt gemeld.

VoorstelWerking#

De ingangscontroller van een applicatiecluster is een LoadBalancer-dienst met een adres van MetalLB in het VLAN van de werkers, alleen voor HTTPS op 443. Zij sluit TLS af met het standaardcertificaat *.apps.<naam>.<cel>.dc3.internal uit de tussen-CA van de cel, of geeft TLS bij een passthrough-route ongeopend door aan de toepassing, die dan zelf het TLS-eindpunt is. De ingangscontroller is niet rechtstreeks bereikbaar.

Toelichting

MetalLB en de ingangscontroller verdelen het verkeer over de werkers. Bij de terugvaloptie voor MetalLB bevat de servicegroep de werkers op 443, onder dezelfde zoneregel.

VoorstelWerking#

De gezondheidscontrole van een virtuele server is een TCP-handshake op de doelpoort, los van het TLS-profiel van het doel: zij bewijst dat de poort bereikbaar is, en een afzonderlijke dienstproef controleert TLS en de toepassing. De servicegroep, het doel achter een virtuele server, toont of een gepubliceerd cluster bereikbaar is. Naar achteren controleert de verkeersverdeling geen certificaat, naam of intrekking; ook het certificaat van de API-server gaat ongemoeid door.

VoorstelWerking#

Een publicatie wordt op het actieve lid van het paar ingericht en naar het andere lid gesynchroniseerd; daarna worden de namen geregistreerd en wordt zij vanuit een kantoornetwerk beproefd. In het leverpad volgt zij op de standaardinrichting van het cluster en ontstaat zij binnen de normtijd van 1 uur per stap. Bij intrekking verdwijnen virtuele servers, servicegroepen, namen en een eventueel publiek certificaat, vóór de volumes van het cluster.

Toelichting

Een certificaat wordt alleen voor een publieke naam door het draaiboek geplaatst. Duurt het van samenvoegen tot werkende verbinding langer dan de normtijd, dan krijgt de levering de status ‘Onvolledig’. Controle: de proef van aanmaken en verwijderen, en de leverstatus.

VoorstelRegel#

Mislukt het aanleggen van een publicatie of koppeling, dan verwijdert het draaiboek al het aangelegde: in verkeersverdeling, bron, netwerk en identiteitsbeheer blijft niets achter. Een gedeeltelijk mislukte levering krijgt de status ‘Onvolledig’ met de ontbrekende stap, en het beheer hervat haar zonder dubbele regels of objecten.

Namen

VoorstelRegel#

Namen en adressen worden vóór publicatie toegewezen in Infoblox en geregistreerd in NetBox; wat daar niet vooraf staat, wordt niet gepubliceerd. De automatisering maakt de namen api.<naam> en *.apps.<naam> aan onder <cel>.dc3.internal, met de adressen uit Infoblox.

Toelichting

Controle: een verschilrapport van Infoblox en NetBox. Eigenaar: netwerkbeheer.

VoorstelWerking#

De namen api.<naam> en oauth.<naam> staan in twee weergaven van Infoblox: interne vragers gaan rechtstreeks naar het API-adres op het clusterbeheer, overige vragers naar het virtuele adres op de verkeersverdeling. API-namen blijven celgebonden, ook bij de overname van een bedrijfskritische dienst.

VoorstelRegel#

Namen buiten het RWS-netwerk staan onder een publiek domein van netwerkbeheer, in een met DNSSEC ondertekende zone. Een wijziging van publieke namen of reeksen gaat binnen 14 dagen naar het entiteitenregister.

Toelichting

Eigenaar: netwerkbeheer, met de CISO-functie. De naamvoorziening zelf is een bestaande RWS-dienst, met een dienstafspraak met netwerkbeheer.

VoorstelOntwerpbesluit#

De eerste levering publiceert alleen interne namen; het eerste team publiceert niet buiten RWS. De publieke keten wordt met een testnaam aangetoond bij de acceptatie van de ingang. Publicatie buiten het RWS-netwerk komt als veld in de dienstbeschrijving vanaf de vrijgave voor reguliere productie, voor diensten in reguliere en bedrijfskritische productie, met per naam een certificaat uit de externe PKI in de naamruimte van de route.

TLS en certificaten

VoorstelWaarde#

Op de ingangscontroller van ieder cluster geldt het TLS-profiel: TLS 1.2 en 1.3 aan, oudere versies uit, met de algoritmelijst volgens de cryptografietabel van RWS; dus TLS 1.3, of TLS 1.2 met de toegestane algoritmen. Een HTTP-route voert HSTS. De API-server heeft een eigen profiel, en de verkeersverdeling heeft er geen.

Toelichting

Het profiel Modern geldt als alle clients TLS 1.3 ondersteunen, anders Intermediate; de keuze wordt per pad beproefd.

VoorstelOntwerpbesluit#

Bescherming tegen overbelasting is geborgd met limieten en quota: de verkeersverdeling begrenst het aantal verbindingen per virtuele server, en de ingang past per route een tempogrens toe die voor alle clients samen geldt. HSTS staat per route op de ingang. Het gebruik is per paar en per afnemer zichtbaar, en iedere capaciteitsgrens heeft een actiedrempel.

VoorstelRegel#

Certificaten worden centraal beheerd via de PKI en staan bij de ingang of de dienst, nooit op de verkeersverdeling. Voor interne namen komen zij uit de tussen-CA van de cel, voor de dienstnaam van een bedrijfskritische dienst uit de tussen-CA ‘vloot’ en voor namen buiten het RWS-netwerk per naam uit de externe PKI. Zij gelden ten hoogste 90 dagen, worden bij twee derde van de looptijd zonder onderbreking vervangen en 30 en 7 dagen vóór het verlopen gemeld.

Toelichting

De PKI zelf staat bij geheimen, sleutels en certificaten. Eigenaar: platformbeheer; de keten: PKI-beheer. Controle: het certificaatoverzicht en de meldingen.

VoorstelWerking#

cert-manager in het cluster van de ingang of de dienst geeft interne certificaten uit via een ClusterIssuer van het type vault naar de PKI van OpenBao: een Certificate per ingang voor het standaardcertificaat, en in de teamnaamruimte voor een passthrough-route. De terugvaloptie is uitgifte via de API van OpenBao. Er wordt nooit een eigen certificaat ingesteld voor api-int. Interne clients vertrouwen de interne PKI, externe clients de publieke wortel.

Toelichting

De vault-koppeling van cert-manager met OpenBao wordt in de leeromgeving aangetoond, omdat Red Hat haar alleen met HashiCorp Vault test. Zo is er geen handwerk en blijft de schade bij een gelekte sleutel beperkt.

VoorstelWerking#

Een publiek certificaat komt per naam uit de externe PKI, via een ACME-uitgever of het RWS-aanvraagproces. Een draaiboek plaatst het zonder onderbreking als geheim in de naamruimte van de route, met de sleutel in het geheimenbeheer, en vernieuwt het. Een dagelijkse vergelijking controleert de geplaatste certificaten en toetst het entiteitenregister; een afwijking gaat naar platformbeheer en een afwijkende inrichting als melding naar het SOC.

VoorstelRegel#

Sleutels van publieke certificaten, beheeraccounts van de paren en geheimen van leesaccounts staan alleen in het geheimenbeheer en worden na een mogelijke compromittering binnen 24 uur vervangen.

Toelichting

Controle: een halfjaarlijkse vervangingsproef. Eigenaar: platformbeheer.

Cryptografie en controle

VoorstelRegel#

De cryptografie volgt per pad de cryptografietabel van RWS en staat in het cryptografieoverzicht. Alle dienstprofielen gebruiken dezelfde tabel, zonder MD5-opties, en het platform draait niet in FIPS-modus: algoritmen, sleutelgroottes en protocollen worden per pad ingesteld en getoetst, want een productlabel is geen bewijs voor het volledige pad. Waar een product het ondersteunt, geldt TLS 1.3, anders TLS 1.2 met algoritmen uit de tabel; OpenBao en PostgreSQL hebben TLS 1.3 als minimum.

Toelichting

Getoetst wordt waar TLS eindigt: bij de API, de clusteringang, de dienst en de afzonderlijke beheerverbindingen. Eigenaar: de CISO-functie.

VoorstelRegel#

De hybride quantumveilige sleuteluitwisseling van TLS 1.3 (X25519MLKEM768) blijft ingeschakeld waar het product haar biedt: bij API-server, kubelet en ingangscontroller zet het platform haar niet uit. De verkeersverdeling laat die onderhandeling tussen client en ingang ongemoeid. Etcd biedt haar niet; het dienstennetwerk krijgt haar bij een gekwalificeerde ingebruikname.

VoorstelMaatregel#

Een TLS-scan bevraagt ingangen en API’s per naam via de virtuele adressen, ook na overschakeling naar het tweede lid van een paar, en ziet alleen TLS 1.2 en 1.3 met de toegestane algoritmen. Zij controleert het onderhandelde protocol, de cryptografie, de certificaatketen en de geldigheid; vernieuwing, intrekking en negatieve tests horen bij de acceptatie. Maandelijks toont een TLS- en poortscan vanuit een kantoor- en een applicatienetwerk aan dat ingangsadressen, werkers, API-adressen en beheeradressen niet rechtstreeks bereikbaar zijn.

Verwijzen hiernaar

Onderwerpen 4