31.07.2018 | Joonas Westlin

Siitä saakka kun Managed Service Identity julkaistiin viime vuonna, me olemme olleet erittäin innoissamme siitä. Ei enää salasanoja tai muita avaimia konfiguraatiotiedostoissa.

Nyt kun se sai kasan päivityksiä, ajattelimme tehdä niistä yhteenvedon ja tarjota hieman ajatuksiamme.

KERTAUS MANAGED SERVICE IDENTITYSTÄ

Jos Managed Service Identity (MSI) ei ole tuttu, voitte lukea siitä näiltä sivuilta:

MSI:n päätarkoitus on poistaa autentikaation alustusongelma. Me voisimme laittaa kaikki sensitiiviset avaimet Azure Key Vaultiin. Mutta silloin me tarvitsemme silti avaimen sovelluksen konfiguraatiossa, jolla pääsemme Key Vaultiin kiinni.

MSI poistaa tarpeen tälle avaimelle, ja tarjoaa sen sijaan palvelun Azure-palvelusi sisällä jota voidaan käyttää Azure AD access tokenien hakemiseen. Palveluidentiteetti jota tässä käytetään on täysin Azuren hallitsema, ja teidän ei tarvitse huolehtia asioista kuten avainten vaihtamisesta. Teidän tarvitsee ainoastaan:

  1. Laittaa MSI päälle Azure-palvelussa
    • Tuetut palvelut tällä hetkellä ovat App Service, Functions, virtuaalikoneet, Scale Setit, ja Data Factoryt (v2)
  2. Anna generoidulle palveluidentiteetille tarvittavat oikeudet
  3. Käytä sisäistä rajapintaa access tokenien hakemiseen
  4. Kutsu haluamaasi APIa tokenilla

Jokin palvelut Azuressa eivät tue Azure AD access tokeneilla tapahtuvaa autentikointia (vielä), mutta niiden avaimet voidaan tallentaa Azure Key Vaultiin ja hakea sovelluksen käynnistyessä MSI:stä saadulla access tokenilla. Lopputuloksena sovelluksen konfiguraatiotiedostoissa tai esim. App Servicen App Settingeissä on 0 sensitiivistä avainta.

UUDEN TYYPPINEN HALLITTU IDENTITEETTI

Nyt on olemassa kahden tyyppisiä hallittuja identiteettejä.

Järjestelmän asettama identiteetti (system-assigned) on se sama joka on ollut olemassa jo aiemmin ja toimii edelleen samalla tavalla. Voit laittaa sellaisen päälle esim. App Servicessä sen konfiguraatiosta napin painalluksella. Palvelulle luodaan identiteetti (service principal) automaattisesti Azure AD:en, ja identiteettiä voidaan käyttää sovelluksista joita ajetaan kyseisessä palvelussa ilman huolehtimista esim. avainten vaihtamisesta.

Identiteetit jotka ovat järjestelmän asettamia ovat kytkettyjä palveluun Azuressa kuten App Serviceen. Se yhdistää niiden elinkaaret. Eli jos poistat App Servicen, siihen liitetty identiteetti poistuu automaattisesti Azure AD:sta.

Käyttäjän asettamat identiteetit toimivat eri tavalla. Ne ovat resursseja Azure-tilauksessa, jotka ovat itsenäisiä. Sen jälkeen kun olet luonut sellaisen, voit asettaa sen yhteen tai useampaan Azuren palveluun. Useamman tälläisen identiteetin asettaminen palvelulle tulee myös olemaan mahdollista. Käyttäjän asettamat identiteetit ovat tällä hetkellä tuettuja ainoastaan virtuaalikoneissa ja Scale Seteissä, mutta odotamme tuen niille laajenevan muihin palveluihin jossain vaiheessa.

Tällä hetkellä käyttäjän asettamia identiteettejä voi asettaa ainoastaan Resource Management API:n kautta, ei Portaalista. Objektimalli Resource Management API:ssa tulee myös muuttumaan vielä. Joten on parasta odottaa vähän aikaa ennen näiden kokeilemista.

Kyky jakaa identiteetti palveluiden välillä voi tehdä pääsynhallinnasta helpompaa. Meidän mielestämme tämä tulee olemaan loistava lisä.

