Roller, tillfälliga autentiseringsuppgifter och SigV4

Använda AWS-säkerhet för utvecklare

Rahul Singh

Technical Product Manager

Nyckeln som överlever uppgiften

För att snabba upp arbetet skapas en nyckel i ett skript och lagras i en konfigurationsfil.

I filen är den:

  • Aldrig roterad
  • Aldrig återkallad
  • Aldrig utgången

En åtkomstnyckel som sprider sig till sex lagringsplatser, med en tidsaxel till höger som visar att den fortfarande är giltig vid månad arton

Använda AWS-säkerhet för utvecklare

Nyckeln som överlever uppgiften

För att snabba upp arbetet skapas en nyckel i ett skript och lagras i en konfigurationsfil.

I filen är den:

  • Aldrig roterad
  • Aldrig återkallad
  • Aldrig utgången

 

18 månader senare är den fortfarande giltig

En åtkomstnyckel som sprider sig till sex lagringsplatser, med en tidsaxel till höger som visar att den fortfarande är giltig vid månad arton

Använda AWS-säkerhet för utvecklare

Autentiseringsuppgifter som upphör av sig själva

Gör utgångsdatum till standard med AWS STS

  1. Begär en roll, få autentiseringsuppgifter med inbyggd klocka

  2. Security Token Service (STS): utgångsdatum inkluderat, en timme som standard

En applikation anropar AssumeRole hos AWS STS, och STS returnerar autentiseringsuppgifter med en inbyggd klocka.

Använda AWS-säkerhet för utvecklare

Autentiseringsuppgifter som upphör av sig själva

Gör utgångsdatum till standard med AWS STS

  1. Begär en roll, få autentiseringsuppgifter med inbyggd klocka

  2. Tillfälliga autentiseringsuppgifter börjar med ASIA och har en sessionstoken

  3. Security Token Service (STS): utgångsdatum inkluderat, en timme som standard

En applikation anropar AssumeRole hos AWS STS och tar emot autentiseringsuppgifter med en inbyggd klocka. Under den visas två autentiseringsuppgifter sida vid sida: en långlivad nyckel som börjar med AKIA utan sessionstoken och som aldrig löper ut, och tillfälliga autentiseringsuppgifter som börjar med ASIA med en sessionstoken och som löper ut efter en timme.

Använda AWS-säkerhet för utvecklare

Autentiseringsuppgifter som upphör av sig själva

Gör utgångsdatum till standard med AWS STS

  1. Begär en roll, få autentiseringsuppgifter med inbyggd klocka

  2. Tillfälliga autentiseringsuppgifter börjar med ASIA och har en sessionstoken

  3. Samma anrop godtas, sedan inte

  4. Security Token Service (STS): utgångsdatum inkluderat, en timme som standard

En applikation anropar AssumeRole hos AWS STS och tar emot autentiseringsuppgifter med en inbyggd klocka. Under den visas en långlivad nyckel som börjar med AKIA och aldrig löper ut bredvid tillfälliga autentiseringsuppgifter som börjar med ASIA, har en sessionstoken och löper ut efter en timme. Under det igen visas samma GetObject-anrop som returnerar 200 OK klockan tio och ExpiredToken fem över elva.

Använda AWS-säkerhet för utvecklare

Så hittar din kod dem

Kontroll av kedjan för autentiseringsleverantörer

  • AWS SDK, biblioteket i din kod, gör sökningen
  • En fast lista, kontrolleras i ordning
  • Stannar vid första träffen

Ordning för sökning av autentiseringsuppgifter: en nyckel som skickas in i koden är överstruken ovanför kedjan, och sökningen fortsätter sedan genom miljövariabler, konfigurationsfil och containerautentiseringsuppgifter, stannar vid första träffen och når aldrig instansmetadata

Använda AWS-säkerhet för utvecklare

Så hittar din kod dem

Kontroll av kedjan för autentiseringsleverantörer

  • AWS SDK, biblioteket i din kod, gör sökningen
  • En fast lista, kontrolleras i ordning
  • Stannar vid första träffen

 

Hårdkodade nycklar kontrolleras först och måste därför tas bort

Ordning för sökning av autentiseringsuppgifter: en nyckel som skickas in i koden är överstruken ovanför kedjan, och sökningen fortsätter sedan genom miljövariabler, konfigurationsfil och containerautentiseringsuppgifter, stannar vid första träffen och når aldrig instansmetadata

Använda AWS-säkerhet för utvecklare

Kedjan, länk för länk

1. explicit      a key passed in your code
2. environment   AWS_* variables, and on Lambda
                 that is the execution role
3. config file   ~/.aws/credentials
4. container     ECS or EKS task role
5. instance      EC2 instance profile, via IMDS
  • Första träffen vinner
  • Ta bort den lagrade nyckeln, sökningen fortsätter till rollen
Använda AWS-säkerhet för utvecklare

Styrk identitet utanför AWS

CI/CD-pipelines körs ofta utanför AWS, så autentiseringskedjan kan inte kopplas in

  • Körs på GitHub eller GitLab
  • Inget för kedjan att hitta

En CI-körare och dess plattform ritade utanför AWS-gränsen, körarmarkerad som utan roll att koppla in, och plattformen som signerar en OIDC-token som namnger ett repository och ett arbetsflöde

Använda AWS-säkerhet för utvecklare

Styrk identitet utanför AWS

CI/CD-pipelines körs ofta utanför AWS, så autentiseringskedjan kan inte kopplas in

  • Körs på GitHub eller GitLab
  • Inget för kedjan att hitta

 

OIDC-token (OpenID Connect)

  • Signerad och kortlivad
  • Ett identitetsuttalande, inte en autentiseringsuppgift

En CI-körare och dess plattform ritade utanför AWS-gränsen, körarmarkerad som utan roll att koppla in, och plattformen som signerar en OIDC-token som namnger ett repository och ett arbetsflöde

Använda AWS-säkerhet för utvecklare

En regel istället för en lagrad nyckel

En OIDC-token som namnger ett repository, utbytt via AssumeRoleWithWebIdentity mot tillfälliga autentiseringsuppgifter som löper ut efter en timme, eftersom rollens tillitspolicy redan namnger den utfärdaren och det repositoryt

Byter token mot autentiseringsuppgifter

Använda AWS-säkerhet för utvecklare

En regel istället för en lagrad nyckel

En OIDC-token som namnger ett repository, utbytt via AssumeRoleWithWebIdentity mot tillfälliga autentiseringsuppgifter som löper ut efter en timme, eftersom rollens tillitspolicy redan namnger den utfärdaren och det repositoryt

Byter token mot autentiseringsuppgifter

  • AssumeRoleWithWebIdentity: AssumeRole, med en extern token som bevis
  • Tillitspolicy: skriven på rollen i förväg, inte lagrad i pipelinen
  • Claim: ett faktum inuti token
  • Utfärdaren delas av alla repositories på plattformen, så pinna även repositoryt

Repository-hemligheter: nu tomma

Använda AWS-säkerhet för utvecklare

Varje anrop signeras

Signature Version 4, eller SigV4

  • Bevisar vilken autentiseringsuppgift som gjorde anropet
  • Bevisar att anropet inte ändrades under överföringen
  • Signeras av CLI och SDK vid varje anrop

Signeringsflöde där ett anrop och dina autentiseringsuppgifter skapar en signatur som skickas i Authorization-headern, vilken AWS räknar om och jämför, accepterar vid matchning och returnerar SignatureDoesNotMatch vid avvikelse

Använda AWS-säkerhet för utvecklare

En signatur du kan lämna över

Tillfälliga autentiseringsuppgifter

  • Många åtgärder, avgränsade av rollen
  • Innehas av din kod

Din kod anropar fyra olika AWS-tjänster, S3, DynamoDB, SQS och KMS, med tillfälliga autentiseringsuppgifter

Använda AWS-säkerhet för utvecklare

En signatur du kan lämna över

Tillfälliga autentiseringsuppgifter

  • Många åtgärder, avgränsade av rollen
  • Innehas av din kod

Försignerad URL

  • Ett objekt, en åtgärd, och vem som helst med länken
  • Ett utgångsdatum du väljer, sedan inget mer
  • Bär dina behörigheter, inte innehavarens

Din kod anropar fyra olika AWS-tjänster, S3, DynamoDB, SQS och KMS, med tillfälliga autentiseringsuppgifter

Någon annans webbläsare når exakt ett objekt via en enda sökväg, avbruten av en klocka märkt med det utgångsdatum du angett

Använda AWS-säkerhet för utvecklare

Nu kör vi en övning!

Använda AWS-säkerhet för utvecklare

Preparing Video For Download...