sekretet e dockerit - sekretet e kompozimit të dockerit

Sekretet e Docker në CI/CDNdalo rrjedhjen e të dhënave të ndjeshme

Si funksionojnë sekretet e Docker dhe ku zhvilluesit i keqpërdorin ato

Sekretet e Docker u prezantuan për të menaxhuar në mënyrë të sigurt të dhëna të ndjeshme si çelësat API, fjalëkalimet e bazës së të dhënave dhe tokenët. Ato funksionojnë duke montuar sekretet si skedarë në /run/secrets brenda një kontejneri, i arritshëm vetëm nga shërbimi i kontejnerizuar. Ky mekanizëm i mban sekretet larg variablave dhe regjistrave të mjedisit, të paktën në teori. Problemi fillon kur zhvilluesit e anashkalojnë këtë mekanizëm. Në vend që të përdorin sekretet e Docker Compose funksionojnë siç duhet, sekretet shpesh janë të koduara në dockerfile, committë transmetuara në Git ose të injektuara përmes variablave të mjedisit. Këto shkurtore i bëjnë sekretet të cenueshme ndaj ekspozimit aksidental përmes regjistrave, shtresave të kontejnerëve ose historikut të versioneve.

# Risky ENV DB_PASSWORD=mysecretpassword 

⚠️ Shembull i pasigurt, mos e përdorni në prodhim

Pasi shtohet kjo rresht, ajo shtohet në imazh. Kushdo që ka qasje në imazh (ndërtimi i memorjes së përkohshme, regjistrit ose CI/CD logs) mund ta nxjerrin atë. Edhe më keq, ky model shpesh kalon pa u vënë re gjatë rishikimeve sepse "thjesht funksionon".

Sekretet e Docker Compose dhe rreziqet e fshehura në konfigurimet e përbashkëta

Docker Compose thjeshton aplikacionet me shumë kontejnerë, por Sekretet e Docker Compose vijnë me rreziqe të fshehura. Zhvilluesit shpesh ndajnë Docker Compose.yml or .zili skedarë nëpër ekipe dhe mjedise, nëpërmjet Git, Slack ose disqeve të përbashkëta.

services: app: image: myapp secrets: - db_password  secrets: db_password: file: ./secrets/db_password.txt 

⚠️ Shembull demonstrativ, mos përfshini sekrete të vërteta në skedarët e versionuar

Problemi? Këto Shkruaj Docker sekretet Referencat supozojnë skedarë lokalë, por në praktikë, këto skedarë versionohen ose shpërndahen në mënyrë të pasigurt. Sekretet futen fshehurazi në depot e Git, shfaqen në pull requests, ose të kopjohen në dosje të tjera. Supozimi se "të gjithë e dimë që nuk duhet commit "secrets" nuk është një politikë sigurie.

Më keq akoma, mjedise si skena dhe prodhimi mund të ripërdorin të njëjtën gjë prerës-compose.yml, duke krijuar një ndjesi të rreme ndarjeje. Njëra ishte konfiguruar gabimisht .zili skedari dhe sekretet e prodhimit injektohen në një mjedis testimi.

CI/CD Pipelines: Ku prishet trajtimi sekret i Docker

In CI/CD, Sekretet e Docker-it shkatërrohen nëse nuk izolohen. Sekretet shpesh zbulohen në tre vende: regjistra, shtresa imazhesh dhe vrapues të përbashkët.

Shkrime: Printim i hapave CI përsërit $SECRET_KEY për të debuguar problemet. Por këto regjistra ruhen, ndonjëherë publikisht. Mjete si Veprimet GitHub or GitLab ruajini regjistrat për ditë ose javë.

Shtresat e imazhitNëse një Dockerfile shton një sekret gjatë ndërtimit:

RUN echo "$SECRET_KEY" > /app/config.txt 

⚠️ Shembull i pasigurt, kjo ekspozon sekretet në shtresat e imazhit

