Iscriviti al nostro blog

Un registro privato può essere utile per l'archiviazione di immagini dei container Linux per le applicazioni in un'infrastruttura interna controllata (e potenzialmente più sicura).

I container Linux sono tecnologie che consentono di raggruppare e isolare le applicazioni con l'intero ambiente di runtime, completo di tutti i file necessari per l'esecuzione. Diventa così più facile spostare le applicazioni tra gli ambienti (sviluppo, test, produzione, ecc.).

 

Red Hat nominata Leader nel Gartner® Magic Quadrant™ 2023

Grazie alla completezza della sua visione e alla sua capacità di esecuzione, Red Hat è stata nominata tra le aziende leader del Magic Quadrant™ del 2023 per la gestione dei container.

In questo articolo illustrerò come creare un registro privato semplice e predisposto per SSL/TLS con un profilo di sicurezza più avanzato, utilizzabile per l'archiviazione dei container in generale e come integrarlo con Red Hat OpenShift, al fine di eseguire deployment OCP disconnessi. Può essere utilizzato anche nei casi in cui OperatorHub non ha accesso a Internet.

Requisiti

Avremo bisogno di:

  • FQDN: registry.rhbrlabs.com
  • Sistema operativo: Red Hat Enterprise Linux 8.6 e versioni successive
  • SELinux: enforcing
  • Firewalld: abilitato
  • Registro: Podman
  • Strumenti Apache
  • Volume: 100 Gb montati su /data

Questo registro supporta totalmente le installazioni disconnesse di OpenShift.

Installazione

Per ottenere il massimo in termini di sicurezza del sistema, l'installazione deve prevedere l'utilizzo della crittografia, oltre alle funzionalità di sicurezza già disponibili in Linux.

Crea le directory richieste:

[root@registry ~]# mkdir -p /data/registry/{auth,certs,data}

Certificati

Genera i certificati per il registro dei container. In questo esempio creiamo certificati con una validità di dieci anni:

[root@registry ~]# openssl req -newkey rsa:4096 -nodes -sha256 \
-keyout /data/registry/certs/registry.rhbrlabs.com.key -x509 -days 3650 \
-out /data/registry/certs/registry.rhbrlabs.com.crt \
-subj "/C=US/ST=NorthCarolina/L=Raleigh/O=Red Hat/OU=Engineering/CN=registry.rhbrlabs.com" \
-addext "subjectAltName = DNS:registry.rhbrlabs.com"

Il sistema operativo deve considerare attendibili i certificati generati.

Copia il certificato generato nella directory attendibile anchors ed esegui update-ca-trust:

[root@registry ~]# cp /data/registry/certs/registry.rhbrlabs.com.crt /etc/pki/ca-trust/source/anchors/

[root@registry ~]# update-ca-trust

Account utente

Per controllare gli accessi al registro, bisogna creare gli account utente. L'esempio seguente illustra la creazione di un account per il registro utenti.

Genera un file di autenticazione per il registro delle immagini:

[root@registry ~]# dnf -y install httpd-tools

[root@registry ~]# htpasswd -bBc /data/registry/auth/htpasswd registry redhat12345678

Segreto HTTP

Oltre all'account utente, abbiamo bisogno di un segreto per incrementare l'affidabilità dell'accesso.

Genera un segreto casuale:

[root@registry ~]# date | md5sum

10f207a4cbba51bf00755b5a50718966

Software di registro

Con tutti i dati necessari a disposizione, è il momento di creare il registro.

Crea il registro dei container utilizzando l'immagine docker.io/library/registry:2:

[root@registry ~]# dnf -y install podman

[root@registry ~]# podman create --name ocp-registry --net host -p 5000:5000 \ -v /data/registry/data:/var/lib/registry:z -v /data/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry" \ -e "REGISTRY_HTTP_SECRET=10f207a4cbba51bf00755b5a50718966" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /data/registry/certs:/certs:z \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.rhbrlabs.com.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/registry.rhbrlabs.com.key docker.io/library/registry:2

Il comando riportato in precedenza genera un messaggio simile a questo:

Trying to pull docker.io/library/registry:2...
Getting image source signatures
Copying blob fd4a5435f342 done 
Copying blob 213ec9aee27d done 
Copying blob 4583459ba037 done 
Copying blob b136d5c19b1d done 
Copying blob 6f6a6c5733af done 
Copying config dcb3d42c17 done 
Writing manifest to image destination
Storing signatures
Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use
22633f37262a4ab2d64fc8beb44bb80618b11802974fb2f45d31d98db3cf14e8

