Tietoturva

    AWS access key ja secret key: näin luot, käytät, kierrätät ja jaat ne turvallisesti

    Mitä AWS:n avainpari on, miksi secret access key näkyy kerran, miten avaimet kierrätetään, mitä tehdä vuodon jälkeen ja miten avain jaetaan turvallisesti.

    LinkPilot Team · Ihmiset, jotka rakentavat ja ylläpitävät LinkPilotia TetraCore, LLC -yhtiössä · Tietoa LinkPilotista

    AWS:n käyttöavain koostuu kahdesta merkkijonosta, joiden avulla ohjelma voi toimia IAM-käyttäjän nimissä: access key ID yksilöi avaimen ja secret access key todistaa sen. Englanniksi niitä haetaan kolmella nimellä: access key ja secret key, secret access key tai pelkkä AWS secret key. Kaikki tarkoittavat samaa avainparia. Pari päätyy CLI-asetuksiin, CI-putkiin ja aivan liian usein Slack-viestiin.

    Tämä opas kertoo, mitä avaimen kaksi osaa ovat, miten ne luodaan ja otetaan käyttöön, miten avaimet kierrätetään ilman käyttökatkoa ja mitä tehdään, kun avain vuotaa. Lopuksi se vastaa kysymykseen, joka tulee vastaan aina, kun kehittäjä liittyy tiimiin tai alihankkija aloittaa: miten salainen avain luovutetaan ihmiselle ilman sähköpostia.

    Access key ID ja secret access key

    Access key IDSecret access key
    MuotoAKIAIOSFODNN7EXAMPLE (20 merkkiä)40 merkkiä isoja ja pieniä kirjaimia sekä symboleita
    TehtäväKertoo, mikä avain allekirjoittaa pyynnönAllekirjoittaa pyynnön ja todistaa, että avain on hallussa
    Salainen?Ei, käsittele sitä kuin käyttäjätunnustaKyllä, käsittele sitä kuin salasanaa
    Näkyykö myöhemmin?Kyllä, IAM-konsolissaEi koskaan luomisen jälkeen

    Pitkäaikaiset avaimet alkavat merkeillä AKIA. STS:n antamat väliaikaiset kirjautumistiedot, joihin kuuluu myös istuntotunniste (session token), alkavat merkeillä ASIA ja vanhenevat itsestään. Jos asetustiedostossa on avain, joka alkaa merkeillä ASIA, se lakkaa toimimasta muutaman tunnin kuluessa. Niin se on suunniteltu.

    Kumpikaan osa ei anna käyttöoikeuksia. Avain todentaa IAM-käyttäjän, ja käyttäjään liitetyt käytännöt (policies) ratkaisevat, mitä tämä identiteetti saa tehdä. Vuotanut avain käyttäjällä, jolla on vain lukuoikeus, on ongelma. Vuotanut järjestelmänvalvojan avain on tietoturvapoikkeama.

    Milloin pitkäaikaista avainta ylipäätään tarvitaan

    Rehellinen vastaus: harvemmin kuin luullaan.

    • AWS:ssä ajettavien työkuormien (EC2, Lambda, ECS, EKS) kuuluu käyttää IAM-rooleja. SDK hakee lyhytikäiset kirjautumistiedot automaattisesti, eikä ole avainta, jota pitäisi kierrättää tai joka voisi vuotaa.
    • Ihmisten kannattaa kirjautua IAM Identity Centerin tai federoidun kertakirjautumisen (SSO) kautta ja hakea väliaikaiset kirjautumistiedot komennolla aws sso login.
    • CI-järjestelmät, kuten GitHub Actions, voivat ottaa roolin käyttöön OIDC:n avulla ilman tallennettua avainta.
    • Pitkäaikaiset avaimet jäävät tapauksiin, joissa mikään edellisistä ei onnistu: kannettavalla ajettava työkalu, joka ei tue SSO:ta, kolmannen osapuolen palvelu, joka hyväksyy vain staattiset avaimet, tai vanha ajo, jota ei ole vielä siirretty.

    Jos avainta todella tarvitaan, luo se erilliselle IAM-käyttäjälle, jonka käytäntö on niin suppea kuin tehtävä sallii. Älä koskaan luo sitä ihmisen järjestelmänvalvojatilille.

    Avaimen luominen ja käyttöönotto

    Avaa IAM-konsolissa käyttäjä, valitse välilehti ”Security credentials” ja sitten ”Create access key”. Valitse käyttökohde, jota AWS kysyy, lue sen ehdottama vaihtoehto ja jatka. Salainen avain näytetään tasan kerran. Tallenna se suoraan salaisuusvarastoon tai salasanojen hallintaohjelmaan, tai lataa CSV-tiedosto ja poista se tuonnin jälkeen. Kullakin IAM-käyttäjällä voi olla enintään kaksi avainta kerrallaan, ja juuri se tekee kierrätyksen mahdolliseksi.

    Määritä koneelle nimetty profiili oletusprofiilin sijaan:

    aws configure --profile deploy-tool
    # AWS Access Key ID [None]: AKIA...
    # AWS Secret Access Key [None]: ...
    # Default region name [None]: eu-west-1
    

    Komento kirjoittaa tiedostot ~/.aws/credentials ja ~/.aws/config. Rajaa tiedosto omalle käyttäjällesi komennolla chmod 600. Kontteihin ja CI:hin syötä AWS_ACCESS_KEY_ID ja AWS_SECRET_ACCESS_KEY salaisuuksina alustan omasta salaisuusvarastosta, älä tavallisina muuttujina YAML-tiedostossa. Älä koskaan anna niitä komentorivillä, josta ne päätyvät komentohistoriaan.

    Kierrätys rikkomatta mitään

    Kierrätys etenee neljässä vaiheessa, ja sen tekee mahdolliseksi kahden avaimen raja.

    1. Luo toinen avain samalle käyttäjälle.
    2. Vaihda uusi avain käyttöön kaikkialla, missä vanhaa käytetään: asetuksissa, CI:n salaisuuksissa ja salaisuuksien hallinnan merkinnässä. IAM-konsoli näyttää kunkin avaimen viimeisimmän käyttöajan, josta näet, jäikö jokin kohta päivittämättä.
    3. Ota vanha avain pois käytöstä. Odota vuorokausi tai yhden julkaisukierroksen verran. Jos jokin hajoaa, ota avain takaisin käyttöön, korjaa sitä käyttävä kohta ja yritä uudelleen.
    4. Poista vanha avain, kun mikään ei ole enää käyttänyt sitä.

    Tee tämä aikataulun mukaan niille avaimille, joiden on pakko olla olemassa, ja tapahtumien perusteella kaikille: kun joku lähtee, toimittaja vaihtuu, kannettava katoaa tai vuotoa epäillään. AWS Config ja IAM Access Analyzer voivat merkitä avaimet, jotka ovat vanhempia kuin käytäntösi sallii.

    Kun avain on vuotanut

    Pidä vaarantuneena jokaista avainta, joka on näkynyt repositoriossa, lokissa, tiketissä tai keskustelussa, vaikka se olisi poistettu minuuttia myöhemmin. Skannerit löytävät repositorioon lähetetyt salaisuudet sekunneissa.

    1. Ota avain pois käytöstä IAM:ssä heti. Älä odota, että korvaava avain on luotu, ellei käyttökatko olisi pahempi kuin vuoto.
    2. Luo korvaava avain ja päivitä se kaikkiin kohtiin, jotka käyttivät vanhaa avainta.
    3. Lue CloudTrailista jokainen toiminto, joka on tehty tällä access key ID:llä vuodon jälkeen. Etsi uusia IAM-käyttäjiä tai -avaimia, uusia instansseja, muutettuja bucket-käytäntöjä ja tuntemattomia alueita.
    4. Tarkista lasku ja Cost Explorer: etsi kryptolouhinnalta näyttäviä piikkejä.
    5. Poista salaisuus koodista, lokeista ja git-historiasta. AWS voi itse liittää käyttäjään käytännön AWSCompromisedKeyQuarantine, kun se havaitsee julkisen vuodon. Jätä se paikalleen, kunnes siivous on tehty.
    6. Poista vanha avain, selvitä sitten, miten se päätyi sinne, ja tuki se reitti.

    Näin luovutat AWS:n salaisen avaimen ihmiselle

    Joskus avaimen on päädyttävä ihmiselle: alihankkijalle, joka tarvitsee sitä julkaisutyökalussa, kehittäjälle, joka liittyy projektiin ennen kuin SSO on valmis, tai toimittajan integraatioon, johon avain pitää liittää toimittajan hallintapaneelissa. Sähköposti, Slack ja tiketit säilyttävät kaikki kopion, ja 40 merkin salaisuus on missä tahansa niistä luettavissa vuosia.

    Turvallinen menettely vie minuutin:

    1. Luo henkilölle oma avain erilliselle IAM-käyttäjälle, jonka käytäntö kattaa hänen tehtävänsä eikä mitään muuta. Älä jaa avainta, jota jokin muu käyttää.
    2. Liitä vain secret access key kertakäyttöiseen salaiseen linkkiin. Se salataan selaimessasi ennen tallennusta, tallennettu kopio tuhotaan, kun linkki avataan ensimmäisen kerran, ja linkki vanhenee tunnin, vuorokauden tai viikon kuluttua, jos kukaan ei avaa sitä.
    3. Lähetä linkki yhden rivin saatteella. Lähetä access key ID, alue ja profiilin nimi erillisessä viestissä. Mikään niistä ei ole yksinään salainen.
    4. Lisää salalause Pro-tilillä, jos avaimella on muutakin kuin lukuoikeus, ja kerro salalause tekstiviestillä tai puhelimessa.
    5. Varmista, että hän avasi linkin. Jos linkki kertoo, että se on jo avattu, eikä hän avannut sitä, ota avain pois käytöstä ja aloita alusta.
    6. Ota avain pois käytöstä, kun toimeksianto päättyy, ja poista se sen jälkeen.

    API-avainopas kuvaa saman menettelyn muille palveluntarjoajille, ja linkkien turvallinen jakaminen kehittäjille näyttää, miten luovutuksen voi perehdytyksessä hoitaa skriptillä.

    Työkalut tähän artikkeliin

    Usein kysytyt kysymykset

    LinkPilot lähettää salaisen linkin, joka katoaa, kun se on avattu.

    Salataan selaimessasi, näytetään kerran ja tuhotaan sitten. Tiliä ei tarvita.

    Luo salainen linkki

    Lue seuraavaksi