MUUTOKSET VIRTUAALIKONEISSA

Managed Identity-lisäosaa virtuaalikoneille ollaan deprekoimassa. Sen tuki päättyy tammikuun lopussa 2019. Tokenien pyynnöt tulisi jatkossa kohdistaa Instance Metadata Servicelle (IMDS). Se on palvelu, joka on saatavilla joka virtuaalikoneella Azuressa.

Lisäosan kanssa oli muutamia ongelma. Ensinnäkin avaimet joita tämä hallittu identiteetti käyttää varastoitiin virtuaalikoneen sisälle. Toisekseen virtuaalikoneen käyttöjärjestelmän piti tukea lisäosaa. Kumpikaan näistä ei ole ongelma IMDS:n kanssa. Koska se on palvelu VM:n ulkopuolella, avaimet eivät koskaan ole virtuaalikoneella. Ja koska se on REST-palvelu, sitä voidaan käyttää mistä tahansa käyttöjärjestelmästä.

Tässä on esimerkki access tokenin hakemisesta IMDS:llä (lainattu päivitysartikkelista):

GET 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' HTTP/1.1
Metadata: true

Se on erittäin samantapainen lisäosan rajapinnan kanssa, ja vaatii ainoastaan että määritätte version sekä resurssin jolle haluatte tokenin. IP-osoite on aina sama joka virtuaalikoneella.

Tärkeä asia huomata on, että kaikki virtuaalikoneella ajettava koodi voi kutsua tätä rajapintaa. Se ei katso mikä palvelu sitä kutsuu. Eli haavoittuvuus, joka mahdollistaa satunnaisen koodin ajamisen olisi erittäin vakava. Sen kaltaiset haavoittuvuudet ovat toki muutenkin vakavia. Tämä on kuitenkin aika paljon parempi kuin lisäosan kanssa, jossa avaimet olisivat mahdollisesti myös hyökkääjän saatavilla.

Me näemme ainoastaan hyötyjä Instance Metadata Serviceen siirtymisessä. Yhteensopivuus pelkästään tekee siitä 100% mahtavamman.

APP SERVICE JA FUNCTIONS MANAGED IDENTITY GA

Järjestelmän asettamat identiteetit Azuren App Servicessä ja Functioneissä ovat nyt nk. Generally Available, eli ne ovat saavuttaneet pisteen jossa niiden tuotantokäyttö on virallisesti tuettua. Yksi asia mikä kannattaa pitää mielessä on että rajapinta ei pysty käsittelemään kovin montaa yhtäaikaista kutsua, ja välimuisteja tokeneille tulee käyttää mahdollisimman paljon. .NET-kirjasto jolla MSI:tä käytetään käyttää välimuistia sisäisesti. Eli jos käytätte sitä, homma on kunnossa.

VISUAL STUDIO TEAM SERVICES PÄIVITYKSET

Sprint 135-päivitys Visual Studio Team Servicesiin mahdollistaa helpomman pääsynhallinnan niille jotka käyttävät Azuren virtuaalikoneita build agentteina. Voitte nyt käyttää hallittuja identiteettejä antaaksenne virtuaalikoneelle pääsyn esim. Azure Key Vaultiin tai Azuren Resource Management API:in, ja hyödyntää niitä oikeuksia build- ja release-prosesseissa. Ei enää tarvetta luoda identiteettejä Azure AD:en käsin ja tallentaa avaimia VSTS:än.

Lue lisää päivitystiedotteesta.

Tämä päivitys ei koske hosted agentteja. Mutta jos käytätte omia build agentteja ja ne ovat Azure VM:iä, tämä on aika loistava ominaisuus teille.

YHTEENVETO

Hallittuihin identiteetteihin on tulossa mahtavia ominaisuuksia. Ja Azure AD tokeneilla tapahtuvan autentikaation leviämisen myötä muihin Azuren palveluihin (kuten Azure Storageen joka on nyt previewssä), pääsemme lähemmäs päivää jolloin palveluiden välisessä autentikaatiossa ei tarvita enää avainten käsittelyä.

Odotamme innolla käyttäjän asettamien identiteettien testausta kunhan ne tulevat saataville Portaalissa.

LINKKEJÄ