Ora il registro è pronto all'uso, ma c'è bisogno di un metodo per controllare l'avvio e l'arresto del servizio.

Controllo dell'avvio

Crea un file UNIT dedicato al registro per far partire automaticamente il container all'avvio:

[root@registry ~]# cat /etc/systemd/system/ocp-registry.service

[Unit] Description=OCP Registry [Service] Restart=always ExecStart=/usr/bin/podman start -a ocp-registry ExecStop=/usr/bin/podman stop -t 10 ocp-registry [Install] WantedBy=network-online.target

Avvia il container:

[root@registry ~]# systemctl daemon-reload

[root@registry ~]# systemctl enable --now ocp-registry.service
Private registry running

Registro privato in esecuzione

Firewall

Noi stiamo utilizzando un firewall locale, pertanto dobbiamo autorizzare la porta di servizio del registro.

Autorizza la porta TCP 5000 su Firewalld:

[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp

[root@registry ~]# firewall-cmd --reload

Verifica del funzionamento del registro

A questo punto controlliamo l'accesso al nuovo registro.

Verifica che l'autenticazione e l'SSL/TLS ritenuto attendibile funzioni:

[root@registry ~]# curl -u 'registry:redhat12345678' https://registry.rhbrlabs.com:5000/v2/_catalog

{"repositories":[]}

Integrazione con Red Hat OpenShift

Se intendi utilizzare il registro con OCP, crea un file con le informazioni di autenticazione in formato base64.

Genera un file temporaneo con le informazioni di autenticazione per le installazioni disconnesse di OpenShift:

[root@registry ~]# cat <<EOF > ~/registry-secret.json
"registry.rhbrlabs.com:5000": {
   "email": "registry@redhat.com",
   "auth": "$(echo -n 'registry:redhat12345678' | base64 -w0)"
}
EOF

Conclusioni

Ora il nuovo registro privato con funzionalità di sicurezza aggiuntive è operativo. Un servizio di registro privato è un ottimo metodo per controllare gli accessi e soddisfare standard di sicurezza più rigorosi, dal momento che i servizi di registro pubblici sono più soggetti a problematiche di sicurezza.

In questo post ti ho accompagnato nella creazione da zero di un registro ottimizzato per la sicurezza. È una soluzione efficiente, ma non dispone di funzionalità avanzate come l'alta disponibilità, il mirroring, il caching e la replica geografica, già presenti in soluzioni più robuste.

Tutte queste funzioni, insieme alla scansione delle vulnerabilità dei container, al supporto dello storage di oggetti e alla scalabilità automatica, sono integrate in Red Hat Quay.

La piattaforma per il registro dei container Red Hat Quay è una soluzione ottimizzata in termini di sicurezza per lo storage, la distribuzione e la governance dei container e degli artefatti cloud native su qualsiasi infrastruttura. È disponibile come componente standalone o può essere eseguita su Red Hat OpenShift.


Sull'autore

Andre Rocha is a Consultant at Red Hat focused on OpenStack, OpenShift, RHEL and other Red Hat products. He has been at Red Hat since 2019, previously working as DevOps and SysAdmin for private companies.

Read full bio

Ricerca per canale

automation icon

Automazione

Novità sull'automazione IT di tecnologie, team e ambienti

AI icon

Intelligenza artificiale

Aggiornamenti sulle piattaforme che consentono alle aziende di eseguire carichi di lavoro IA ovunque

open hybrid cloud icon

Hybrid cloud open source

Scopri come affrontare il futuro in modo più agile grazie al cloud ibrido

security icon

Sicurezza

Le ultime novità sulle nostre soluzioni per ridurre i rischi nelle tecnologie e negli ambienti

edge icon

Edge computing

Aggiornamenti sulle piattaforme che semplificano l'operatività edge

Infrastructure icon

Infrastruttura

Le ultime novità sulla piattaforma Linux aziendale leader a livello mondiale

application development icon

Applicazioni

Approfondimenti sulle nostre soluzioni alle sfide applicative più difficili

Original series icon

Serie originali

Raccontiamo le interessanti storie di leader e creatori di tecnologie pensate per le aziende