Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Asiakaspuolen salauksen työkalut Allasta varten

Allas ei ole sertifioitu korkean tietoturvatason tallennusalusta, joten sitä ei tule käyttää sensitiivisen datan säilyttämiseen luettavassa muodossa. Sensitiivistä dataa voidaan kuitenkin tallentaa Altaaseen, jos se salataan asianmukaisesti ennen siirtoa oliotallennukseen.

Sensitiiviselle datalle suosittelemme yleensä SD Connect -palvelua, joka tarjoaa selain- ja komentorivikäyttöliittymät, jotka salaavat datan automaattisesti, kun se tallennetaan Altaaseen.

Jos et jostain syystä halua käyttää SD Connectia, alta löydät joitakin vaihtoehtoisia tapoja tallentaa sensitiivinen datasi Altaaseen. Kun käytät Allasta näiden salaustyökalujen kanssa, muista että:

  1. Voit tallentaa salattua sensitiivistä dataa Altaaseen, mutta sen purkaminen on sallittua vain ympäristöissä, joiden tietoturvataso on riittävän korkea. Esimerkiksi CSC:n HPC-ympäristö (eli Puhti, Mahti, LUMI) ei ole ei riittävän turvallinen sensitiiviselle datalle.

  2. Käytä riittävän vahvoja salaussalasanoja ja säilytä ne turvallisesti.

  3. Jos unohdat salaussalasanan, data menetetään. CSC ei voi antaa sinulle uutta salasanaa datasi lukemiseen, koska salasanan olet asettanut sinä, ei CSC.

1. Yksittäisen tiedoston tai hakemiston salaaminen a-put-komennolla

Jos asennat allas-cli-utils -paketin käyttämääsi koneeseen, voit käyttää a-put-komentoa valinnalla --encrypt salataksesi tiedoston tai hakemiston, jonka haluat ladata Altaaseen. Voit käyttää joko symmetristä (eli salasanaan perustuvaa) salausta gpg-työkalulla tai epäsymmetristä avainpohjaista salausta crypt4gh-työkalulla. Gpg on saatavilla useimmissa Linux-järjestelmissä, kun taas crypt4gh ei ole yhtä laajasti käytössä, joten saatat joutua asentamaan sen paikalliseen järjestelmääsi, jos haluat käyttää epäsymmetristä salausta.

Huomaa, että oletuksena a-put luo ylimääräisen metadataolion, joka sisältää tietoa ladatuista tiedostoista. Kun valintaa --encrypt käytetään, varsinainen datasisältö salataan, mutta metadataolioita (_ameta-tiedostoja) ei salata. Tapauksissa, joissa tiedostonimiä ei tule tallentaa luettavassa muodossa, metadataolioiden luonti kannattaa poistaa käytöstä käyttämällä a-put-komentoa valinnalla --no-ameta.

Symmetrinen gpg-salaus

Symmetrinen gpg-salaus voidaan tehdä komennolla:

a-put --encrypt gpg data_dir -b my_allas_bucket
Kun valinta --encrypt gpg on käytössä, data salataan gpg-komennolla käyttäen AES256-salausalgoritmia, jota pidetään yleisesti riittävän hyvänä sensitiiviselle datalle. Kun käynnistät komennon, se pyytää salaussalasanaa ja salasanan vahvistusta. Tässä lähestymistavassa vain tiedoston tai hakemiston sisältö salataan. Olion nimi ja metadata säilyvät ihmisen luettavassa muodossa.

Kun noudat datan a-get-komennolla, sinulta pyydetään salaussalasanaa, jotta olio voidaan purkaa latauksen jälkeen.

a-get my_allas_bucket/data_dir.tar.zst.gpg

Epäsymmetrinen crypt4gh-salaus

Jos haluat käyttää epäsymmetristä crypt4gh-salausta, tarvitset julkisen avaimen tiedoston salausta varten ja salaisen avaimen tiedoston salauksen purkua varten. Puhdissa sinun täytyy ensin ottaa crypt4gh käyttöön komennolla:

