OpenKeel: la soluzione Cloud sovrana, francese e di portata europea, del gruppo inherent Scopri inherent

Architettura

SecNumCloud-ready

OpenKeel è progettato per essere SecNumCloud-ready: ciò che è conforme oggi, ciò che è in corso e ciò che resta da far evolvere, requisito per requisito, ciascuno con la sua evidenza nel codice.

Cosa significa SecNumCloud-ready

SecNumCloud (ANSSI, framework 3.2) qualifica un servizio gestito da un fornitore, non un software. Il framework copre l'organizzazione, le risorse umane, la sicurezza fisica, le operazioni, la gestione degli incidenti e la protezione dal diritto extraeuropeo (§ 19.6) quanto la tecnica.

OpenKeel non può quindi essere «qualificato SecNumCloud». Punta a essere una base SecNumCloud-ready: un software che non blocca alcun requisito tecnico del framework, fornisce i meccanismi attesi (tracciabilità, segregazione, cifratura, autenticazione forte) e la documentazione che consente al fornitore di dimostrare la conformità durante l'audit.

  • Ogni riga rimanda a un'evidenza: un file, un test o una configurazione
  • Stato al 2026-11-10
  • Organizzazione, persone e locali restano a carico del fornitore

A che punto siamo

  • 15requisiti conformi
  • 4in corso
  • 18da far evolvere

Conteggiato dalle tabelle seguenti; la parte del fornitore è indicata a parte.

Ogni flusso interno cifrato con TLS

Una PKI interna gestita da cert-manager (emittente openkeel-ca) firma i certificati dei servizi; la CA dell'operatore MariaDB firma quelli del database. Ogni servizio verifica il server con cui parla.

FlussoProtocolloFiducia
Client → Ingress → APIHTTPS, ricifrato verso backend HTTPS (Skyline, console Nova, wsproxy di Zun)Certificato pubblico; certificati interni cert-manager
API ↔ APIREST su HTTPS, URL interni https nel catalogoPKI interna, emittente cert-manager openkeel-ca
Servizi → MariaDBSQL su TLS, richiesto dal serverCA dell'operatore MariaDB, verificata da ogni servizio
Servizi → RabbitMQAMQPS (RPC e notifiche)PKI interna openkeel-ca
Neutron → OVN NB/SBOVSDB su ssl:, TLS mutuoCertificati client e server di OVN

Niente più Memcached né Redis: nessun componente li leggeva, e okadm li rimuove dalle installazioni esistenti. Solo le porte di amministrazione :9090 (salute, metriche), la distribuzione Erlang tra i nodi RabbitMQ e il gateway RGW di --ceph-s3 trasportano ancora traffico in chiaro nel cluster. L'intera tabella è nel codice (global.tls.internal, attivo per impostazione predefinita) ed è stata verificata nel laboratorio il 2026-11-08.

Immagini: un registry controllato, uno SBOM e una firma

Ogni immagine eseguita da un cluster di produzione proviene dal registry del fornitore: quelle di OpenKeel, costruite dal workspace, e quelle di terzi, copiate lì con il loro SBOM. Entrambe sono firmate con la chiave del fornitore.

ImmaginiRegistrySBOM e provenienzaFirma
Servizi OpenKeel, okadm, sito webCostruite da make release e caricate in REGISTRY; i chart vi puntano (global.imageRegistry)SBOM SPDX per piattaforma e provenienza SLSA, allegati da BuildKit nell'indice dell'immagine; esportati da make sbomcosign, per digest dell'indice (make sign), attestazioni comprese
Binari okadmFile di rilascio in dist/cli, con SHA256SUMSSBOM SPDX per binario (syft)Checksum
Prerequisiti: cert-manager, operatori MariaDB e RabbitMQ, MariaDB, RabbitMQ, TraefikCopiate da registry a registry da make mirror-prereqs, tutte le piattaforme, un prefisso per registry di origineLo SBOM dell'editore quando la copia lo conserva, altrimenti uno SBOM syft allegato con cosign attest (MIRROR_SBOM=1)Ogni copia firmata con la chiave OpenKeel
Ironic (immagini Kolla upstream)Fissate per digest nel manifesto di versione di okadm, scaricate tramite global.imageRegistryTramite il mirror (MIRROR_EXTRA_IMAGES)Tramite il mirror

