Dockerin ja DevOpsin perusteet · Oppitunti

Konttien ajonaikainen tietoturva

Ottakaa käyttöön parhaat käytännöt konttien suojaamiseksi ajon aikana, mukaan lukien käyttäjäoikeudet ja resurssirajat.

Oppitunti 2/412 vaihetta

Konttien ajonaikainen tietoturva on ilmainen Dockerin ja DevOpsin perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Dockerin ja DevOpsin perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Dockerin ja DevOpsin perusteet-kurssilla on yhteensä 4 oppituntia.

Suorituksenaikaisen tietoturvan perusteet

Tervetuloa konttien suorituksenaikaiseen tietoturvaan! Turvallisten kuvien rakentaminen on tärkeää, mutta mitä tapahtuu, kun kontti on käynnissä?

Tässä oppitunnissa keskitytään parhaisiin käytäntöihin, joilla sovelluksia suojataan niiden ollessa aktiivisia ja rajoitetaan haavoittuvuuksien tai hyökkäysten mahdollisesti aiheuttamia vahinkoja.

Konttien ajonaikainen tietoturva — kuvitus 1

Vähimpien oikeuksien periaate

Perustavanlaatuinen tietoturvaperiaate on vähimpien oikeuksien periaate. Se tarkoittaa, että entiteetille, kuten kontille tai käyttäjälle, annetaan vain sen toimintaan ehdottomasti tarvittavat oikeudet – ei enempää.

Tämän soveltaminen pienentää hyökkäyspinta-alaa ja rajoittaa vaikutuksia, jos kontti vaarantuu.

Välttäkää root-käyttäjänä suorittamista

Oletusarvoisesti Docker-kontin sisäiset prosessit suoritetaan root-käyttäjänä, jolla on täydet järjestelmänvalvojan oikeudet kontin sisällä.

  • Riski: Jos hyökkääjä saa hallintaansa root-oikeuksilla suoritetun kontin, hän voi mahdollisesti hyödyntää Docker-daemonin tai ytimen haavoittuvuuksia saadakseen root-oikeudet isäntäjärjestelmään.
  • Paras käytäntö: Suorittakaa kontin prosessit aina muuna kuin root-käyttäjänä.

Suorittaminen ilman root-oikeuksia

Voitte määrittää kontin prosessille käyttäjän (nimen tai UID:n) käyttämällä --user-lippua yhdessä komennon docker run kanssa. Tässä id-komento suoritetaan Alpine-kontissa käyttäjänä 1000.

Jos käyttäjää 1000 ei ole olemassa, Docker käyttää silti kyseistä UID:tä.

docker run --rm -it --user 1000 alpine id

Linux-ominaisuuksien ymmärtäminen

Perinteisissä Linux-järjestelmissä root-käyttäjällä on joko kaikki oikeudet tai ei lainkaan oikeuksia. Linux-ominaisuudet jakavat root-käyttäjän tehokkaat oikeudet pienemmiksi, erillisiksi kokonaisuuksiksi.

Näin prosessille voidaan antaa vain sen tarvitsemat erityiset root-tasoiset oikeudet, kuten oikeus käyttää pieniä porttinumeroita tai raakaa verkkoyhteyttä, ilman kaikkia root-oikeuksia.

Tarpeettomien ominaisuuksien poistaminen

Docker-kontit suoritetaan oletusarvoisesti laajan ominaisuusjoukon kanssa. Voitte poistaa tarpeettomia ominaisuuksia --cap-drop-lipulla ja rajoittaa näin entisestään kontin toimintamahdollisuuksia.

Tässä poistamme NET_RAW-ominaisuuden. Tällöin NET_RAW-ominaisuutta tarvitseva ping-komento epäonnistuu, mikä havainnollistaa rajoitusta.

docker run --rm -it --cap-drop=NET_RAW alpine ping -c 1 localhost || echo "Ping failed: NET_RAW capability dropped!"

Konttien resurssien hallinta

Kontit jakavat isäntäkoneen ytimen ja resurssit. Yhden kontin hallitsematon resurssien käyttö voi aiheuttaa muille konteille tai jopa isäntäkoneelle palvelunestohyökkäyksen (DoS).

  • Suorittimen rajoitukset: Estäkää konttia varaamasta kaikkia suorittimen laskentaresursseja.
  • Muistin rajoitukset: Estäkää konttia kuluttamasta kaikkea käytettävissä olevaa RAM-muistia ja ehkäiskää järjestelmän epävakautta.