Sekreti i Docker-it tani është pjesë e një shtrese imazhi. Edhe nëse e fshini skedarin më vonë, shtresa e mëparshme mbetet në historikun e imazhit.

Vrapues të përbashkët: Shumë CI/CD Platformat përdorin ekzekutues të përbashkët. Nëse sekretet nuk janë të përcaktuara ose të pastrohen siç duhet, ndërtime të tjera mund t'i qasen atyre. Më keq akoma, sekretet ndonjëherë kalohen si variabla mjedisi në të gjitha hapat si parazgjedhje.

Sigurimi i Docker në Code, Pipelines, dhe Regjistrat

Për t’u mbyllur Sekretet e Docker-it, ekipet e zhvilluesve kanë nevojë për mbrojtje të shtresuara:

  • Përdorni menaxherë sekretë si AWS Secrets Manager, HashiCorp Vault ose Doppler. Këto mjete rrotullohen dhe injektojnë sekrete në mënyrë të sigurt në kontejnerët tuaj gjatë kohës së ekzekutimit.
  • Kufizoni fushat e veprimitMos i ekspozoni kurrë sekretet e prodhimit në mjediset e zhvillimit/testimit. Përdorni kontrollin e aksesit të bazuar në role (RBAC) për të kufizuar se kush mund të injektojë ose lexojë sekretet.
  • Shmangni variantet ENV për sekretet. përdorim Sekreti i Docker-it vëllimet ose sekretet e montimit si skedarë në mënyrë eksplicite.
  • Pastroni ndërtimetSigurohuni që sekretet të mos jenë të ruajtura në imazhe ose të lihen në skedarë të ndërmjetëm.
  • Skano kontejnerë dhe depoPërdorni mjete që inspektojnë imazhet, historikun e git dhe CI/CD konfigurime për sekretet e zbuluara.

Praktikat më të Mira për të Parandaluar Ekspozimin Sekret të Docker

  • Sekrete të përkohshmeGjeneroni sekrete një herëshe gjatë ekzekutimeve të CI. Këto skadojnë dhe nuk mund të ripërdoren nëse vidhen.
  • Sekrete të vulosuraPërdorni Kubernetes Sealed Secrets ose SOPS për të enkriptuar sekretet në Git. Kjo siguron që sekretet të versionohen në mënyrë të sigurt.
  • CI/CD PolitikatZbatoni politika si asnjë sekret në Dockerfile, blloku ndërtohet mbi zbulimin sekret dhe përdorimin e regjistrave të Sekretet e Docker-it për pipeline.
  • Pre-commit hooks: Blloko commitme sekrete duke përdorur mjete si sekretet e git or zbuloj-sekrete.
  • Infrastruktura e pandryshueshmeMos i modifikoni sekretet në kontejnerë. Rindërtoni dhe rizbuloni me të rejat. Sekretet e Docker-it vend.

Përfundim

Kur keqpërdoret, Sekretet e Docker-it të bëhet një detyrim në vend të një veçorie sigurie. Nga Sekretet e Docker Compose duke rrjedhur përmes skedarëve YAML në CI/CD pipelineDuke zbuluar sekrete në shkrime ose shtresa, rreziqet janë reale dhe të parandalueshme.

Përdorimi i mjeteve si Xygeni, ekipet mund të zbulojnë të ekspozuarit sekretet herët, zbatoni politikat e trajtimit sekret dhe skanoni për devijime sigurie në të gjithë kodin, kontejnerët dhe pipelines. Trajtojeni D-në tuajsekreti i okërit strategjinë si infrastrukturë kritike. Sigurojeni atë siç e mendoni.

mjetet-e-për-përbërjes-së-softuerit-sca-tools
Përparësoni, korrigjoni dhe siguroni rreziqet e softuerit tuaj
Merrni Llogarinë tuaj Falas.
Nuk kërkohet kartë krediti.

Siguroni Zhvillimin dhe Ofrimin e Softuerit tuaj

me Xygeni Product Suite