module load allas
Nyt voit luoda avaimet esimerkiksi komennolla:
crypt4gh-keygen --sk allaskey.sec --pk allaskey.pub
Data voidaan nyt ladata Altaaseen komennolla:
a-put --encrypt c4gh --pk allaskey.pub data_dir -b my_allas_bucket
Yllä oleva komento salaa ensin datan crypt4gh-työkalulla ja julkisella avaimella ja lataa sitten salatun datan Altaaseen. Huomaa, että et tarvitse salaista avainta salaamiseen. Voit toimittaa julkisen avaimen toiselle palvelimelle (ja toiselle käyttäjälle), jotta data voidaan ladata turvallisesti Altaaseen ulkoisesta turvallisesta sijainnista. Salaista avainta tarvitaan vain siinä ympäristössä, johon data ladataan Altaasta:
a-get --sk allaskey.sec my_allas_bucket/data_dir.tar.zst.c4gh
Yllä oleva komento lataa salatun olion Altaasta, pyytää salaisen avaimen salasanan ja purkaa sitten datan luettaviksi tiedostoiksi.

2. Salatun repositorion luominen rclonella

rclone:ssa on asiakaspuolen salausominaisuus, jonka avulla voit luoda salatun datarepositorion Altaaseen. Tässä lähestymistavassa sinun täytyy kerran määritellä salattu rclone-yhteys Altaaseen, ja kun tätä yhteyttä käytetään, kaikki siirrettävä data salataan automaattisesti. rclone:n automaattinen salaus perustuu Salsa20-virtasalaukseen. Salsa20 ei ole yhtä laajasti käytetty kuin AES256, mutta se on yksi niistä salaustyökaluista, joita eurooppalainen eSTREAM -projekti suositteli.

Tässä esimerkissä oletamme, että käytät palvelinta, johon on asennettu rclone ja allas-cli-utils. Ensin sinun täytyy määrittää tavallinen, salaamaton swift-yhteys Altaaseen. Tämä voidaan tehdä allas-conf-skriptillä, joka sisältyy allas-cli-utils-pakettiin:

source allas-cli-utils/allas_conf -u your-csc-username -p your-csc-project-name

Kun olet määrittänyt tavallisen swift-yhteyden Altaaseen, voit määrittää salatun ämpärin Allas-alueellesi. Aloita määritysprosessi suorittamalla komento rclone config.

allas-conf-skripti on jo luonut rclone-asetustiedoston, jossa rclone remote on nimetty allas.

Ensimmäisessä vaiheessa valitse vaihtoehto n luodaksesi new remote -määrityksen. Määritysprosessi kysyy nimeä uudelle rclone-remote:lle. Tässä tapauksessa uusi remote nimetään allas-crypt.

[kkayttaj@puhti-login11 ~]$ rclone config
Current remotes:

Name                 Type
====                 ====
allas                swift

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n
name> allas-crypt

Seuraavaksi määritysprosessi pyytää määrittämään tallennustyypin. Valitse vaihtoehto 10 Encrypt/Decrypt a remote.

Storage> 10

Seuraavassa vaiheessa sinun täytyy määritellä Allas-ämpäri, jota käytetään salatulle datalle. Ämpäriä määriteltäessä huomaa, että sinun täytyy määritellä sekä ämpäri että sijainti (eli rclone remote -yhteyden nimi), jossa ämpäri sijaitsee. Allaksen tapauksessa remoten nimi on allas:. Varsinaisen ämpärin nimen tulee olla yksilöllinen kaikkien Allas-käyttäjien kesken. Tässä tapauksessa käytämme määrittelyä allas:2001659-crypt, joka määrittää, että salattu data tallennetaan Altaaseen ämpäriin 2001659-crypt.

Remote to encrypt/decrypt.
Normally should contain a ':' and a path, eg "myremote:path/to/dir",
"myremote:bucket" or maybe "myremote:" (not recommended).
Enter a string value. Press Enter for the default ("").
remote> allas:2001659-crypt

Seuraavaksi määritysprosessi kysyy, salataanko olioiden ja hakemistojen nimet. Tässä tapauksessa salaamme nimet, joten valitse 1 molemmissa tapauksissa.

