-
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ää lähtötasona, joka on otettava huomioon, eikä täydellisen tietoturvan tarkistuslistana.
Rahdissa toimivien palveluiden tietoturvaa parantavat toimenpiteet voidaan karkeasti jakaa kahteen luokkaan.
Klusterin ehdot
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 (Security Context Constraints) -käytännöillä?
- 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 capabilityn NET_BIND_SERVICE nimenomaisen lisäämisen
- V2 edellyttää, että joko jätät SeccompProfile-asetuksen tyhjäksi tai asetat sen 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 versioita ei enää pidetä turvallisina. Jos palvelusi DNS-nimi on aliverkkotunnuksen *.2.rahtiapp.fi alla (esim. coolservice.2.rahtiapp.fi), Rahdin tarjoamaa oletusarvoista wildcard-TLS-varmennetta voidaan käyttää suoraan. Muussa tapauksessa
sinun täytyy lisätä varmenteesi tiedot route-objektiin.
Pääsy palveluihin tulisi rajoittaa valittuihin verkkoihin sallittujen listojen avulla aina kun se on sovellettavissa (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 aktivoida 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 routen kohdalla tulee aina käyttää HTTPS:ää eikä koskaan HTTP:tä.
Nopeusrajoitus
On myös mahdollista käyttää annotaatioita suojaamaan sovelluksesi 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ä, jolloin 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ä kuvissasi builder-mallia, jos käytät käännettyjä ohjelmointikieliä: Rakenna binaari eri kuvassa kuin siinä, jossa sovellus otetaan käyttöön. Dockerissa tämä voidaan toteuttaa multi-stage buildien avulla, ja OpenShiftissä muiden kuvien hakemistoja voidaan liittää rakennusprosessin aikana ketjutetuilla buildeilla. Näin lopullisessa kuvassa on 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 tietoturva perustu pelkästään IP-suodatukseen, vaan että tätä käytetään toissijaisena toimenpiteenä, kuten esimerkiksi OAuth-todennusjärjestelmän rinnalla.
Tätä IP-osoitetta ei ole tarkoitus muuttaa, mutta emme voi antaa 100 %:n varmuutta siitä, ettei jokin ennalta arvaamaton tapahtuma koskaan pakottaisi 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 erikseen, koska käytettävissä on rajallinen määrä virtuaalisia IP-osoitteita. Lisätietoja saat tekemällä tukipyynnön osoitteeseen servicedesk@csc.fi.