-
Tietoturvaohje
Tietoturvaopas
Rahti-sovellukset ovat alttiina internetille, ja niiden tietoturvaan tulee suhtautua asianmukaisella huolellisuudella. Käyttäjä, jonka tunnuksella palvelu toimii Rahdissa, on vastuussa sen tietoturvasta. Katso lisätietoja vastuista käyttöehdoista.
Tätä opasta tulee pitää vähimmäistasona, joka on otettava huomioon, eikä täydellisen tietoturvan tarkistuslistana.
Rahdissa toimivien palveluiden tietoturvaa parantavat toimenpiteet voidaan karkeasti jakaa kahteen luokkaan.
Klusterin käytännöt
Oletuksena klusterissamme käytetään oletustietoturvakäytäntöjä:
-
Root-käyttö estetty: Tämä tarkoittaa, että et voi ajaa konttia root-oikeuksilla. Se epäonnistuu.
-
Satunnainen UID/GID: Kun podisi otetaan käyttöön klusterissamme, sille luodaan satunnainen UID. Et voi määrittää UID/GID:tä tämän alueen ulkopuolelta (esimerkiksi
1001), sillä se vaatii erityisoikeuksia. Yleensä numero on esimerkiksi1000620000. -
Restricted-v2-käytäntö: OpenShift 4.11:stä alkaen uudet SCC-käytännöt on otettu käyttöön Pod Security Standards-standardin mukaisesti.
-
Mitä eroa on v1- ja v2-SCC-käytännöillä (Security Context Constraints)?
- V2 ei salli asetusta allowPrivilegeEscalation=true
- Tyhjä tai false on yhteensopiva v1-SCC:n kanssa ja toimii siksi OCP-versioissa < 4.11
- V2 edellyttää, että poistettavat capabilityt jätetään tyhjiksi, asetetaan arvoon ALL tai lisätään vain NET_BIND_SERVICE
- Kun SCC hyväksytään v2:na, se poistaa aina ALL. V1 poisti vain capabilityt KILL, MKNOD, SETUID ja SETGID.
- V2 sallii edelleen NET_BIND_SERVICE-capabilityn nimenomaisen lisäämisen
- V2 edellyttää, että joko SeccompProfile jätetään tyhjäksi tai asetetaan arvoon runtime/default
- Tyhjä on yhteensopiva v1:n kanssa ja toimii OCP-versioissa < 4.11
- V2 ei salli asetusta allowPrivilegeEscalation=true
Reittien suojaaminen
Ota käyttöön reittien TLS-salaus. Reititin tukee moderneja ja turvallisia TLS-versioita, TLS v1.3:a ja TLS v1.2:ta. TLS v1.3 on tällä hetkellä uusin versio. TLS v1.1:tä ja sitä vanhempia ei enää pidetä turvallisina. Jos palvelusi DNS-nimi on
alidomainissa *.2.rahtiapp.fi (esim. coolservice.2.rahtiapp.fi), Rahdin tarjoamaa oletusarvoista
jokerimerkillistä TLS-varmennetta voidaan käyttää suoraan. Muussa tapauksessa
sinun on lisättävä varmenteesi tiedot route-objektiin.
Palveluiden pääsy tulisi rajoittaa valittuihin verkkoihin sallittujen listojen avulla aina kun mahdollista (katso luku Reitit). Tämä on olennaista silloin, kun pääsyä voidaan rajoittaa IP-osoitteiden perusteella.
Suojatut reitit estävät salakuunteluhyökkäyksiä, jotka kohdistuvat esimerkiksi palvelun salasanoihin ja käyttäjätunnuksiin sekä muuhun internetin yli lähetettävään kriittiseen dataan.
On suositeltavaa ottaa käyttöön HSTS-otsake, ja sen voi aktivoida suorittamalla tämän komennon:
HTTP Strict-Transport-Security -vastausotsake (eli lyhyesti HSTS) kertoo selaimelle, että tämän Route-resurssin kohdalla tulee aina käyttää HTTPS:ää eikä koskaan HTTP:tä.
Nopeusrajoitus
On myös mahdollista käyttää annotaatioita sovelluksesi suojaamiseen DDoS-hyökkäyksiltä
Konttikuvien tietoturva
Vanhentuneet konttikuvat ovat alttiita tietoturvahaavoittuvuuksien hyväksikäytölle, ja tuntemattomat kuvat voivat sisältää haitallista koodia. Näistä syistä tiettyä konttikuvaa tulisi käyttää vain, jos:
- Se on peräisin tunnetusta ja luotetusta lähteestä, jotta tunnetut tietoturva- haavoittuvuudet on paikattu ja voit luottaa siihen, ettei se sisällä haitallista koodia.
- Olet tarkistanut sen Dockerfile-rakennusmäärityksen ja peruskerros täyttää säännön #1 tai #2.
Muita huomioitavia asioita:
- Käytä kuratoituja kuvia.
- Suosi kuvia, jotka saavat säännöllisesti tietoturvapäivityksiä.
- Käytä staattisia konttikuvien analysointityökaluja, jos niitä on saatavilla. Tukea varten ota yhteyttä paikalliseen IT-tukeen.
- Mitä pienempi kuva, sitä vähemmän siinä on hyökkäyspinta-alaa:
- Hyödynnä builder-mallia kuvissasi, jos käytät käännettäviä ohjelmointikieliä: Rakenna binaari eri kuvassa kuin siinä, johon sovellus otetaan käyttöön. Dockerissa tämä voidaan toteuttaa monivaiheisilla koonneilla, ja OpenShiftissä muiden kuvien hakemistoja voidaan liittää rakennusprosessin aikana ketjutetuilla koonneilla. Näin lopullisessa kuvassa ovat mukana vain ohjelmiston olennaiset osat.
- Jos sovellus on kirjoitettu tulkattavalla kielellä, käytä kieleen
perustuvia kuvia. Sen sijaan, että asentaisit Node.js:n Alpine-kuvan päälle, käytä
esimerkiksi
node:21-alpine.
IP-osoitteet palomuurin avauksia varten
Kaiken ulospäin suuntautuvan asiakasliikenteen IP-osoite on 86.50.229.150. Avaamalla palomuurin tälle IP-osoitteelle sallit kaiken liikenteen, joka tulee mistä tahansa Rahti-projektista. On suositeltavaa, ettei tietoturvassa luoteta pelkästään IP-suodatukseen, vaan että tätä käytetään toissijaisena keinona, kuten esimerkiksi OAuth-todennusjärjestelmän rinnalla.
Tätä IP-osoitetta ei ole tarkoitus muuttaa, mutta emme voi antaa 100 %:n varmuutta siitä, etteikö jokin ennalta arvaamaton tapahtuma voisi joskus pakottaa meitä muuttamaan sitä. Jos tämä IP-osoite joskus muuttuu, siitä tiedotetaan asianmukaisesti etukäteen.
Valituille nimiavaruuksille, jotka sitä tarvitsevat, on mahdollista määrittää oma erillinen IP-osoite. Jokainen pyyntö arvioidaan yksilöllisesti, koska käytettävissä on rajallinen määrä virtuaalisia IP-osoitteita. Lisätietoja saat luomalla tukipyynnön osoitteeseen servicedesk@csc.fi.