Sen jälkeen sinun täytyy määritellä kaksi salasanaa: pääsalasana ja niin sanottu salt password. Tätä salasanaparia käytetään salaukseen. Voit määritellä nämä salasanat itse tai antaa määritysprosessin luoda ne. Joka tapauksessa säilytä käyttämäsi salasanat turvallisesti. Myös muut käyttäjät ja palvelimet saattavat tarvita niitä. Nyt määritys on valmis, ja uusi rclone-remote nimeltä allas-crypt on määritelty. Voit nyt poistua määritysprosessista.

Current remotes:

Name                 Type
====                 ====
allas                swift
allas-crypt          crypt

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>q

Nyt repositorio on valmis käytettäväksi. Oletetaan, että sinulla on hakemisto nimeltä job_6, joka sisältää joitakin tiedostoja ja hakemistoja:

[kkayttaj@puhti-login11 ~]$ ls job_6
hello.xrsl  results  results.1601291937.71  runhello.sh

Voit nyt ladata tämän hakemiston sisällön salattuun ämpäriin.

rclone copy job_6 allas-crypt:job_6
Data on nyt kopioitu Altaaseen, ja voit tarkistaa ladatut tiedostot komennolla:

rclone ls allas-crypt:job_6
       77 runhello.sh
       11 results.1601291937.71/std.out
       86 results.1601291937.71/std.err
      117 hello.xrsl
       11 results/std.out
       86 results/std.err
 

allas-crypt remote muuntaa datan salatusta ämpäristä (allas:2001659-crypt) automaattisesti luettavaan muotoon. Jos kuitenkin tarkastelet salatun ämpärin sisältöä suoraan, näet, että sekä olioiden nimet että tallennettu data ovat salatussa muodossa:

[kkayttaj@puhti-login11 ~]$ rclone ls allas:2001659-crypt
      125 4lpbj55pc5v8t119q0tp2o6k58/36sb832och3tde30k9nlks3dpo
       59 4lpbj55pc5v8t119q0tp2o6k58/90alcaodph3386197agf252t5b97f144n88e99m9ire5tcpqu380/flqitnrsrc8iloggbc4ouagukg
      134 4lpbj55pc5v8t119q0tp2o6k58/90alcaodph3386197agf252t5b97f144n88e99m9ire5tcpqu380/gvie6dv3s50v32qptl30960me4
      405 4lpbj55pc5v8t119q0tp2o6k58/a6rlk2hr489roehagfu6iest38
      165 4lpbj55pc5v8t119q0tp2o6k58/kmqnruv14agevg6okod0io2fl0
       59 4lpbj55pc5v8t119q0tp2o6k58/o515vd0l1bp270v7gdc7m3tpbo/flqitnrsrc8iloggbc4ouagukg
      134 4lpbj55pc5v8t119q0tp2o6k58/o515vd0l1bp270v7gdc7m3tpbo/gvie6dv3s50v32qptl30960me4
      352 4lpbj55pc5v8t119q0tp2o6k58/p87n5ins7g0hvfh06r6o6a91n0

Vastaavasti komento:

rclone copy allas-crypt:job_6/hello.xrsl ./
lataisi ja purkaisi salauksen tiedostosta hello.xrsl Altaasta paikalliselle levylle.

Allas-yhteyksien asetukset tallennetaan oletuksena rclonen asetustiedostoon polussa $HOME/.config/rclone/rclone.conf

Tässä tapauksessa asetustiedoston allas-crypt-määrittelyosa voisi näyttää tältä:

