GNU/Linux >> Linux Esercitazione >  >> Linux

Esplorando il nuovo comando segreto Podman

Tutti trattiamo informazioni sensibili quando lavoriamo con i sistemi informatici. Gli amministratori di sistema spostano le chiavi SSH e gli sviluppatori web devono preoccuparsi dei token API. Il problema con le informazioni sensibili è che sono sensibili , il che significa che potrebbe causare un disastro per la sicurezza se cadesse in qualche modo nelle mani sbagliate. I contenitori non fanno eccezione a questo problema:gli utenti devono utilizzare le informazioni riservate all'interno dei contenitori e allo stesso tempo devono mantenere le informazioni riservate al sicuro.

[ Potresti anche divertirti a leggere: Contenitori rootless utilizzando Podman ]

Perché i segreti?

Cosa succede se qualcuno deve eseguire un database in un container e le credenziali per il database devono essere inserite in un container? Questo può essere fatto in diversi modi. Puoi semplicemente creare un file durante l'esecuzione del contenitore e archiviare le credenziali lì. Tuttavia, questo è pericoloso. Se il contenitore viene esportato nell'immagine, verranno esportate anche le credenziali. Chiunque abbia il controllo sull'immagine potrà accedere al database. Un'altra opzione è quella di trasmettere le credenziali utilizzando la CLI, ma ciò richiede l'inserimento dei dati ogni volta, il che può essere noioso.

E se esistesse un metodo per la gestione centralizzata delle informazioni sensibili?

Il nuovo comando, podman secret , è un insieme di sottocomandi e opzioni che gestisce le informazioni sensibili in modo facile e sicuro. Consente agli utenti di utilizzare facilmente il contenuto sensibile all'interno di un contenitore, ma impedisce che finisca da qualche parte al di fuori del contenitore, ad esempio in un registro di immagini. Abbiamo implementato tutta una serie di sottocomandi per podman secret :create , rm , ls e inspect , per creare e manipolare segreti, nonché un --secret flag per l'inserimento di un segreto in un contenitore.

Come si usa?

Quando podman secret create viene eseguito, Podman si aspetta un file con i dati da archiviare.

$ echo "secretdata" > secretfile
$ podman secret create secretname secretfile
e17465c9772b38f336fc4cbac

Il podman secret inspect comando non visualizzerà i dati memorizzati ma solo i metadati sul segreto.

$ podman secret inspect secretname
[
    {
        "ID": "e17465c9772b38f336fc4cbac",
        "CreatedAt": "2021-02-12T09:05:49.661504248-05:00",
        "UpdatedAt": "2021-02-12T09:05:49.661504248-05:00",
        "Spec": {
            "Name": "secretname",
            "Driver": {
                "Name": "file",
                "Options": null
            }
        }
    }
]

Ovviamente puoi anche elencare i tuoi segreti e rimuoverli.

$ podman secret ls
ID                         NAME        DRIVER      CREATED       UPDATED       
e17465c9772b38f336fc4cbac  secretname  file        1 second ago  1 second ago  

$ podman secret rm secretname
e17465c9772b38f336fc4cbac

Per utilizzare il segreto e accedere ai dati segreti, è possibile creare o eseguire un contenitore con un --secret bandiera. All'interno del contenitore, è possibile accedere ai dati segreti all'interno di un file in /run/secrets/secretname . Puoi usare il --secret contrassegna più volte per aggiungere numerosi segreti al contenitore.

$ podman run --secret secretname --name foo alpine cat /run/secrets/secretname
secretdata

I segreti non verranno salvati in un'immagine o esportati con un podman commit o un podman export comando. Ciò impedisce che le informazioni sensibili vengano accidentalmente inviate a un registro pubblico o fornite alla persona sbagliata.

$ podman commit foo secrimg
Getting image source signatures
Copying blob 1119ff37d4a9 skipped: already exists  
Copying blob 3dd965b4468a done  
Copying config 263fcafb79 done  
Writing manifest to image destination
Storing signatures
263fcafb790dfdf6a7312953d3600ff9d990a664ec341ded7d0a6dfa1e71bb5d

$ podman run secrimg cat /run/secrets/mysecret
cat: can't open '/run/secrets/mysecret': No such file or directory

Come funziona?

Quando un utente usa il --secret flag, Podman recupera i dati segreti e li memorizza su un tmpfs . Quindi monta il file nel contenitore in /run/secrets/secretname . Da lì, il segreto può essere utilizzato all'interno del contenitore come di consueto, che si tratti di chiavi di database o certificati TLS.

I segreti esistono solo sulla macchina del creatore segreto o all'interno di un contenitore quando è pronto per essere eseguito. I segreti sono progettati specificamente per non esiste nelle immagini:un podman commit non inserirà il segreto nell'immagine, né un podman export . Se qualcuno dovesse creare un'immagine da un contenitore con un segreto, quindi eseguire un contenitore da detta immagine, il file in /run/secret/mysecret non esisterebbe. Ciò impedisce che i dati segreti vengano inviati accidentalmente a un registro, impedendo così che informazioni sensibili e compromettenti esistano ovunque non dovrebbero essere.

Lavori futuri

Per ora, questa soluzione fa il lavoro di gestione dei segreti. Tuttavia, l'unico driver implementato al momento per archiviare le informazioni sensibili è un file driver, il che significa che i dati verranno archiviati su disco in file non crittografati controllati dall'host del contenitore. Stiamo pianificando ulteriori miglioramenti, come l'implementazione della crittografia o l'utilizzo di altri driver. Vorremmo anche supportare le variabili di ambiente segrete, che sono variabili di ambiente che vengono impostate all'interno del contenitore ma non vengono registrate nell'immagine. Il coinvolgimento della comunità in queste attività sarà accettato con gratitudine.

[ Iniziare con i container? Dai un'occhiata a questo corso gratuito. Distribuzione di applicazioni containerizzate:una panoramica tecnica. ]

Fantastico. Lo voglio.

I segreti di Podman sono disponibili in Podman 3.1.0. Se vuoi fare un tentativo, puoi ottenere Podman seguendo queste istruzioni di installazione. Se hai già Podman, puoi ottenere la funzione dei segreti aggiornando a Podman 3.1.0. Sentiti libero di contattare il team Podman anche per qualsiasi domanda o feedback. Gli sviluppatori Podman frequentano spesso il canale freenode #podman. Puoi inviarci un'e-mail utilizzando la mailing list di Podman. Abbiamo anche incontri mensili della comunità. Sentiti libero di entrare e dire ciao anche lì.


Linux
  1. Introduzione al comando alternatives in Linux

  2. Un'introduzione al comando diff

  3. Come utilizzare il comando basename?

  4. Lo scopo del comando "installa"?

  5. Spiega le opzioni del comando Readlink?

Spiegazione del comando tar di Linux

Esplorando il rapporto di audit Lynis

Padroneggia la riga di comando di Linux

Il comando select in Linux

Il comando timer in Linux

Esempi essenziali del comando ps in Linux