‫Bine,
‫deci o caracteristică nouă în 1. 13. 1 a fost sprijinul deplin pentru secrete.
‫Dacă ar fi trebuit să creez o linie de tag-uri despre ceea ce este, este în esență cea mai ușoară soluție sigură pentru stocarea de secrete
‫în Swarm. "Spun că
‫este cea mai ușoară deoarece este construită în Swarm, este scoasă
‫din cutie și nu trebuie să faci nimic pentru ao folosi. Atâta timp cât ați inițializat roiul și versiunea
‫voastră 1. 13
‫sau mai nou, ai secrete. Spun că este sigur, deoarece a fost proiectat de la început pentru
‫a fi criptat pe disc pentru a fi criptat în tranzit și pentru a fi disponibil doar locurilor care trebuie să fie.
‫Și asta este exact ceea ce avem nevoie.
‫Deci, ce este un secret? Un secret, în acest caz, clasifică tot ce nu vreți pe
‫prima pagină a unui ziar. Dacă a intrat pe prima pagină și trebuia să
‫o schimbați, este un secret.
‫Este un nume de utilizator
‫sau o parolă, este un certificat TLS sau
‫cheile pentru aceasta, este
‫o cheie SSH, este o chei API Twitter, este o cheie Amazon, este ceva de care ai nevoie pentru a permite conectivitatea
‫între lucruri este probabil un secret și ar trebui fi protejat.
‫Până acum nu am avut multe opțiuni grozave pentru Swarm.
‫Există cu siguranță o mulțime de opțiuni, cum ar fi Vault și alte instrumente excelente pentru stocarea de secrete, dar ele nu
‫au fost construite și au nevoie de o configurație separată a infrastructurii doar pentru a putea chiar să
‫începi să le folosești.
‫Deci, putem stoca aici tot ce este un șir sau un binar până la. 5MB în dimensiune.
‫Iar partea cea mai tare despre asta este că nu cere ca aplicația să fie rescrisă pentru
‫ao folosi.
‫Nu este necesar ca aplicația dvs. să vorbească cu un serviciu web altundeva pentru a obține aceste informații.
‫Să vedem cum funcționează.
‫De la 1. 13. 0 baza de date Swarm Raft este criptată pe disc în mod implicit. Dacă instalați Docker și faceți un
‫init de roiuri ca în trecut, este o
‫bază de date criptată.
‫Și când închide serviciul, este criptat cu cheile stocate în siguranță.
‫Se stochează doar pe discul nodurilor de manager și sunt singurele care au cheile pentru a
‫le debloca sau a le decripta.
‫Acest lucru există deja în Swarm, dar, în esență, modul în care cheile se
‫prăbușește la containere se face prin planul de comandă sau prin comunicațiile de
‫rețea TLS criptate între administratori și muncitori. Și această conexiune era deja sigură, a folosit deja TLS și autentificarea
‫PKI reciprocă, așa că a fost o modalitate foarte bună de a folosi acel canal existent pentru a aduce aceste secrete în containerele noastre.
‫Modul în care le-am înconjurat este că noi le-am pus de fapt în baza de date Swarm folosind comenzile
‫Docker secrets.
‫Apoi îi atribuim serviciilor dacă folosim comenzile de serviciu sau un fișier de stivă pentru a le spune
‫lui Swarm căruia i se permite să folosească acest secret. Cheia aici este că doar pentru că există un container pe o
‫gazdă sau pe un nod și ați atribuit cheia acestui serviciu, nu înseamnă că alte containere pot avea
‫acces la el.
‫Deoarece acesta este construit în Docker Engine, Docker Worker păstrează acel cheie securizat doar în memorie și ajunge doar la containerele
‫de pe acel nod care are nevoie de ele.
‫Acum, modul în care sunt prezentate în sistemul de fișiere pentru container, seamănă cu un fișier de pe hard disk
‫cu aplicațiile din interiorul containerului.
‫Dar nu este chiar asta. De fapt, nu rulează pe disc. Sunt în memorie numai folosind un
‫sistem de fișiere ramfs și veți ajunge la ele sub directorul / run / secrets unde va fi, în mod implicit,
‫numele pe care l-ați dat secretului ca fișier.
‫Apoi, când accesați doar fișierul, veți vedea un secret care este în el.
‫Dacă vă gândiți la acest lucru ca la
‫un magazin de valoare cheie, cheia este numele fișierului și valoarea este ceea ce este în el.
‫De asemenea, putem seta pseudonime, astfel încât să putem avea mai multe nume pentru aceeași cheie și vom vedea cum va
‫apărea mai târziu.
‫Pentru dezvoltarea locală, dacă utilizați un fișier de stivă care are sarcini secrete în el, va funcționa de fapt în
‫Docker Compose pe mașina dvs. locală.
‫Acum, din nou, docker-compose, linia de comandă, nu ar trebui niciodată să fie utilizată în producție pe un server de producție.
‫În acest caz, în special, este de fapt falsificarea securității.
‫Deci, ce se întâmplă este că într-adevăr vrem ca dezvoltatorul Docker sau utilizatorul Docker de pe mașina lor să poată
‫folosi cât mai mult fișierele de stivă.
‫Deci, containerele pe care le executați pe mașina dvs. locală, vor vedea de fapt secretele așa cum ar
‫face în Swarm.
‫Dar nu avem Swarm pe mașina noastră locală decât dacă o inițializăm acolo, pe care
‫majoritatea oamenilor nu o vor face.
‫Și modul în care stocăm secretele este în baza de date Swarm.
‫Deci, acest lucru poate fi vădit, dar secretele depind de Swarm. E un lucru numai pentru Swarm. Dacă nu aveți
‫Swarm, nu puteți folosi secrete.
‫Cu toate acestea, comanda docker-compose are o soluție în care de fapt montează secretele într-un fișier text
‫clar în containerul local.
‫Nu este sigur, dar ne permite să folosim secrete local pe mașina noastră.
‫Nu este doar ceva pe care doriți să îl utilizați în producție, de aceea avem magazinul sigur pentru
‫Swarm.