[allas-crypt]
type = crypt
remote = allas:2001659-crypt
filename_encryption = standard
directory_name_encryption = true
password = A_JhQdTOEIx0ajyWb1gCvD2z0gBrEVzy41s
password2 = UgmByNqlnb8vCZrFgpaBtUaQrgJkx30
Määritys sellaisenaan ei ole sidottu mihinkään tiettyyn palvelimeen tai käyttäjätiliin. Yhteyden salattuun ämpäriin voi avata kuka tahansa, jolla on 1) pääsy Allas-projektiin ja 2) samat asetukset (mukaan lukien salasanat) omassa rclonen asetustiedostossaan. Tämä on kätevää tilanteissa, joissa tarvitset salatun datan tallennuspaikan, jota voivat käyttää useat luotetut henkilöt ja sijainnit. Tämä aiheuttaa kuitenkin mahdollisia tietoturvahuolia, koska samat salasanat ovat useiden käyttäjien käytössä. Lisäksi asetustiedostossa salasanat ovat vain obscured eli hämärrettyjä, eivät salattuja.

Tietoturvan parantamiseksi rclone-asetustiedosto voidaan salata. Tämä voidaan tehdä suorittamalla rclone conf -komento uudelleen. Valitse tässä tapauksessa s siirtyäksesi kohtaan Set configuration password ja sitten a lisätäksesi salasanan. Salasanan asettamisella on kaksi vaikutusta:

  1. rclone-asetustiedosto muunnetaan salattuun muotoon
  2. Joka kerta kun suoritat rclone-komennon, sinun täytyy antaa asetustiedoston salasana, jotta rclone voi lukea asetukset.

Toinen ominaisuus voi olla melko häiritsevä, erityisesti jos käytät enimmäkseen tavallista, salaamatonta Allas-yhteyttä. Tämän vuoksi voi olla järkevämpää luoda erillinen rclonen asetustiedosto salattua Allas-käyttöä varten ja määritellä sitten tarvittaessa salatun asetustiedoston käyttö rclonen valinnalla --config.

Esimerkiksi:

Tee kopio olemassa olevasta rclone-asetustiedostosta (ennen kuin määrittelet yllä kuvatun salatun yhteyden).

cp $HOME/.config/rclone/rclone.conf $HOME/rc-encrypt.conf
Suorita sitten rclone config -komento lisätäksesi tiedot salatusta Allas-ämpäristä ja salataksesi asetustiedoston. Voit tehdä molemmat vaiheet yhdessä rclone config -istunnossa.
rclone config --config $HOME/rc-encrypt.conf
Asetustiedoston salausavaimen voi ja kannattaa olla henkilökohtainen.

Nyt voit käyttää suojattua asetustiedostoasi rclone-komennon kanssa. Esimerkiksi:

rclone copy --config $HOME/rc-encrypt.conf job_6 allas-crypt:job_6

Restic - varmuuskopiointityökalu, joka sisältää salauksen

Restic on varmuuskopiointiohjelma, joka voi käyttää Allasta varmuuskopioidun datan tallennustilana. Sen sijaan, että data tuotaisiin suoraan, restic tallentaa datan hajautuskokoelmana. Tämä ominaisuus mahdollistaa sellaisten aineistojen tehokkaan tallennuksen, joissa on pieniä muutoksia. Näin aineiston eri versioita voidaan tallentaa siten, että uuden aineistoversion tapauksessa tarvitsee tallentaa vain muutokset edelliseen versioon verrattuna. Tämä lähestymistapa mahdollistaa myös sen, että voidaan palauttaa paitsi uusin versio myös aiemmat versiot varmuuskopioidusta datasta.

Hajautuksen lisäksi restic salaa datan käyttäen AES256-salausta. Allas-kohtainen varmuuskopiointityökalu allas-backup (saatavilla Puhdissa ja Mahdissa) perustuu restic:iin, mutta se käyttää kiinteää ennalta määriteltyä salaussalasanaa, joten sitä ei tule käyttää, jos vaaditaan korkeaa tietoturvatasoa. Näissä tapauksissa voit käyttää restic-työkalua suoraan.

Jotta voit käyttää Allasta restic-työkalun tallennuspaikkana, avaa ensin yhteys Altaaseen. Kun alat käyttää restic-työkalua ensimmäistä kertaa, sinun täytyy perustaa restic-repositorio. Repositorion määrittely sisältää protokollan (swift tässä tapauksessa), sijainnin, joka Allaksen tapauksessa on ämpärin nimi, sekä etuliitteen tallennetuille dataolioille. Esimerkiksi:

