Holvit ja salaisuuksien säilöt
Salaisuuksien keskittäminen Vaultin kaltaisilla työkaluilla
Holvit ja salaisuuksien säilöt on ilmainen Cyber Security Academy-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 Cyber Security Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.
Mitä salaisuussäilö ratkaisee
Salaisuussäilö (tai holvi) on keskitetty, vahvasti suojattu palvelu, jonka ainoa tehtävä on tallentaa salaisuuksia sekä hallita ja auditoida niiden käyttöä. Se korvaa hajallaan olevat tiedostot ja ympäristömuuttujat, jotka aiheuttavat salaisuuksien leviämistä.
Hyvä salaisuussäilö tarjoaa neljä keskeistä ominaisuutta:
- Keskitetty tallennus: yksi auktoritatiivinen totuuden lähde.
- Käyttöoikeuksien hallinta: yksityiskohtaiset käytännöt siitä, kuka ja mikä voi lukea kunkin salaisuuden.
- Käyttölokien kirjaus: tallenne jokaisesta käyttökerrasta poikkeamiin reagointia varten.
- Salaus: salaisuudet salattuina levossa ja siirrettäessä.
Esimerkkejä ovat HashiCorp Vault, AWS Secrets Manager, Azure Key Vault ja GCP Secret Manager.
HashiCorp Vaultin rakenne
HashiCorp Vault on suosittu avoimen lähdekoodin salaisuuksien hallintapalvelu. Se järjestää toiminnallisuudet polkuihin liitettäviksi secrets engine -komponenteiksi.
- KV engine tallentaa staattisia avain–arvo-salaisuuksia.
- Database engine luo dynaamisia, lyhytikäisiä tietokantatunnistetietoja.
- PKI engine myöntää TLS-varmenteita tarpeen mukaan.
- Transit engine tarjoaa salauksen palveluna ilman avainten paljastamista.
Vaultia käytetään HTTP-rajapinnan tai CLI:n kautta. Jokaisen polun käyttöä ohjaavat käytännöt, jotka määrittävät, kuka voi lukea tai kirjoittaa sinne.
# Enable a KV v2 secrets engine at the 'secret/' path
vault secrets enable -path=secret kv-v2
# Write and read a static secret
vault kv put secret/app/db password='S3cr3t' user='app'
vault kv get secret/app/dbSeal/unseal-malli
Vault suojaa tietonsa seal/unseal-mekanismilla. Kun Vault käynnistyy, se on sinetöity: se tietää, missä salattu data on, mutta ei pysty purkamaan sitä.
Tallennustilan purkava pääavain on itse salattu avausavaimella. Shamir's Secret Sharing -menetelmän avulla avausavain jaetaan useiksi osiksi, jotka annetaan eri operaattoreille.
Määritetyn kynnysarvon (esim. 3/5 osaa) verran osia on annettava avaimen muodostamiseksi ja Vaultin avaamiseksi. Kukaan yksittäinen henkilö ei voi avata sitä yksin, mikä suojaa sisäpiiriläisen vaarantamiselta.
# Initialize Vault: 5 key shares, threshold of 3 to unseal
vault operator init -key-shares=5 -key-threshold=3
# Each operator supplies one shard until threshold is met
vault operator unseal <shard-1>
vault operator unseal <shard-2>
vault operator unseal <shard-3>Todennus: kuka olet
Ennen minkään salaisuuden lukemista asiakkaan on tunnistauduttava tokenin saamiseksi. Vault tukee monia eri identiteeteille sovitettuja todennusmenetelmiä:
- AppRole sovelluksille ja CI-järjestelmille (role ID + secret ID).
- Kubernetes käyttää podin palvelutilin tokenia.
- AWS/GCP/Azure IAM luottaa pilvialustan identiteettiin.
- OIDC/LDAP ihmisille SSO:n kautta.
Keskeinen periaate on, että identiteetti tulee alustalta, ei pitkäikäisestä salasanasta. Kubernetes-podi todistaa henkilöllisyytensä oman palvelutilinsä tokenilla – vuotavaa alustussalaisuutta ei tarvita.
# App authenticates via AppRole to receive a token
vault write auth/approle/login \
role_id="db-app-role" \
secret_id="$WRAPPED_SECRET_ID"
# Response includes client_token used for subsequent readsValtuutus käytännöillä
Todennus osoittaa identiteetin; käytännöt päättävät, mitä kyseinen identiteetti saa tehdä. Vaultin käytännöt kirjoitetaan HCL:llä, ja ne noudattavat vähimpien oikeuksien periaatetta: ne myöntävät vain työkuorman tarvitsemat polut ja ominaisuudet.
Tämän käytännön ansiosta palvelu voi lukea vain oman tietokantasalaisuutensa, ei mitään muuta:
Ominaisuudet vastaavat API-verbejä: read, create, update, delete ja list. Estä oletusarvoisesti ja myönnä oikeudet erikseen.
# policy: billing-app.hcl
path "secret/data/billing/*" {
capabilities = ["read"]
}
path "database/creds/billing-readonly" {
capabilities = ["read"]
}
# everything else is implicitly deniedPilvinatiiviset salaisuussäilöt
Jos käytössä on yksi pilvipalvelu, palveluntarjoajan hallittu säilö poistaa ylläpitotaakkaa: ei seal/unseal-toimintoa eikä päivitettäviä palvelimia:
- AWS Secrets Manager integroituu IAM:iin ja tukee valmiita automaattisia vaihtoja Lambda-funktioilla.
- Azure Key Vault tallentaa salaisuuksia, avaimia ja varmenteita RBAC:n avulla.
- GCP Secret Manager tarjoaa versioidut salaisuudet, joiden käyttöä hallitaan IAM-sidoksilla.
Pääsyä hallitaan pilvipalvelun IAM:llä, joten työkuorma lukee salaisuuden olemassa olevan roolinsa avulla – erillistä salasanaa ei tarvita. Haittapuolena ovat toimittajalukitus ja Vaultiin verrattuna heikompi monipilvituki.
# Read a secret from AWS Secrets Manager (workload uses its IAM role)
aws secretsmanager get-secret-value \
--secret-id prod/billing/db \
--query SecretString --output text
# GCP equivalent
gcloud secrets versions access latest --secret=billing-dbSalaus palveluna
Joskus salaisuutta ei haluta tallentaa lainkaan, vaan halutaan salata sovelluksen data ilman, että sovelluksella on koskaan salausavainta. Vaultin Transit engine tekee juuri tämän.
Sovellus lähettää selväkielisen datan Vaultiin, saa takaisin salatun tekstin eikä koskaan näe avainta. Salauksen purku toimii samalla tavalla. Tätä kutsutaan salaukseksi palveluna.
Hyötynä on, että avaimet ovat vain Vaultin sisällä, ne voidaan vaihtaa keskitetysti ja vaarantunut sovellus ei voi vuotaa avainta, jota sillä ei koskaan ollut.
# Encrypt data without the app ever seeing the key
vault write transit/encrypt/orders-key \
plaintext=$(echo -n 'card=4111...' | base64)
# returns: ciphertext=vault:v1:abc123...
# Decrypt later
vault write transit/decrypt/orders-key ciphertext='vault:v1:abc123...'Salaisuuksien injektointi työkuormiin
Holvista on hyötyä vain, jos sovellukset voivat käyttää salaisuuksia kovakoodaamatta polkua tai tokenia. Yleisiä injektointimalleja ovat:
- Sidecar/agent: Vault Agent toimii sovelluksen rinnalla, tunnistautuu ja kirjoittaa salaisuudet jaettuun muistissa olevaan taltioon.
- CSI driver: Kubernetes liittää salaisuudet tiedostoina Secrets Store CSI driverin avulla.
- SDK fetch: sovellus kutsuu holvin APIa suoraan käynnistyksen yhteydessä.
Salaisuudet kannattaa liittää muistitiedostojärjestelmään (tmpfs) ympäristömuuttujien sijaan, ja niiden kirjoittamista levylle kannattaa välttää, jotta ne eivät säily siellä.
# Vault Agent template renders a secret to an in-memory file
template {
contents = "DB_PASS={{ with secret \"secret/app/db\" }}{{ .Data.data.password }}{{ end }}"
destination = "/run/secrets/db.env"
}Audit-lokitus ja vastuuvelvollisuus
Jokainen salaisuussäilön luku-, kirjoitus- ja autentikointitapahtuma tulee tallentaa audit-lokiin. Sen ansiosta salaisuuksien hallinta voidaan perustella tietoturvapoikkeaman aikana.
Audit-lokit vastaavat kriittisiin kysymyksiin: kuka käsitteli mitä salaisuutta, milloin ja mistä. Vault muodostaa lokien arkaluontoisista arvoista hajautusarvot, joten loki itsessään ei vuoda salaisuuksia.
Toimittakaa audit-lokit väärentämisen paljastavaan, erilliseen järjestelmään (SIEM), jotta salaisuussäilön palvelimen vaarantava hyökkääjä ei voi samalla poistaa tietoja siitä, mitä hän käsitteli.
# Enable a file audit device (HMAC-hashes secret values)
vault audit enable file file_path=/var/log/vault/audit.log
# Forward to a SIEM/syslog endpoint for tamper resistance
vault audit enable syslog tag="vault" facility="AUTH"Vaultin suojaaminen
Keskitetty säilö keskittää riskin: jos säilö vaarantuu, kaikki vaarantuu. Suojatkaa se tärkeimpänä omaisuutenanne:
- Käyttäkää kaikissa päätepisteissä TLS:ää; älkää koskaan altistako salaamatonta APIa.
- Pidättehän säilön yksityisessä verkossa tiukkojen palomuurisääntöjen takana.
- Ottakaa auto-unseal käyttöön pilvipalvelun KMS:n avulla, jotta shardien käsittelyä ei tarvita manuaalisesti, mutta suojatkaa kyseinen KMS-avain erittäin huolellisesti.
- Käyttäkää lyhyitä tokenien TTL-arvoja ja uusittavia leaseja, jotta varastetut tokenit vanhenevat nopeasti.
- Asentakaa korjaukset viipymättä ja valvokaa audit-lokeja poikkeamien varalta.
Säilö korvaa monet mahdolliset vikapisteet yhdellä erittäin hyvin puolustetulla kohteella.
Oikean säilön valitseminen
Yhtä parasta työkalua ei ole, vaan säilö tulee valita ympäristön mukaan:
- Yksi pilvi, yksinkertaiset tarpeet – käyttäkää pilvipalvelun omaa hallintaa (AWS/Azure/GCP), jotta ylläpitotaakka pysyy mahdollisimman pienenä.
- Monipilviympäristö tai paikallinen ympäristö – HashiCorp Vault tarjoaa yhdenmukaisen ja siirrettävän abstraktion.
- Tarvitaan dynaamisia salaisuuksia tai encryption-as-a-service-palvelu – Vaultin secrets engine -komponentit ovat tähän kyvykkäin vaihtoehto.
- Kubernetes-painotteinen ympäristö – yhdistäkää säilö CSI-ajuriin tai External Secretsin kaltaiseen operaattoriin.
Valitsittepa minkä tahansa vaihtoehdon, tavoite on sama: yksi auditoitu ja käyttöoikeuksin hallittu totuuden lähde, joka korvaa hajallaan olevat selväkieliset salaisuudet.
Pikatesti
Testatkaa, miten hyvin ymmärrätte Vaultin suojausmallin.
Kertaus: Vaultit ja salaisuussäilöt
Opitte korvaamaan hajallaan olevat salaisuudet keskitetyllä ja auditoidulla säilöllä.
- Salaisuussäilö tarjoaa keskitetyn tallennuksen, käyttöoikeuksien hallinnan, audit-lokituksen ja salauksen.
- HashiCorp Vault käyttää liitettäviä secrets engine -komponentteja sekä seal/unseal-mallia, jota suojaa Shamir's Secret Sharing.
- Autentikointimenetelmät määrittävät identiteetin alustan (Kubernetes, IAM, AppRole) perusteella, ja käyttöoikeuskäytännöt valvovat vähimpien oikeuksien periaatteen toteutumista.
- Pilvinatiivien säilöjen etuna on vähäinen ylläpitotaakka, mutta vastineeksi siirrettävyys on heikompi.
- Transit engine tarjoaa salauksen palveluna, joten sovellusten ei tarvitse hallita avaimia.
- Välittäkää salaisuudet agenttien tai CSIn avulla muistiin, kirjatkaa jokainen käyttö ja suojatkaa säilö tärkeimpänä omaisuutenanne.
Seuraavaksi teemme salaisuuksista vielä turvallisempia luomalla ne dynaamisesti ja lyhytkestoisina.
Opi Cyber Security Academy 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
- 76
- Oppitunnit
- 303
Usein kysytyt kysymykset
Onko oppitunti ”Holvit ja salaisuuksien säilöt” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Cyber Security Academy-oppimispolun 3 oppituntia, myös oppitunnin “Holvit ja salaisuuksien säilöt”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Holvit ja salaisuuksien säilöt”?
Salaisuuksien keskittäminen Vaultin kaltaisilla työkaluilla Harjoittelet Cyber Security Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Cyber Security Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Cyber Security Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Holvit ja salaisuuksien säilöt”-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ä Cyber Security Academy-oppitunnilla?
Kyllä. Jokainen Cyber Security Academy-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
- Salaisuuksien leviämisen ongelma
- Holvit ja salaisuuksien säilöt
- Dynaamiset salaisuudet ja leasing
- Avainten kierto ja tunnistus