Il cluster scarica dal mirror senza modificare alcun chart: un hosts.toml per registry di origine per containerd, machine.registries.mirrors sotto Talos. Nessuna firma, SBOM o digest di immagine viene inviato ai servizi pubblici di Sigstore (build/cosign/signing-config-private.json). Fonte: BUILD.md.

Conforme oggi

Fatto nel codice e nei chart, oppure documentato per il fornitore.

RequisitoSecNumCloud 3.2StatoEvidenzaProssimo passo
Controllo del codice, nessuna dipendenza da un fornitore non europeo§ 19FattoRiscrittura open source in Go di Keystone, Nova, Neutron, Cinder, Glance, Manila, Barbican… (openkeel-*); nessuna telemetria, nessuna chiamata in uscita verso terziRicostruire le immagini in una CI europea
Registrazione delle azioni APIcap. 12FattoUn evento CADF per chiamata su ogni API (internal/audit), eventi di identità di Keystone (internal/notify), contatori openkeel_audit_events_{sent,dropped,failed}_totalAggiungere kube-apiserver e l'API di Talos alla traccia di audit
Conservazione e integrità dei logcap. 12FattoDocumentato in openkeel-chart/docs/audit-trail.md: archivio WORM (object lock, modalità compliance), 12 mesi di cui 3 online (Loki 400 d), NTP sui nodi Talos, alert sulle perdite, regole SIEMDimostrarlo su una piattaforma reale (fornitore)
Controllo degli accessi alle APIcap. 9FattoPolicy RBAC di OpenStack (admin, member, reader, service, scope di progetto e di sistema) applicate da ogni servizio; rifiuti 403 come in OpenStack, coperti dai test di conformitàRidurre gli account di servizio con privilegi eccessivi
Gestione dei segreti e delle chiavicap. 10FattoBarbican in Go con un HSM PKCS#11 (internal/crypto/p11.go, test con SoftHSM) o Vault / OpenBao; rotazione della KEK (internal/manage/rotate.go)HSM qualificato ANSSI in produzione
Isolamento dei container dei tenantcap. 13FattoZun sotto Kata Containers per impostazione predefinita (RuntimeClass kata): un kernel per container di tenant—
Cifratura del control plane di retecap. 10, 13FattoOVN Northbound / Southbound in TLS reciproco (ssl:) tra Neutron, ovn-octavia-provider, FWaaS, VPNaaS, ovn-bgp-agent e OVN central—
Le API opzionali possono essere disattivatecap. 13Fattoec2-api può essere disattivato nel Configurator (componente ec2-api del suo catalogo)—
Autenticazione a più fattoricap. 9FattoKeystone: metodo TOTP (internal/keystone/totp.go) e regole MFA per utente (options.multi_factor_auth_rules, internal/api/mfa_test.go)Federazione OIDC
Cifratura dei flussi verso il databasecap. 10FattoMariaDB con TLS obbligatorio (infrastructure.mariadb.tls.required: true), la CA dell'operatore MariaDB verificata da ogni servizio (global.tls.trustedCAs, passato da okadm a ogni release), tls=skip-verify rifiutato; applicato e verificato nel laboratorio (require_secure_transport su ON)Verificare la replica Galera in TLS su un cluster a tre nodi (il laboratorio ne ha uno solo)
Suite TLS dei listenercap. 10Fattointernal/tlsx in tutti i 16 servizi (una copia di quello di Keystone): TLS 1.2 come minimo, solo ECDHE con AES-GCM o ChaCha20 (guida TLS dell'ANSSI), certificato riletto al rinnovo; RabbitMQ limitato a TLS 1.2/1.3 e alle suite AEAD—
Superficie di attacco ridotta: nessun servizio dati inutilizzatocap. 13FattoMemcached e Redis rimossi: nessun componente li leggeva; okadm li rimuove dalle installazioni esistenti (internal/deploy/retired.go)—
Cifratura di ogni flusso internocap. 10Fattoglobal.tls.internal: true per impostazione predefinita: CA interna cert-manager (openkeel-ca), un certificato per chart (ECDSA P-256, 90 giorni); RabbitMQ solo in AMQPS; URL interni e catalogo interno in https://; Ingress verso backend HTTPS verificati (Traefik ServersTransport, annotazioni nginx); passo okadm rabbitmq-trust; rapporti di stato di ovn-octavia-provider verso un punto di ascolto TLS dedicato di Neutron (openkeel-neutron-lbaas:9878, fuori dalla porta di amministrazione). Verificato nel laboratorio il 2026-11-08: 18 punti di ascolto in HTTPS con certificato verificato, HTTP in chiaro rifiutato, connessioni AMQP in TLS 1.3Cattura di rete: nessun flusso applicativo in chiaro al di fuori di :9090
Integrità e tracciabilità delle immagini OpenKeelcap. 14FattoOgni immagine costruita con --sbom=true --provenance=mode=max (ATTEST=1, predefinito): un SBOM SPDX per piattaforma (pacchetti Debian della base distroless, ogni modulo Go) e la provenienza SLSA nell'indice dell'immagine; make sbom li esporta in dist/sbom, con lo SBOM di ogni binario okadm; make sign firma ogni indice per digest con cosign, il che copre le sue attestazioni (build/sbom.sh, BUILD.md)Imporre le firme all'ammissione
Immagini di terzi su un registry controllato, con uno SBOMcap. 14Fattomake mirror-prereqs copia le immagini dei prerequisiti (cert-manager, operatori MariaDB e RabbitMQ, MariaDB, RabbitMQ, Traefik: 14 immagini) da registry a registry, tutte le piattaforme, secondo il manifesto di versione di okadm; containerd o Talos reindirizzano ogni registry di origine al mirror; MIRROR_SBOM=1 esporta uno SBOM per copia, ne allega uno con cosign attest dove l'editore non lo fornisce e firma ogni copia con la chiave OpenKeel; le immagini OpenKeel e quelle di Ironic, fissate per digest, sono scaricate tramite global.imageRegistryReplicare le immagini che KubeVirt e CDI determinano a runtime

I numeri di capitolo orientano la lettura; vanno verificati rispetto al framework pubblicato prima di costruire la matrice di conformità. Fonte: openkeel-docs/SECNUMCLOUD-STATUS.md.

In corso

RequisitoSecNumCloud 3.2StatoEvidenzaProssimo passo
Suite TLS uniformicap. 10In corsoServizi (tlsx) e RabbitMQ allineati; resta il lato pubblico dei controller di IngressProfilo TLS ANSSI sui punti di ingresso pubblici dell'Ingress
Chart coerenti—In corsoConflitto di nomi dell'helper svc.volumes tra sub-chart (montaggio delle CA attendibili)Prefissare gli helper per chart
Immagini costruite e controllate dal fornitorecap. 14In corsomake release costruisce ogni immagine multi-architettura dal workspace (distroless senza root, UID 65532, senza shell) con il suo SBOM, la sua provenienza e la sua firma; la configurazione di firma predefinita non usa alcuno dei servizi pubblici di Sigstore (build/cosign/); Ironic usa ancora le immagini Kolla (Python) upstream, replicate per digestEseguire make release in una CI europea; sostituire le immagini Kolla
Sorveglianza delle vulnerabilità delle immaginicap. 14In corsomake vuln (govulncheck, go mod verify) su ogni modulo Go; gli SBOM delle immagini OpenKeel e di terzi si analizzano senza riscaricare le immagini (grype, trivy sbom)Analizzare gli SBOM a ogni rilascio e periodicamente per le nuove CVE

Da far evolvere: identità, accesso e privilegio minimo

RequisitoSecNumCloud 3.2StatoEvidenzaProssimo passo
MFA degli amministratori tramite un IdPcap. 9Da fareSolo TOTP localeFederazione OIDC in Keystone (IdP europeo, MFA gestita dall'IdP), mappata sui ruoli
MFA per gli amministratori Kubernetescap. 9Da fareAccesso tramite kubeconfig con un certificato client (okadm access)OIDC e MFA sul kube-apiserver, ruoli Kubernetes nominativi, nessun cluster-admin permanente
Configurator autenticatocap. 9Da fareUI senza login; la sua ClusterRole modifica i nodi e legge tutti i log (deploy/kustomize/base/rbac.yaml)Autenticazione OIDC, una ClusterRole più ridotta, accesso solo dal SI di amministrazione
Account di servizio minimicap. 9Da fareRuolo admin per ec2-api (all_tenants), Masakari, Zun (binding:host_id), Skyline e neutron-vpnaas; openstack-exporter con la password di adminRuoli dedicati e regole di policy mirate per servizio; un exporter in sola lettura (reader di sistema)

Da far evolvere: cifratura a riposo, cancellazione e crittografia

RequisitoSecNumCloud 3.2StatoEvidenzaProssimo passo
Una chiave per tenant per i volumicap. 10Da fareCinder registra la chiave fissa 00000000-0000-0000-0000-000000000000 e lascia la cifratura alla StorageClassCollegare Cinder a Barbican: una chiave per volume cifrato, nel progetto del tenant
Cifratura dei dischicap. 10Da fare—Longhorn LUKS per volume; cifratura di MariaDB, Glance e Swift
Cancellazione a fine contrattocap. 19Da fare—Crypto-shredding: distruggere le chiavi Barbican del progetto, con una procedura tracciata
Nessun algoritmo obsoletocap. 10Da fareFirme EC2 v0/v1 in HMAC-SHA1 accettate da Keystone (internal/keystone/ec2sign.go)Un'opzione per accettare solo v2 (SHA-256) e v4, con le vecchie disattivate per impostazione predefinita in produzione
HSM qualificatocap. 10Da farePKCS#11 generico testato con SoftHSMValidare con un HSM qualificato ANSSI

Da far evolvere: supply chain

RequisitoSecNumCloud 3.2StatoEvidenzaProssimo passo
Firme imposte all'ammissionecap. 14Da fareImmagini firmate e attestate, ma il cluster esegue qualsiasi immagineKyverno verifyImages o il policy-controller di Sigstore con cosign.pub, per le immagini di OpenKeel come per quelle degli operatori

Da far evolvere: SI di amministrazione, tracciabilità e flussi

RequisitoSecNumCloud 3.2StatoEvidenzaProssimo passo
SI di amministrazione separatocap. 9, 13; PA-022Da fareUna proposta scritta: zone Z1, Z2 e Z3 (openkeel-docs/SECNUMCLOUD-ADMIN-SI.md)Rete di amministrazione, bastion, postazioni di amministrazione (fornitore)
Control plane separato dal data planecap. 13Da fareUn solo cluster Talos ospita le API e i workload dei tenantFase 1: irrobustimento del cluster unico, agenti Nova e Zun centralizzati (nessun DSN sugli hypervisor); obiettivo: cluster di controllo e di dati separati
Registrazione dell'amministrazione della piattaformacap. 12Da fareSolo le API OpenStack sono tracciatePolicy di audit del kube-apiserver, log dell'API di Talos, del bastion e dei BMC, archiviati come la traccia CADF
Porte di amministrazione cifratecap. 10Da fareSalute e metriche su :9090 in HTTP in chiaro, dentro il cluster; i rapporti di stato di ovn-octavia-provider non passano più di lì: Neutron li riceve su un punto di ascolto TLS dedicatoTLS (o mTLS di Prometheus) su :9090, oppure una NetworkPolicy che lasci entrare solo Prometheus
Nessun supporto remoto extraeuropeo§ 19.6Da fareSupporto remoto degli storage array (Pure1, accesso remoto del vendor) non disattivato da OpenKeelDocumentare e verificare che sia disattivata nella guida di installazione di produzione
Distribuzione Erlang di RabbitMQcap. 10Da fareTraffico tra i nodi RabbitMQ (porta 25672) non cifrato, dentro il clusterTLS per la distribuzione Erlang (ssl_dist), che l'operatore non gestisce
Gateway RGW (--ceph-s3)cap. 10Da fareRGW raggiunge Keystone in HTTPS verificato (caBundleRef), ma serve S3 e Swift in HTTP in chiaro sulla porta 80 nel clusterPorta sicura di RGW con un certificato della CA interna
Chiamate di okadm alle APIcap. 10Da fareTramite il proxy dei servizi dell'API server di Kubernetes in https:: cifrato, senza verificare i certificati dei podChiamare tramite l'Ingress, o verificare lato client

Obiettivo: tre zone, non due

Le API di OpenKeel fanno parte del servizio venduto ai tenant: non sono il SI di amministrazione. La proposta separa quindi tre zone, e le interfacce di amministrazione di Z2 e Z3 (kube-apiserver, API di Talos, BMC, etcd, porte di amministrazione) sono raggiungibili solo da Z1.

ZonaContenutoChi accede
Z1, SI di amministrazionePostazioni di amministrazione, bastion, IdP degli amministratori (MFA), runner di okadm e repository Git dei values, Configurator, raccolta e archiviazione dei log (Loki, SIEM, bucket WORM), mirror firmato del registrySolo gli amministratori, dalle loro postazioni
Z2, control plane del servizioAPI di OpenKeel, conductor, scheduler, MariaDB, RabbitMQ, Barbican, Ingress pubblicoTenant (API pubbliche tramite l'Ingress); amministratori tramite Z1
Z3, data planeHypervisor (KubeVirt), nodi Zun (Kata), storage (Longhorn), gateway di rete (OVN gateway, BGP)Tenant (le loro VM e i loro container); amministratori tramite Z1

Raccomandazione della proposta: una rete di amministrazione e un cluster unico irrobustito fin da ora, in ogni deployment di produzione; agenti Nova e Zun centralizzati come primo sviluppo; cluster di controllo e di dati separati come obiettivo per un'offerta qualificata. Nulla di ciò è ancora implementato.

Ordine dei lavori

  1. 1

    TLS interno

    Completare TLS su ogni flusso interno, poi verificarlo con una cattura di rete.

  2. 2

    Identità e chiavi

    OIDC e MFA per gli amministratori, cifratura a riposo con una chiave per tenant.

  3. 3

    Supply chain e amministrazione

    Immagini costruite in una CI europea, firme imposte all'ammissione, il SI di amministrazione e la separazione dei piani.

  4. 4

    Matrice e pre-audit

    La matrice dei requisiti, una revisione interna, poi un pre-audit da parte di un auditor qualificato.

La parte del fornitore

La maggior parte del framework riguarda il fornitore che gestisce il servizio. OpenKeel non lo sostituisce, ma non deve ostacolarlo, e fornisce parte delle evidenze.

Organizzazione e persone

Politica di sicurezza, ruoli, abilitazioni e formazione del personale. OpenKeel fornisce ruoli nominativi e la traccia di audit delle loro azioni.

Sicurezza fisica

Data center, controllo degli accessi alle sale e all'hardware. OpenKeel gira sui server del fornitore stesso, in Francia e in Europa.

Operazioni

Change, backup, gestione delle vulnerabilità e della capacità. okadm pianifica, installa e aggiorna un componente alla volta; Grafana mostra lo stato di ogni servizio.

Gestione degli incidenti

Rilevamento, gestione e notifica degli incidenti. La traccia CADF, Loki e gli alert di Prometheus forniscono i fatti.

Protezione dal diritto extraeuropeo

§ 19.6: proprietà, localizzazione dei dati e supporto nell'Unione europea. OpenKeel è open source, senza telemetria e senza chiamate in uscita.

Evidenze per l'audit

Configurazioni, policy e log raccolti nella matrice di conformità, versionati con il codice.

Verso la qualifica

PassoCosaEsito
Matrice dei requisitiSecNumCloud 3.2 capitolo per capitolo: responsabile (OpenKeel o fornitore), meccanismo, provaMatrice di conformità versionata con il codice
Revisione internaOgni prova verificata su un'installazione in modalità produzioneRapporto di revisione, lacune aperte tracciate
Pre-auditAuditor qualificato, su una piattaforma pilota completaRapporto di pre-audit e piano di trattamento
Penetration test PASSIAPI pubbliche, evasione da VM e da Kata verso il piano di controllo, SI di amministrazioneRapporto, correzioni e nuovo test
CSPN (facoltativa)Componenti critici: Keystone, Barbican, isolamento di Kata e KubeVirtCertificazione di primo livello dei componenti scelti