restic init --repo swift:123_restic:/backup
enter password for new repository: ************
enter password again: ************

created restic repository a70df2ced1 at swift:123_restic:/backup

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.

Alustusprosessi pyytää repositoriolle salaussalasanan.

Nyt voit varmuuskopioida tiedoston tai hakemiston Restic-repositorioon Altaassa. Alla olevassa esimerkissä hakemisto my_data varmuuskopioidaan.

 restic backup --repo swift:123_restic:/backup my_data/
enter password for repository: ************
repository a70df2ce opened successfully, password is correct
created new cache in /users/kkayttaj/.cache/restic

Files:         258 new,     0 changed,     0 unmodified
Dirs:            0 new,     0 changed,     0 unmodified
Added to the repo: 2.018 MiB

processed 258 files, 2.027 MiB in 0:00
snapshot a706c054 saved

Kun yhtä tiedostoa hakemistossa my_data on muokattu, teemme toisen varmuuskopion:

restic backup --repo swift:123_restic:/backup my_data/
enter password for repository: ************
repository a70df2ce opened successfully, password is correct

Files:           0 new,     1 changed,   257 unmodified
Dirs:            0 new,     0 changed,     0 unmodified
Added to the repo: 1.154 KiB

processed 258 files, 2.027 MiB in 0:00
snapshot e3b46fe2 saved

Komennolla restic sanpshots voimme nähdä, että meillä on kaksi versiota my_data-hakemistosta varmuuskopiorepositoriossa:

restic snapshots --repo swift:123_restic:/backup 
enter password for repository: ************
repository a70df2ce opened successfully, password is correct
ID        Time                 Host          Tags        Paths
-------------------------------------------------------------------------------------------
a706c054  2021-02-12 14:43:03  r07c52.bullx              /run/nvme/job_4891841/data/my_data
e3b46fe2  2021-02-12 14:47:18  r07c52.bullx              /run/nvme/job_4891841/data/my_data
-------------------------------------------------------------------------------------------
2 snapshots

Jos haluaisimme palauttaa ensimmäisen version, voisimme ladata sen snapshot-tunnisteella ja komennolla restic restore.

restic restore --repo swift:123_restic:/backup a706c054 --target ./ 
enter password for repository: ************
repository a70df2ce opened successfully, password is correct
found 3 old cache directories in /users/kkmattil/.cache/restic, run `restic cache --cleanup` to remove them
restoring  to ./

Varsinainen data tallennetaan salattuina hajautusolioina, joita muut Allas-työkalut eivät voi käyttää. Esimerkiksi data, jonka restic tallensi ämpäriin 123_restic yllä olevassa esimerkissä, näyttää alla olevalta, kun se listataan rclone-komennolla:

rclone ls allas:123_restic
      155 backup/config
     1349 backup/data/26/263a8a412486d0fe6278ec1992c3b2dc64352041ca4236de0ddab07a30e7f725
  2133179 backup/data/46/4643d0d98ef90363629561828a3c113c2ca1acbdefcd3ef0f548724501c1e8f3
   108646 backup/data/77/77f36c6b6f7b346010d76e6709c8e3e4a61a7bc25dce4ffee726fe2a9b208e48
      895 backup/data/b7/b757b4f8b370a3f7199d717128f8bcb90139c589b761d2d6e683cbb3943c32e9
      550 backup/index/3b824311bf222eb9131e83dc22b76ee1686a41deff8db73912a6ec4b58ec7c9c
    32326 backup/index/9e7e8858bc9e8cdcd96f7020ad9f1246629e3a80b2008c1debec30ac21c2b717
      458 backup/keys/9f47c0adcdaa29d1e89eab4763fbcf9269c834b6590b45fd9a0ac079e2ee483e
      272 backup/snapshots/a706c054a77edba31337669ebd851c80f34dfbc3ca92255dee1ff0c0cad8cedf
      348 backup/snapshots/e3b46fe293fae187a53296f8cde25f7aec9f896e4586d96ac4df78ba27cdd911

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta