Ruoli, credenziali temporanee e SigV4

Uso di AWS Security per sviluppatori

Rahul Singh

Technical Product Manager

La chiave che sopravvive al task

Per velocizzare il lavoro, una chiave viene creata in uno script e salvata in un file di configurazione.

Nel file è:

  • Mai ruotata
  • Mai revocata
  • Mai scaduta

Un'unica access key che si diffonde in sei posizioni di archiviazione; sulla destra un asse temporale che la mostra ancora valida al mese diciotto

Uso di AWS Security per sviluppatori

La chiave che sopravvive al task

Per velocizzare il lavoro, una chiave viene creata in uno script e salvata in un file di configurazione.

Nel file è:

  • Mai ruotata
  • Mai revocata
  • Mai scaduta

 

Dopo 18 mesi è ancora valida

Un'unica access key che si diffonde in sei posizioni di archiviazione; sulla destra un asse temporale che la mostra ancora valida al mese diciotto

Uso di AWS Security per sviluppatori

Credenziali che scadono da sole

Rendi la scadenza predefinita con AWS STS

  1. Richiedi un ruolo, ottieni credenziali con un timer integrato

  2. Security Token Service (STS): scadenza inclusa, un'ora per impostazione predefinita

Un'applicazione chiama AssumeRole su AWS STS e STS restituisce credenziali con un timer integrato.

Uso di AWS Security per sviluppatori

Credenziali che scadono da sole

Rendi la scadenza predefinita con AWS STS

  1. Richiedi un ruolo, ottieni credenziali con un timer integrato

  2. Le credenziali temporanee iniziano con ASIA e includono un session token

  3. Security Token Service (STS): scadenza inclusa, un'ora per impostazione predefinita

Un'applicazione chiama AssumeRole su AWS STS e riceve credenziali con un timer integrato. Sotto, due credenziali affiancate: una chiave di lunga durata che inizia con AKIA senza session token e senza scadenza, e credenziali temporanee che iniziano con ASIA con session token e scadenza a un'ora.

Uso di AWS Security per sviluppatori

Credenziali che scadono da sole

Rendi la scadenza predefinita con AWS STS

  1. Richiedi un ruolo, ottieni credenziali con un timer integrato

  2. Le credenziali temporanee iniziano con ASIA e includono un session token

  3. La stessa chiamata è accettata, poi non più

  4. Security Token Service (STS): scadenza inclusa, un'ora per impostazione predefinita

Un'applicazione chiama AssumeRole su AWS STS e riceve credenziali con un timer integrato. Sotto, una chiave di lunga durata che inizia con AKIA senza scadenza accanto a credenziali temporanee che iniziano con ASIA con session token e scadenza a un'ora. Più sotto, la stessa chiamata GetObject che restituisce 200 OK alle dieci e ExpiredToken alle undici e cinque.

Uso di AWS Security per sviluppatori

Come il tuo codice le trova

Verifica della credential provider chain

  • L'AWS SDK, la libreria nel tuo codice, effettua la ricerca
  • Un elenco fisso, controllato in ordine
  • Si ferma alla prima corrispondenza

Ordine di ricerca delle credenziali: una chiave passata nel codice è barrata sopra la catena; la ricerca scorre poi variabili d'ambiente, file di config e credenziali del container, fermandosi alla prima corrispondenza e senza raggiungere i metadati dell'istanza

Uso di AWS Security per sviluppatori

Come il tuo codice le trova

Verifica della credential provider chain

  • L'AWS SDK, la libreria nel tuo codice, effettua la ricerca
  • Un elenco fisso, controllato in ordine
  • Si ferma alla prima corrispondenza

 

Le chiavi hard-coded sono verificate per prime, quindi vanno eliminate

Ordine di ricerca delle credenziali: una chiave passata nel codice è barrata sopra la catena; la ricerca scorre poi variabili d'ambiente, file di config e credenziali del container, fermandosi alla prima corrispondenza e senza raggiungere i metadati dell'istanza

