Bezpečnost

    AWS access key a secret key: jak je vytvořit, používat, rotovat a bezpečně sdílet

    Co jsou přístupové klíče AWS (ID a tajný klíč), proč se tajný klíč zobrazí jen jednou, jak je rotovat, co dělat po úniku a jak klíč bezpečně předat.

    LinkPilot Team · Lidé, kteří vyvíjejí a provozují LinkPilot ve společnosti TetraCore, LLC · O LinkPilotu

    Přístupový klíč AWS tvoří dva řetězce, které programu společně umožní jednat jménem uživatele IAM: ID přístupového klíče, které klíč identifikuje, a tajný přístupový klíč, který ho prokazuje. Lidé je hledají pod třemi názvy („access key a secret key“, „secret access key“ a prostě „AWS secret key“) a ve všech případech jde o stejnou dvojici. Objevuje se v konfiguracích CLI, v pipelinech CI a až příliš často ve zprávě ve Slacku.

    Tento návod vysvětluje, co obě poloviny jsou, jak je vytvořit a nastavit, jak je rotovat bez výpadku a co dělat, když jedna unikne. Odpovídá i na otázku, která se vrací pokaždé, když do týmu přijde vývojář nebo začne pracovat externista: jak tajný klíč předat člověku, aniž by skončil v e-mailu.

    ID přístupového klíče a tajný přístupový klíč

    ID přístupového klíčeTajný přístupový klíč
    Jak vypadáAKIAIOSFODNN7EXAMPLE (20 znaků)40 znaků, malá a velká písmena a symboly
    ÚlohaUrčuje, který klíč požadavek podepisujePodepisuje požadavek, prokazuje vlastnictví
    Tajné?Ne, zacházejte s ním jako s uživatelským jménemAno, zacházejte s ním jako s heslem
    Viditelné později?Ano, v konzoli IAMPo vytvoření už nikdy

    Dlouhodobé klíče začínají na AKIA. Dočasné přihlašovací údaje ze STS, ke kterým patří i token relace, začínají na ASIA a jejich platnost vyprší sama. Pokud v konfiguračním souboru uvidíte klíč ASIA, během několika hodin přestane fungovat, a tak to má být.

    Žádná z polovin sama neuděluje oprávnění. Klíč se ověřuje jako uživatel IAM a o tom, co tato identita smí, rozhodují zásady připojené k uživateli. Uniklý klíč uživatele jen pro čtení je problém. Uniklý klíč administrátora je bezpečnostní incident.

    Kdy dlouhodobý klíč vůbec potřebujete

    Upřímně řečeno: méně často, než si lidé myslí.

    • Úlohy běžící v AWS (EC2, Lambda, ECS, EKS) mají používat role IAM. SDK si krátkodobé přihlašovací údaje načte samo a není co rotovat ani co by mohlo uniknout.
    • Lidé se mají přihlašovat přes IAM Identity Center nebo federované SSO a dočasné přihlašovací údaje získat příkazem aws sso login.
    • Systémy CI, jako je GitHub Actions, mohou převzít roli přes OIDC bez uloženého klíče.
    • Dlouhodobé klíče zůstávají pro případy, kdy nic z toho nejde: nástroj na notebooku bez podpory SSO, služba třetí strany, která přijímá jen statické klíče, starší úloha, kterou jste ještě nepřevedli.

    Pokud klíč opravdu potřebujete, vytvořte ho u vyhrazeného uživatele IAM s co nejužší zásadou, která na tu práci stačí, a nikdy ne u administrátorského účtu konkrétního člověka.

    Vytvoření a nastavení klíče

    V konzoli IAM otevřete uživatele, zvolte „Security credentials“ a pak „Create access key“. Vyberte případ použití, na který se AWS ptá, přečtěte si alternativu, kterou navrhne, a pokračujte. Tajný klíč se zobrazí přesně jednou. Uložte ho rovnou do úložiště důvěrných údajů nebo do správce hesel, případně stáhněte soubor CSV a po importu ho smažte. Každý uživatel IAM může mít najednou nejvýš dva klíče, a právě díky tomu je rotace možná.

    Na počítači nastavte pojmenovaný profil místo výchozího:

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

    Tím se zapíšou soubory ~/.aws/credentials a ~/.aws/config. Příkazem chmod 600 soubor omezte jen na svého uživatele. Do kontejnerů a CI předávejte AWS_ACCESS_KEY_ID a AWS_SECRET_ACCESS_KEY jako důvěrné údaje (secrets) z úložiště platformy, ne jako obyčejné proměnné v souboru YAML. Nikdy je nezadávejte na příkazovém řádku, kde skončí v historii shellu.

    Rotace, která nic nerozbije

    Rotace má čtyři kroky a umožňuje ji právě limit dvou klíčů.

    1. Vytvořte druhý klíč u stejného uživatele.
    2. Převeďte všechny, kdo klíč používají, na nový klíč: konfigurace, důvěrné údaje v CI, záznam ve správci důvěrných údajů. Konzole IAM u každého klíče ukazuje, kdy byl naposledy použit, takže poznáte, jestli jste na nějaké místo nezapomněli.
    3. Deaktivujte starý klíč. Počkejte den nebo jeden cyklus nasazení. Pokud se něco rozbije, klíč znovu aktivujte, opravte místo, které ho používalo, a zkuste to znovu.
    4. Smažte starý klíč, jakmile ho už nic nepoužívá.

    U klíčů, které existovat musí, to dělejte podle plánu a u všech klíčů také mimořádně: při odchodu člověka, změně dodavatele, ztrátě notebooku nebo podezření na únik. AWS Config a IAM Access Analyzer umí označit klíče starší, než povolují vaše pravidla.

    Když klíč unikne

    Klíč, který se objevil v repozitáři, logu, tiketu nebo chatu, považujte za kompromitovaný, i když byl o minutu později smazán. Skenery najdou důvěrné údaje nahrané do repozitáře během několika sekund.

    1. Deaktivujte klíč v IAM hned. Nečekejte, až nejdřív vytvoříte náhradu, ledaže by výpadek byl horší než samotný únik.
    2. Vytvořte náhradní klíč a převeďte na něj vše, co klíč používalo.
    3. Projděte CloudTrail a najděte každou akci provedenou s tímto ID přístupového klíče od okamžiku úniku. Hledejte nové uživatele IAM nebo klíče, nové instance, změněné zásady bucketů a neznámé regiony.
    4. Zkontrolujte vyúčtování a Cost Explorer, jestli v nich nejsou skoky, jaké způsobuje těžba kryptoměn.
    5. Odstraňte tajný klíč z kódu, logů a historie gitu. Když AWS zjistí veřejný únik, může k uživateli samo připojit zásadu AWSCompromisedKeyQuarantine. Nechte ji na místě, dokud úklid neskončí.
    6. Smažte starý klíč, pak zjistěte, jak se tam dostal, a tuto cestu uzavřete.

    Jak předat tajný klíč AWS člověku

    Někdy se klíč musí dostat k člověku: k externistovi, který ho potřebuje pro nástroj na nasazování, k vývojáři, který se připojí k projektu dřív, než je nastavené SSO, nebo k dodavateli, který ho kvůli integraci chce vložit do svého řídicího panelu. E-mail, Slack i tikety uchovávají kopie a 40znakový tajný klíč v kterémkoli z nich zůstane čitelný celé roky.

    Bezpečný postup zabere minutu:

    1. Vytvořte pro toho člověka vlastní klíč u vyhrazeného uživatele IAM se zásadou, kterou jeho úkol potřebuje, a s ničím navíc. Nesdílejte klíč, který používá cokoli dalšího.
    2. Vložte jen tajný přístupový klíč do jednorázového tajného odkazu. Ještě před uložením se zašifruje ve vašem prohlížeči, uložená kopie se při prvním otevření odkazu zničí, a pokud odkaz nikdo neotevře, jeho platnost vyprší po hodině, dni nebo týdnu.
    3. Pošlete odkaz s jednou větou vysvětlení. ID přístupového klíče, region a název profilu pošlete zvlášť. Nic z toho samo o sobě tajné není.
    4. Přidejte heslovou frázi v tarifu Pro u všeho, co má víc než oprávnění jen pro čtení, a předejte ji SMS nebo po telefonu.
    5. Ověřte si, že odkaz otevřel příjemce. Pokud odkaz hlásí, že už byl zobrazen, ale příjemce ho neotevřel, deaktivujte klíč a začněte znovu.
    6. Deaktivujte klíč, až spolupráce skončí, a potom ho smažte.

    Návod ke klíčům API popisuje stejný postup pro další poskytovatele a článek bezpečné sdílení odkazů pro vývojáře ukazuje, jak předání při nástupu do týmu skriptovat.

    Nástroje k tomuto článku

    Časté dotazy

    LinkPilot pošle tajný odkaz, který po otevření zmizí.

    Zašifruje se ve vašem prohlížeči, zobrazí se jednou a pak se zničí. Bez účtu.

    Vytvořit tajný odkaz

    Čtěte dál