SAML-tietoturva -pikaopas
Nopea viiteopas Security Assertion Markup Language (SAML) -kieleen ja sen tietoturvaominaisuuksiin. Ymmärrä avainkäsitteet, toteutusvinkit ja parhaat käytännöt SAML-pohjaisen todennuksen ja valtuutuksen suojaamiseen yritysympäristöissä.
Johdanto
Security Assertion Markup Language (SAML) on avoin standardi todennus- ja valtuutustietojen vaihtoon osapuolten välillä, erityisesti identiteetintarjoajan ja palveluntarjoajan välillä. SAML on XML-pohjainen merkkauskieli turvaväittämille, jota käytetään kertakirjautumiseen (SSO) ja identiteetin federaatioon. Sitä käytetään yleisesti yritysympäristöissä todennus- ja valtuutustarkoituksiin.
Vakiomuotoinen SAML-todennusvirta
- Käyttäjä pyytää pääsyä asiakassovellukseen, joka toimii palveluntarjoajana (SP).
- SP lähettää SAML SSO -todennuspyynnön identiteetintarjoajalle (IdP) ja uudelleenohjaa käyttäjän IdP:hen.
- IdP kehottamaan käyttäjää antamaan tunnukset, jos käyttäjä ei ole jo todennettu.
- Käyttäjä syöttää tunnukset, ja IdP todentaa käyttäjän.
- IdP lähettää SAML-vastausväittämän SP:lle, joka sisältää käyttäjän todennustilan ja attribuutit. IdP uudelleenohjaa sitten käyttäjän takaisin SP:lle.
- SP vastaanottaa SAML-vastausväittämän, validoi sen ja myöntää pääsyn käyttäjälle.
SAML-tietoturvatekijät
SP-entiteetin tunnus
Ajattele SP:n entiteetin tunnusta uniikkina merkintänä SP:lle SAML-todennuskontekstissa. Se on kuin sormenjälki, joka auttaa IdP:tä tunnistamaan SP:n niiden vuorovaikutuksen aikana. Tämä tunnus on osa SP:n metatietoja, ja se jaetaan IdP:n kanssa luottamuksen rakentamiseksi ja turvallisen viestinnän varmistamiseksi.
SP:n entiteetin tunnuksen käyttö:
- Metatietojen rekisteröinti:
EntityID
-attribuutti on osa SP:n metatietoja, ja se jaetaan IdP:n kanssa luottamussuhteen luomiseksi. Se toimii uniikkina tunnisteena SP:n metatietojen löytämiseksi ja tarvittavien konfigurointitietojen saamiseksi SAML-vuorovaikutukseen. - Todennuspyyntö: SP:n entiteetin tunnus sisällytetään SAML-todennuspyyntöön, joka lähetetään IdP:lle, selkeästi tunnistamaan pyytävän SP:n. IdP käyttää tätä tietoa pyynnön validointiin ja määrittää sopivan todennuskontekstin.
- Väittämäkohde: Onnistuneen käyttäjän todennuksen jälkeen SP:n entiteetin tunnus sisällytetään SAML-väittämään kohderajoituksena. Tämä toimenpide varmistaa, että väittämä on tarkoitettu yksinomaan nimetylle SP:lle eikä sitä voida väärinkäyttää muiden SP:n toimesta.
IdP:n entiteetin tunnus
Toisaalta, IdP:n entiteetin tunnus on erityinen nimike IdP:lle. Se auttaa tunnistamaan IdP:n SAML-ekosysteemissä, tehden SP:lle helpon sen löytymisen. Tämä tunnus sisällytetään IdP:n metatietoihin ja jaetaan SP:n kanssa, edistäen luottamuksellista suhdetta ja turvallisia yhteyksiä.
IdP:n entiteetin tunnuksen käyttö:
- Metatietojen rekisteröinti:
EntityID
-attribuutti sisältyy myös IdP:n metatietoihin, ja se jaetaan SP:n kanssa luottamussuhteen luomiseksi. Se toimii uniikkina tunnisteena IdP:n metatietojen löytämiseksi ja tarvittavien konfigurointitietojen saamiseksi SP:n SAML-vastausten validointiin. - Väittämän antaja: Kun IdP generoi SAML-väittämän, se sisällyttää entiteetin tunnuksensa antajana. Tämä attribuutti osoittaa entiteetin, joka on antanut väittämän, ja auttaa SP:tä tarkistamaan väittämän aitouden ja eheyden.
Kulkutila
Kulkutila on SAML-todennuksessa käytettävä parametri, joka helpottaa tilatiedon siirtoa SP:n ja IdP:n välillä. Se toimii sillana SP-aloitteisen ja IdP-aloitteisen SSO-virran välillä, säilyttäen käyttäjän kontekstin ja istuntotilan todennusprosessin aikana.
Kulkutilan käyttö:
- Käyttäjäkontekstin ylläpito: Kulkutila mahdollistaa SP:n välittää lisätietoa IdP:lle todennusprosessin aikana. Tieto voi sisältää käyttäjän istuntotilan, sovelluskontekstin tai minkä tahansa muun relevantin tiedon, joka on säilytettävä SAML-virran aikana. Kuten sovelluksen URL-osoite tai istunnon tunniste, jota käyttäjä oli käyttämässä ennen todennusta.
- CSRF-hyökkäysten estäminen: Kulkutila on ratkaiseva CSRF-hyökkäysten estämiseksi SAML-todennuksen aikana. Sisällyttämällä uniikki ja ennakoimaton kulkutila-arvo todennuspyyntöön, SP voi varmista SAML-vastauksen eheyden ja varmistaa, että se vastaa alkuperäistä pyyntöä.
Väittämän allekirjoitus
Väittämän allekirjoitus on kriittinen turvallisuusominaisuus SAML:ssä, joka varmistaa SAML-väittämien eheyden, aitouden ja kiistämättömyyden. Siihen liittyy SAML-väittämän digitaalinen allekirjoittaminen IdP:n yksityisavaimella, mikä mahdollistaa SP:n tarkistaa väittämän alkuperän ja havaita mahdolliset peukalointiyritykset.
Miten väittämän allekirjoitus toimii:
- Avaimien generointi: IdP generoi julkinen-yksityinen avainparin, jossa yksityisavainta käytetään SAML-väittämän allekirjoittamiseen ja julkinen avain jaetaan SP:n kanssa vahvistuksia varten. Tämä epäsymmetrinen salausjärjestelmä varmistaa, että vain IdP voi allekirjoittaa väittämän, kun taas SP voi vahvistaa sen.
- Jaettu sertifikaatti: IdP tarjoaa SP:lle julkisen avainsertifikaattinsa, joka sisältää julkisen avaimen, joka käytetään väittämän allekirjoituksen vahvistamiseen. Normaalisti tämä sertifikaatti on osa IdP:n metatietoja, tai SP voi saada sen turvallisen latausprosessin kautta.
- Väittämän allekirjoittaminen: Käyttäjän todennuksen jälkeen IdP allekirjoittaa digitaalisen SAML-väittämän yksityisavaimellaan. Tämä allekirjoitus sisältyy väittämään yhdessä julkisen avainsertifikaatin kanssa, mikä mahdollistaa SP:n varmistaa väittämän aitouden.
- Väittämän vahvistus: Kun SP vastaanottaa SAML-väittämän, se käyttää IdP:n julkista avainta väittämän allekirjoituksen vahvistamiseen. Jos allekirjoitus on validi, SP voi luottaa väittämään ja myöntää pääsyn käyttäjälle.
Väittämän salaus
Allekirjoittamisen lisäksi SAML tukee myös väittämän salausta suojatakseen herkkiä käyttäjäattribuutteja ja tietoja, joita siirretään IdP:n ja SP:n välillä. Salaamalla väittämän IdP varmistaa, että vain tarkoitetulla vastaanottajalla (SP) on mahdollisuus purkaa salaus ja päästä väittämän ydintietoihin, mikä takaa käyttäjän yksityisyyden ja luottamuksellisuuden. Väittämän salaus on valinnainen tietoturvaominaisuus SAML:ssä, jota voidaan käyttää vahvistamaan tietosuojaa.
Väittämän salauksen käyttö:
- Herkkien attribuuttien suojaus: Väittämän salaus on erityisen hyödyllistä turvaamaan herkkiä käyttäjäattribuutteja, kuten henkilökohtaisia tunnistetietoja (PII), rahoitustietoja tai terveystietoja. Salaamalla nämä attribuutit väittämässä IdP estää luvattoman pääsyn ja varmistaa tietojen luottamuksellisuuden.
Miten väittämän salaus toimii:
- Avainten vaihto: IdP ja SP perustavat turvallisen avaintenvaihtomekanismin salaamiseen tarkoitettujen avainten jakamiseen SAML-väittämän suojaamiseksi. Tämä voi sisältää joko symmetristen salaustekniikoiden tai julkisen avaimen salausjärjestelmien käyttämisen, riippuen salausalgoritmista ja avainten hallintastrategiasta.
- Attribuuttien salaus: SAML-väittämän luomisen jälkeen IdP salaa herkät käyttäjäattribuutit jaetulla salausavaimella. Salatut attribuutit upotetaan väittämään, mikä takaa, että vain SP voi purkaa ja päästä käsiksi tietoihin.
- Väittämän purkaus: Kun SP vastaanottaa salatun väittämän, se purkaa suojatut attribuutit jaetulla salausavaimella. Tämä prosessi mahdollistaa SP:n päästä turvallisesti käsiksi käyttäjän herkkiin tietoihin ja käsitellä ne tarpeen mukaan.
Sidontamenetelmät
SAML:n sidontamenetelmät määrittävät, kuinka SAML-viestit lähetetään SP:n ja IdP:n välillä eri viestintäprotokollien kautta. Ne määrittelevät käytettävät koodaus-, välitys- ja tietoturvamekanismit SAML-väittämien ja -pyyntöjen vaihtamiseksi, mikä varmistaa turvallisen ja luotettavan viestinnän osapuolten välillä.
Sekä SP että IdP ilmoittavat, mitkä sidontamenetelmät ne tukevat metatiedoissaan, jolloin ne voivat neuvotella sopivasta menetelmästä SAML-vuorovaikutukseen. Sidontamenetelmän valinta riippuu tekijöistä, kuten viestin koosta, tietoturvavaatimuksista ja viestintäkanavan ominaisuuksista.
SAML-sidontamenetelmät:
- HTTP-Uudelleenohjaus: SAML-viestit koodataan URL-parametreiksi ja välitetään HTTP-uudelleenohjauksen kautta. Tämä sidonta sopii tilanteisiin, joissa viestin koko on rajallinen ja viestintäkanava ei ole turvallinen.
- HTTP-POST: SAML-viestit koodataan lomakeparametreiksi ja välitetään HTTP POST -pyyntöjen kautta. Tämä sidonta käytetään, kun viestin koko ylittää URL-pituusrajan tai kun tarvitaan lisäturvatoimenpiteitä.
- Artefakti: SAML-viestit välitetään lyhytikäisten tunnusten, niin kutsuttujen artefaktien, avulla, joita vaihdetaan turvallisen taustakanavan kautta SP:n ja IdP:n välillä. Tämä sidonta sopii tilanteisiin, joissa viestin luottamuksellisuus ja eheys ovat kriittisiä, ja viestintäkanava on turvallinen.
Yleisimpiä sidontamenetelmiä:
- Todennuspyyntö: Todennuspyyntö SP:ltä IdP:lle välitetään yleensä HTTP-uudelleenohjausta käyttäen sen yksinkertaisuuden ja tehokkuuden vuoksi. SP koodaa SAML-pyynnön URL-parametreiksi ja uudelleenohjaa käyttäjän selaimen IdP:lle todennusta varten. Tämä tunnetaan nimellä SP-aloitteinen SSO-virta.
- Väittämävastaus: SAML-vastausväittämä IdP:ltä SP:lle välitetään tavallisesti HTTP POST -sidontamenetelmää käyttäen. IdP koodaa SAML-väittämän lomakeparametreiksi ja lähettää sen takaisin SP:lle validointia varten. Tämä varmistaa, että väittämä välitetään turvallisesti paljastamatta herkkiä tietoja URL:ssa. Lisäksi HTTP POST -sidonta voi käsitellä suurempia viestikokoja verrattuna HTTP-uudelleenohjaukseen.
Tietoturvaelementit ja -näkökohdat SAML-väittämissä
Antaja
Kuten jo mainittiin, antaja on avainominaisuus SAML-väittämissä, joka tunnistaa väittämän antaneen entiteetin. Antaja on tyypillisesti IdP, joka on todennut käyttäjän ja generoinut väittämän. Sisällyttämällä antaja-attribuutin väittämään SP voi tarkistaa väittämän alkuperän ja varmistaa, että se tulee luotetusta lähteestä.
Allekirjoitus
Allekirjoituselementti SAML-väittämässä sisältää IdP:n luoman digitaalisen allekirjoituksen, joka takaa väittämän eheyden ja aitouden. Allekirjoitus luodaan IdP:n yksityisavaimella ja sisällytetään väittämään yhdessä julkisen avainsertifikaatin kanssa SP:n vahvistettavaksi. Varmistamalla allekirjoituksen SP voi tarkistaa, että väittämää ei ole peukaloitu ja että se tulee odotetulta IdP:ltä.
Ehdot
Ehdoilla SAML-väittämässä määritellään rajoitukset ja ehdot, jotka koskevat väittämän pätevyyttä ja käyttöä. Ne sisältävät ehtoja, kuten väittämän voimassaoloajan, kohderajoitukset ja muut kontekstuaaliset rajoitukset, joita SP:n on noudatettava väittämän käsittelyssä.
Todennusväittämä
Todennusväittämä (AuthnStatement) on SAML-väittämän keskeinen osa, joka tarjoaa tietoa käyttäjän todennustilasta ja kontekstista. Se sisältää tietoja, kuten käytetyn todennusmenetelmän, todennusajan ja asiaankuuluvan todennuskontekstitiedon, joka mahdollistaa SP:n tehdä tietoisia käyttöoikeuspäätöksiä käyttäjän todennustilan perusteella.
Todennusväittämän ominaisuudet:
- AuthenticationContext: Kuvaa käyttäjän todennusmenetelmän ja -kontekstin, kuten käyttäjätunnus-salasana, monitekijätodennus tai kertakirjautuminen. Tämä ominaisuus auttaa SP:tä arvioimaan todennusprosessin vahvuuden ja luotettavuuden sekä määrittämään sopivat käyttöoikeusvalvonnat.
- AuthenticationInstant: Ilmaisee ajan, jolloin käyttäjä on todentanut IdP:n toimesta. Tämä aikaleima on ratkaiseva todennuksen tuoreuden varmentamiseksi ja toistohyökkäysten tai istunnon kaappauksen estämiseksi.
- SessionNotOnOrAfter: Määrittää käyttäjän istunnon päättymisajan, jonka jälkeen käyttäjän on todennettava itsensä uudestaan pääsyn saamiseksi palveluun. Tämä ominaisuus auttaa enforcing session management policies ja suojaamasta valtuuttamattomalta pääsyltä.
Parhaat käytännöt SAML-tietoturvalle
- Käytä turvallisia sidontamenetelmiä: Valitse sopivat SAML-sidontamenetelmät turvallisuusvaatimustesi ja viestintäkanavan ominaisuuksien perusteella. Käytä HTTP POST -menetelmää herkän datan siirtämiseen ja HTTP-uudelleenohjausta yksinkertaisiin pyyntöihin.
- Vahvista väittämien allekirjoitukset: Vahvista SAML-väittämien digitaaliset allekirjoitukset niiden eheyden ja aitouden varmistamiseksi. Käytä IdP:n julkisen avainsertifikaattia allekirjoituksen validointiin ja peukaloinnin havaitsemiseen.
- Pakota kohderajoitukset: Sisällytä kohderajoitukset SAML-väittämiin rajoittaaksesi niiden laajuuden tarkoitetulle SP:lle. Tämä estää väittämien toistohyökkäykset ja valtuuttamattoman pääsyn muilta palveluntarjoajilta.
- Suojaa metatietojen vaihto: Suojaa SP:n ja IdP:n metatietojen vaihto metatietojen peukaloinnin ja vääristelyhyökkäysten estämiseksi. Käytä turvallisia kanavia ja mekanismeja metatietojen jakamiseen turvallisesti.
- Toteuta turvallinen kulkutilan käsittely: Käytä uniikkeja ja ennakoimattomia kulkutilaarvoja CSRF-hyökkäysten estämiseksi SAML-todennuksen aikana. Vahvista kulkutilan eheys ja aitous.
- Enforce session management: Määritä istunnon päättymispolitiikat ja valvo istuntojen aikakatkaisuja, jotta voidaan lieventää riskiä istunnon kaappauksesta ja valtuuttamattomasta pääsystä. Käytä istuntoon liittyviä atribuutteja SAML-väittämissä käyttäjäistuntojen hallinnoimiseen turvallisesti.
- Salauserkkäät attribuutit: Tarvittaessa salattu käyttäjäattribuutit SAML-väittämissä käyttäjä yksityisyyden ja tietojen luottamuksellisuuden turvaamiseksi. Käytä turvallisia salaustekniikoita ja avainhallintakäytäntöjä herkän datan suojaamiseen.
Vaihtoehtoja SAML:lle
Vaikka SAML on edelleen laajalti käytetty standardi SSO:lle ja identiteettifederaatiolle, tarjoten vankan joukon ominaisuuksia ja tietoturvamekanismeja, sen ikä saattaa muodostaa haasteita modernien sovellusten muuttuville tietoturva- ja käytettävyysvaatimuksille. Verrattuna nykyaikaisempaan OAuth 2.0 -pohjaiseen OpenID Connectiin (OIDC), SAML on usein monimutkaisempi ja puuttuu osasta parannetuista tietoturvaominaisuuksista, joita OIDC tarjoaa. Esimerkiksi OIDC:n moni turvallisuuspyyntö-autorisaatiokoodin grant-virta tarjoaa turvallisemman lähestymistavan kuin suhteellisen suoraviivainen SAML-väittämävaihto-virta. Organisaatioille, jotka haluavat omaksua modernimman ja joustavamman identiteettifederaation ratkaisun, OIDC saattaa olla elinkelpoinen vaihtoehto SAML:lle.