Uso di AWS Security per sviluppatori

La catena, anello per anello

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
  • Vince la prima corrispondenza
  • Elimina la chiave salvata, la ricerca prosegue fino al ruolo
Uso di AWS Security per sviluppatori

Dimostrare l'identità da fuori AWS

Le pipeline di codice spesso girano fuori da AWS, quindi la catena delle credenziali non si può collegare

  • Eseguite su GitHub o GitLab
  • Niente che la catena possa trovare

Un runner CI e la sua piattaforma disegnati fuori dal perimetro AWS; il runner senza ruolo da collegare e la piattaforma che firma un token OIDC che indica un repository e un workflow

Uso di AWS Security per sviluppatori

Dimostrare l'identità da fuori AWS

Le pipeline di codice spesso girano fuori da AWS, quindi la catena delle credenziali non si può collegare

  • Eseguite su GitHub o GitLab
  • Niente che la catena possa trovare

 

Token OIDC (OpenID Connect)

  • Firmato e di breve durata
  • Affermazione d'identità, non una credenziale

Un runner CI e la sua piattaforma disegnati fuori dal perimetro AWS; il runner senza ruolo da collegare e la piattaforma che firma un token OIDC che indica un repository e un workflow

Uso di AWS Security per sviluppatori

Una regola al posto di una chiave salvata

Un token OIDC che indica un repository, scambiato tramite AssumeRoleWithWebIdentity per credenziali temporanee che scadono in un'ora, perché la trust policy del ruolo cita già quell'issuer e quel repository

Scambiare il token con credenziali

Uso di AWS Security per sviluppatori

Una regola al posto di una chiave salvata

Un token OIDC che indica un repository, scambiato tramite AssumeRoleWithWebIdentity per credenziali temporanee che scadono in un'ora, perché la trust policy del ruolo cita già quell'issuer e quel repository

Scambiare il token con credenziali

  • AssumeRoleWithWebIdentity: AssumeRole, con un token esterno come prova
  • Trust policy: scritta sul ruolo in anticipo, non salvata nella pipeline
  • Claim: un fatto dentro il token
  • L'issuer è condiviso da tutti i repository della piattaforma, quindi vincola anche il repository

Repository secrets: ora vuoti

Uso di AWS Security per sviluppatori

Ogni richiesta è firmata

Signature Version 4, o SigV4

  • Dimostra quale credenziale ha fatto la richiesta
  • Dimostra che la richiesta non è stata alterata in transito
  • Firmata dalla CLI e dall'SDK a ogni chiamata

Flusso di firma in cui una richiesta e le tue credenziali producono una firma inviata nell'header Authorization; AWS la ricalcola e confronta, accetta se coincide e restituisce SignatureDoesNotMatch se non coincide

Uso di AWS Security per sviluppatori

Una firma che puoi passare ad altri

Credenziali temporanee

  • Molte azioni, delimitate dal ruolo
  • Tenute dal tuo codice

Il tuo codice che chiama quattro servizi AWS, S3, DynamoDB, SQS e KMS, con credenziali temporanee

Uso di AWS Security per sviluppatori

Una firma che puoi passare ad altri

Credenziali temporanee

  • Molte azioni, delimitate dal ruolo
  • Tenute dal tuo codice

URL prefirmato

  • Un oggetto, una azione, e chiunque abbia il link
  • Scadenza a tua scelta, poi nulla
  • Porta i tuoi permessi, non quelli di chi lo usa

Il tuo codice che chiama quattro servizi AWS, S3, DynamoDB, SQS e KMS, con credenziali temporanee

Il browser di qualcun altro che raggiunge esattamente un oggetto tramite un solo percorso, interrotto da un orologio etichettato con la scadenza impostata da te

Uso di AWS Security per sviluppatori

Esercitiamoci!

Uso di AWS Security per sviluppatori

Preparing Video For Download...