Tässä kirjoituksessa perehdytään ensin lyhyesti AWS:n käyttäjätiliin sekä AWS:n tärkeimpiin käyttäjätyppeihin, joiden kautta AWS:n palveluita voidaan käyttää.
Seuraavaksi esitellään lyhyesti AWS komentorivityökalun (AWS CLI) käyttäjäasetuksia sekä profiilien käyttöä komentorivityökalun kanssa.
Lopuksi otetaan käyttöön näppärä työkalu, jonka avulla useiden eri profiilien käyttäminen ja niiden välillä vaihtaminen onnistuu sujuvasti.
AWS-tilin luominen
AWS-pilviympäristön palveluja käytettäessä, AWS:n hallintaliittymään webissä luodaan ensimmäisenä AWS-käyttäjätili (AWS account), jonka kautta AWS:n palveluita voidaan hallinnoida. Tilille myös syötetään luottokorttitiedot laskutusta varten.
Tilille voidaan kirjautua eri tavoilla ja käydään seuraavaksi läpi eri kirjautumistapoja.
Kirjautumistavat: Root-käyttäjä vs. IAM-käyttäjä
AWS tilille kirjaudutaan AWS:n hallintaliittymän (AWS Management Console) kautta osoitteessa https://console.aws.amazon.com/console/home
Kuten yllä olevasta kuvasta näkyy, AWS tarjoaa kaksi tapaa kirjautua AWS-tilille: Root-käyttäjä ja IAM-käyttäjä. Tutustutaan seuraavaksi niiden eroihin ja käyttötapoihin.
Root-käyttäjä
Tämä käyttäjä luodaan samalla kun AWS-tili perustetaan. Root-käyttäjällä on täydet oikeudet kaikkiin AWS-tilin resursseihin ja asetuksiin. Root-käyttäjää tulisi käyttää vain tilin hallinnointiin ja kriittisiin tehtäviin, koska vääriin käsiin joutuessa Root-tunnuksella voidaan saada aikaan suurtakin vahinkoa.
Root-käyttäjällä on oletuksena käytössä MFA-tunnistautuminen (Multi-factor authentication) eli pelkällä tunnuksella ja salasanalla ei pääse kirjautumaan sisään vaan lisäksi vaaditaan esimerkiksi autentikointisovelluksesta (kuten Microsoft Authenticator) löytyvä vaihtuva koodi.
Tilin laskutustiedot näkyvät vain Root-käyttäjälle. On myös muutamia muita toimintoja, jotka vaativat Root-käyttäjän tunnusta.
IAM-käyttäjä
IAM (Identity and Access Management) -käyttäjä on tiliin yhdistetty käyttäjä, joka luodaan tilin Root-käyttäjän toimesta. IAM-käyttäjille voidaan määrittää tarkat käyttöoikeudet ja roolit, jotka rajoittavat pääsyä AWS-resursseihin.
Kutakin käyttötarkoitusta varten voidaan luoda uusi IAM-käyttäjä ja antaa sille vain tarvittavat oikeudet.
IAM-käyttäjät voivat kirjautua AWS hallintaliittymään käyttäen tilin tunnusta tai alias-nimeä, käyttäjänimeä ja salasanaa, mutta heille näytetään vain ne resurssit, joihin käyttöoikeuksien kautta on annettu oikeus. IAM-käyttäjät voivat myös käyttää monivaiheista tunnistautumista (MFA).
IAM-käyttäjän oikeuksien määrittäminen voidaan tehdä varsin monipuolisesti ja IAM:n voidaankin sanoa olevat yksi AWS:n monimutkaisimmista osuuksista. Tässä artikkelissa emme perehdy tarkemmin IAM:n käytäntöihin ja oikeuksiin, vaan perehdymme eri käyttäjätunnusten konkreettiseen käyttämiseen.
AWS CLI:n asennus ja konfigurointi
AWS CLI (Command Line Interface) on komentorivityökalu, jonka avulla voit hallita AWS-palveluita suoraan oman koneen komentoriviltä.
Sen avulla voit suorittaa erilaisia tehtäviä, kuten luoda ja hallita resursseja ja tarkastella resurssien tietoja ilman, että tarvitsee käyttää AWS:n hallintaliittymää.
AWS CLI:n kautta suoritetut komennot suoritetaan aina jonkin käyttäjätunnuksen kautta, joka määrittää oikeudet suoritettaville komennoille.
AWS CLI asennetaan omalle koneelle AWS:n virallisilta sivuilta.
Asennuksen onnistumisen voi varmistaa vaikkapa komennolla
aws --version
Asennuksen jälkeen tavallinen tapa configuroida AWS CLI on komento
aws configure
configure
-komennon suorituksen yhteydessä kysytään AWS Access Key ID, AWS Secret Access Key, oletusalue (region) ja oletusformaatti (output format).
AWS Access Key ID ja AWS Secret Access Key ovat käyttäjäkohtaisia tunnisteita, joiden kautta voidaan käyttää AWS:n palveluja käyttäjän oikeuksilla. Nämä tiedot generoidaan AWS:n hallintaliittymässä ja Secret Access Key on nimensä mukaisesti tieto joka on syytä pitää tallessa huolellisesti.
AWS Access Key ID ja AWS Secret Access Key avaavat pääsyn AWS:n resursseihin kyseisen käyttäjätunuksen oikeuksilla.
Kun edellä mainitut tiedot on annettu configure
-komennon suorituksen yhteydessä, aws
-komennon kautta voidaan suorittaa komentoja käyttäjän oikeuksilla. Esimerkiksi listata S3 bucetit:
aws s3 ls
Profiilien konfigurointi ja käyttö AWS CLI:ssä
Edellisessä kappaleessa konfiguroitiin AWS CLI käyttämään tietyn käyttäjän käyttöoikeuksia. Mutta kuten edellä mainittiin, yleensä IAM-käyttäjiä luodaan useita eri käyttötarkoituksia varten. Tavallinen harrastelijakoodarikin haluaa varmasti luoda erillisen IAM-käyttäjän eri projektien käyttöön.
Miten hallita usean IAM-käyttäjän käyttö omalla koneella?
Yksi tapa on tietysti konfiguroida AWS CLI aina uudelleen, mutta se on melko kankea tapa. Ratkaisuksi on kehitetty AWS CLI:n sisäinen työkalu: profiilit. AWS CLI profiilien avulla voi käyttää useita AWS-tunnuksia omalta koneelta eri tarkoituksiin ilman että tarvitsee tehdä varsinaista konfigurointia käyttäjää vaihdettaessa.
Yksi profiili siis edustaa yhtä AWS käyttäjäoikeutta. Oletuskonfigurointi edustaa profiilia, jonka nimi on default.
Uusi profiili perustetaan komennolla
aws configure --profile omaProfiili
Yllä esitetty esimerkkikomento kysyy vastaavat tiedot kuin peruskomento aws configure
ja tallentaa tiedot profiilille nimeltä omaProfiili.
Tallennettua profiilia voidaan nyt käyttää komentojen suoritukseen, antamalla profiilin nimi komennon yhteydessä. Esimerkki:
aws s3 ls --profile omaProfiili
Profiilien tiedot tallennetaan paikallisesti kahteen tiedostoon: ~/.aws/credentials
ja ~/.aws/config
.
Ensimmäinen credentials
-tiedosto sisältää profiilikohtaiset AWS Access Key ID ja AWS Secret Access Key -tiedot:
[default]
aws_access_key_id = [oletus profiilin access key id]
aws_secret_access_key = [oletus profiilin secret access key]
[omaProfiili]
aws_access_key_id = [oman profiilin access key id]
aws_secret_access_key = [oman profiilin secret access key]
Toinen tiedosto config
sisältää profiilin muut tiedot eli valitun alueen (region) ja oletusformaatin (output format)
[default]
region = us-west-2
output = json
[profile omaProfiili]
region = eu-central-1
output = text
Tiedostoja voi muokata itsekin jos tulee tarvetta.
Profiilin valinta komentorivillä
Profiilit auttavat siis huomattavasti paikallisten käyttäjätilien hallinnassa, mutta profiilin antaminen jokaisen komennon yhteydessä on kuitenkin varsin työlästä. Perehdytään seuraavaksi tapoihin, joilla voidaan hallita ja käyttää profiileja sekä vaihtaa oletusprofiilia.
Oletusprofiili ja profiili komennon yhteydessä
Kertauksena: jos AWS CLI komennon yhteydessä ei annettu profiilin nimeä, komento suoritetaan oletusprofiilin (default) kautta. Komennon yhteydessä voidaan kuitenkin antaa parametrina --profile [profiilinNimi]
jolloin suoritus tapahtuu kyseisen profiilin oikeuksilla.
Profiilien hallinta ja käyttö AWS CLI kautta
AWS CLI sisältää erilaisia komentoja profiilien hallintaan. Tutustutaan niihin seuraavaksi.
Olemassa olevat profiilit voidaan listata komennolla
aws configure list-profile
Komento listaa kaikki käytettävissä olevien profiilien nimet, esim:
default
omaProfiili
serverlessTestProjectUser
bucketUser
Yksittäisen profiilin voi konfiguroida uudelleen komennolla
aws configure --profile [profiilin nimi]
Näytä nykyisen profiilin tiedot:
aws configure list
Mutta yllättävää kyllä, komennoissa käytettävää oletusprofiilia ei voi asettaa muutoin kuin muokkaamalla asetustiedostojen [default]
kohtia tai asettamalla ympäristömuuttujan:
export AWS_PROFILE=omaProfiili
Perehdytään seuraavaksi näppärään pikku työkaluun, jolla voidaan sujuvoittaa oletusprofiilin valintaa.
Työkalu oletusprofiilin valintaan
Koska --profile
-parametrin antaminen komentojen yhteydessä on varsin työlästä ja ympäristömuuttujan asettaminenkin vaatii oman vaivansa, perehdytään seuraavaksi työkaluun, jolla voidaan hallita ja vaihtaa profiileja paremmin kuin AWS CLI työkalun omilla keinoilla.
Osoitteesta https://github.com/aws-samples/awscli-profile-credential-helpers löytyy repository, jossa on erilaisia työkaluja juurikin AWS CLI profiilien hallintaan.
Kyseessä on kokoelma työkaluja, mutta otamme käyttöön vain yksinkertaisen työkalun aws-profile
, jonka avulla profiilien valinta komentorivillä on miellyttävää.
Itse asiassa kyseessä on vain yksinkertainen Bash-funktio, jonka avulla voidaan helposti listata profiilit sekä asettaa nykyinen oletusprofiili:
function aws-profile() {
if [[ -z "${1}" ]]; then
profiles=$(grep '\[profile' ~/.aws/config | tr -d '[]' | awk '{print $2}')
for profile in $profiles; do
if [[ "${profile}" == "${AWS_PROFILE}" ]]; then
echo "${profile} *"
else
echo "${profile}"
fi
done
else
export AWS_PROFILE="${1}"
fi
}
Skripti asennetaan yksinkertaisesti siten, että kopioidaan repositoryn tiedosto aws-profile omalle koneelle tiedoston ~/.bashrc
tai ~/.bash_profile
sisälle. Asennuksen jälkeen komentoa voi testata ajamalla komennon:
aws-profile
Tämä komento listaa kaikki käytettävissä olevat profiilit ja korostaa käytössä olevan profiilin.
Oletusprofiilin voi valita ajamalla komennon
aws-profile [profiilin nimi]
Yllä oleva komento itse asiassa vain asettaa ympäristömuuttujan AWS_PROFILE. Sen sen jälkeen AWS CLI komennot käyttävä oletuksena ympäristömuuttujaan asetettua profiilia!
Nopea ja helposti muistettava profiilin vaihtaminen tehostaa ja helpottaa toimintaa, kun profiileja on useita ja niiden välillä joutuu vaihtelemaan.
Yhteenveto
Tässä artikkelissa käsiteltiin AWS:n käyttäjätilien ja käyttäjätyyppien perusteita, AWS CLI:n (komentorivityökalun) käyttöä sekä profiilien hallintaa.
AWS-tilin luominen ja hallinta on ensimmäinen askel AWS-palveluiden käytössä. Tilille voidaan kirjautua joko root-käyttäjänä tai IAM-käyttäjänä. Root-käyttäjällä on täydet oikeudet kaikkiin resursseihin, kun taas IAM-käyttäjille voidaan määrittää tarkat käyttöoikeudet.
AWS CLI:n avulla voidaan hallita AWS-palveluita suoraan komentoriviltä, ja sen konfigurointi tapahtuu aws configure
-komennolla, jossa määritetään käyttäjän tunnistetiedot ja asetukset. Profiilien avulla voidaan hallita useita käyttäjätilejä ja vaihtaa niiden välillä helposti ilman, että tarvitsee jatkuvasti konfiguroida AWS CLI:tä uudelleen.
Artikkelin lopussa esiteltiin näppärä Bash-funktio aws-profile
, joka helpottaa profiilien hallintaa ja vaihtamista. Tämä työkalu tekee profiilien käytöstä sujuvampaa ja tehokkaampaa, erityisesti silloin, kun käytössä on useita eri profiileja.