Resurssirajoitusten käyttöönotto

Voitte määrittää suorittimen ja muistin rajoitukset suoraan komennolla docker run. Tässä esimerkissä muisti rajoitetaan 128 megatavuun ja suorittimen käyttö arvoon 0.5 (puoleen yhden suorittimen ytimen kapasiteetista).

Näin varmistetaan, että kontti toimii hallitusti eikä vie resursseja muilta prosesseilta.

docker run --rm -it --memory="128m" --cpus="0.5" alpine sh -c "echo 'Container running with limited resources.' && free -h"

Vain luku -tiedostojärjestelmät

Monien sovellusten ei tarvitse kirjoittaa juuritiedostojärjestelmään käynnistymisen jälkeen. Kun tiedostojärjestelmä määritetään vain luku -tilaan, saavutetaan merkittäviä tietoturvaetuja:

  • Estää muuttamisen: Hyökkääjä ei voi muokata olemassa olevia tiedostoja tai kirjoittaa uusia haitallisia tiedostoja.
  • Rajoittaa pysyvyyttä: Kaikki tehdyt muutokset ovat tilapäisiä ja katoavat kontin uudelleenkäynnistyksen yhteydessä.
  • Pakottaa muuttumattomuuteen: Tämä edistää mallia, jossa kontit ovat hävitettäviä ja määritykset ovat ulkoisia.

Vain luku -konttien käyttöönotto

Käyttäkää --read-only-lippua, kun käynnistätte kontin. Kaikki yritykset kirjoittaa kontin tiedostojärjestelmään (erikseen liitettyjen taltioiden ulkopuolella) epäonnistuvat.

Kokeilkaa tiedoston luomista tässä vain luku -tilassa olevassa kontissa:

docker run --rm -it --read-only alpine sh -c "touch /test.txt || echo 'Error: Cannot write to read-only filesystem!'"

Suorituksenaikaisen tietoturvan testi

Mitkä seuraavista ovat hyviä käytäntöjä konttien suojaamiseen suorituksen aikana?

Suorituksenaikaisen tietoturvan kertaus

Hienoa työtä! Olette oppineet parantamaan konttien tietoturvaa niiden ollessa käynnissä:

  • Vähimmät oikeudet: Myöntäkää vain tarvittavat oikeudet.
  • Muut kuin root-käyttäjät: Välttäkää prosessien suorittamista käyttäjänä root.
  • Ominaisuudet: Poistakaa tarpeettomat Linux-ominaisuudet.
  • Resurssirajoitukset: Hallitkaa suorittimen ja muistin käyttöä.
  • Vain luku: Tehkää tiedostojärjestelmistä muuttumattomia kirjoitusten estämiseksi.

Nämä käytännöt pienentävät merkittävästi hyökkäyspinta-alaa ja mahdollisten tietomurtojen vaikutuksia. Jatkakaa harjoittelua!

Aloita maksutta

Opi Dockerin ja DevOpsin perusteet tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Konttien ajonaikainen tietoturva” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Dockerin ja DevOpsin perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Konttien ajonaikainen tietoturva”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Dockerin ja DevOpsin perusteet-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Konttien ajonaikainen tietoturva”?

Ottakaa käyttöön parhaat käytännöt konttien suojaamiseksi ajon aikana, mukaan lukien käyttäjäoikeudet ja resurssirajat. Harjoittelet Dockerin ja DevOpsin perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Dockerin ja DevOpsin perusteet-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Dockerin ja DevOpsin perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Konttien ajonaikainen tietoturva”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Dockerin ja DevOpsin perusteet-oppitunnilla?

Kyllä. Jokainen Dockerin ja DevOpsin perusteet-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Konttikuvien tietoturvaskannaus
  2. Konttien ajonaikainen tietoturva
  3. Salaisuuksien hallinta ja RBAC
  4. Verkkokäytännöt ja vähimpien oikeuksien verkotus
← Takaisin: Dockerin ja DevOpsin perusteet