APIAccesso sicuro con MFA - AWS Identity and Access Management

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

APIAccesso sicuro con MFA

Con IAM le policy, puoi specificare API le operazioni che un utente può chiamare. È possibile applicare una sicurezza aggiuntiva richiedendo agli utenti di autenticarsi con l'autenticazione a più fattori (MFA) prima di consentire loro di eseguire azioni particolarmente sensibili.

Ad esempio, potresti avere una politica che consenta a un utente di eseguire StopInstances azioni Amazon EC2 RunInstances e. DescribeInstances Ma potresti voler limitare un'azione distruttiva come TerminateInstances e assicurarti che gli utenti possano eseguire quell'azione solo se si autenticano con un dispositivo. AWS MFA

Panoramica

L'aggiunta di MFA protezione alle API operazioni comporta le seguenti attività:

  1. L'amministratore configura un AWS MFA dispositivo per ogni utente che deve effettuare API richieste che richiedono MFA l'autenticazione. Per ulteriori informazioni, consulta AWS Autenticazione a più fattori in IAM.

  2. L'amministratore crea politiche per gli utenti che includono un Condition elemento che verifica se l'utente si è autenticato con un AWS MFA dispositivo.

  3. L'utente chiama una delle AWS STS API operazioni che supportano i MFA parametri: AssumeRoleo GetSessionToken. Durante la chiamata, l'utente include l'ID dispositivo per il dispositivo associato all'utente. L'utente include anche la password monouso basata sull'ora (TOTP) generata dal dispositivo. In entrambi i casi, l'utente ottiene le credenziali di sicurezza temporanee che può quindi usare per effettuare richieste aggiuntive in AWS.

    Nota

    MFAla protezione per API le operazioni di un servizio è disponibile solo se il servizio supporta credenziali di sicurezza temporanee. Per un elenco di questi servizi, consulta Utilizzo di credenziali di sicurezza temporanee per accedere ad AWS.

Se l'autorizzazione AWS fallisce, restituisce un messaggio di errore di accesso negato (come accade per qualsiasi accesso non autorizzato). Con API le politiche MFA -protected, AWS nega l'accesso alle API operazioni specificate nelle politiche se l'utente tenta di richiamare un'APIoperazione senza un'autenticazione valida. MFA L'operazione viene inoltre negata se il timestamp della richiesta per l'APIoperazione non rientra nell'intervallo consentito specificato nella politica. L'utente deve essere nuovamente autenticato MFA richiedendo nuove credenziali di sicurezza temporanee con un MFA codice e un numero di serie del dispositivo.

IAMpolitiche con condizioni MFA

Le politiche con MFA condizioni possono essere allegate a quanto segue:

  • Un utente o un gruppo IAM

  • Una risorsa come un bucket Amazon S3, una SQS coda Amazon o un argomento Amazon SNS

  • La politica di fiducia di un IAM ruolo che può essere assunto da un utente

È possibile utilizzare una MFA condizione in una politica per verificare le seguenti proprietà:

  • Esistenza: per verificare semplicemente che l'utente si sia autenticato conMFA, verifica che la aws:MultiFactorAuthPresent chiave sia True in una condizione. Bool La chiave è presente solo quando l'utente esegue l'autenticazione con credenziali a breve termine. Le credenziali a lungo termine, ad esempio le chiavi di accesso, non includono questa chiave.

  • Durata: se desideri concedere l'accesso solo entro un periodo di tempo specificato dopo MFA l'autenticazione, utilizza un tipo di condizione numerica per confrontare l'età della aws:MultiFactorAuthAge chiave con un valore (ad esempio 3600 secondi). Si noti che la aws:MultiFactorAuthAge chiave non è presente se non è stata utilizzata. MFA

L'esempio seguente mostra la politica di fiducia di un IAM ruolo che include una MFA condizione per verificare l'esistenza dell'MFAautenticazione. Con questa politica, gli utenti Account AWS specificati nell'Principalelemento (sostituendo ACCOUNT-B-ID con un Account AWS ID valido) possono assumere il ruolo a cui è associata questa politica. Tuttavia, tali utenti possono assumere il ruolo solo se l'utente è autenticato tramiteMFA.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "ACCOUNT-B-ID"}, "Action": "sts:AssumeRole", "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} } }

Per ulteriori informazioni sui tipi di condizioni perMFA, vedere AWS chiavi di contesto della condizione globaleOperatori di condizione numerici, eOperatore di condizione per verificare la presenza di chiavi di condizione .

Scelta tra GetSessionToken e AssumeRole

AWS STS fornisce due API operazioni che consentono agli utenti di trasmettere MFA informazioni: GetSessionToken eAssumeRole. L'APIoperazione che l'utente chiama per ottenere credenziali di sicurezza temporanee dipende da quale dei seguenti scenari si applica.

Usa GetSessionToken per gli scenari seguenti:

  • APILe operazioni di chiamata che accedono alle risorse sono le Account AWS stesse dell'IAMutente che effettua la richiesta. Tieni presente che le credenziali temporanee di una GetSessionToken richiesta possono accedere IAM AWS STS API e funzionare solo se includi MFA informazioni nella richiesta di credenziali. Poiché le credenziali temporanee restituite da GetSessionToken includono MFA informazioni, è possibile verificare le MFA singole API operazioni eseguite con le credenziali.

  • Accesso a risorse protette con politiche basate sulle risorse che includono una condizione. MFA

Lo scopo dell'GetSessionTokenoperazione è autenticare l'utente utilizzando. MFA Non è possibile utilizzare le policy per controllare le operazioni di autenticazione.

Usa AssumeRole per gli scenari seguenti:

  • Chiama API le operazioni che accedono alle risorse nello stesso modo o in un altro Account AWS. Le API chiamate possono includere qualsiasi IAM o AWS STS API. Si noti che per proteggere l'accesso si applica nel MFA momento in cui l'utente assume il ruolo. Le credenziali temporanee restituite da AssumeRole non includono MFA informazioni nel contesto, quindi non è possibile verificare le singole API operazioni. MFA Per questo motivo, è necessario usare GetSessionToken per limitare l'accesso alle risorse protette da policy basate su risorse.

Le informazioni su come implementare questi scenari vengono fornite più avanti in questo documento.

Punti importanti sull'accesso MFA protetto API

È importante comprendere i seguenti aspetti della MFA protezione delle API operazioni:

  • MFAla protezione è disponibile solo con credenziali di sicurezza temporanee, che devono essere ottenute con AssumeRole oGetSessionToken.

  • Non è possibile utilizzare MFA -protected API access con Utente root dell'account AWS credenziali.

  • Non è possibile utilizzare MFA -protected API access con le chiavi di sicurezza U2F.

  • Agli utenti federati non può essere assegnato un MFA dispositivo da utilizzare con AWS i servizi, quindi non possono accedere alle AWS risorse controllate da. MFA Vedi il punto successivo.

  • Altre AWS STS API operazioni che restituiscono credenziali temporanee non sono supportate. MFA Per AssumeRoleWithWebIdentity eAssumeRoleWithSAML, l'utente è autenticato da un provider esterno e AWS non è in grado di determinare se tale provider lo richieda. MFA PerchéGetFederationToken, non MFA è necessariamente associato a un utente specifico.

  • Allo stesso modo, le credenziali a lungo termine (IAMchiavi di accesso utente e chiavi di accesso utente root) non possono essere utilizzate con MFA -protected API access perché non hanno scadenza.

  • AssumeRolee GetSessionToken possono essere richiamate anche senza informazioni. MFA In tal caso, il chiamante recupera le credenziali di sicurezza temporanee, ma le informazioni sulla sessione relative a tali credenziali temporanee non indicano che l'utente si sia autenticato con. MFA

  • Per stabilire la MFA protezione API delle operazioni, si aggiungono MFA condizioni alle politiche. Una politica deve includere la chiave di aws:MultiFactorAuthPresent condizione per imporre l'uso diMFA. Per la delega tra più account, la policy di attendibilità del ruolo deve includere la chiave di condizione.

  • Quando consenti Account AWS a un altro di accedere alle risorse del tuo account, la sicurezza delle tue risorse dipende dalla configurazione dell'account fidato (l'altro account, non il tuo). Questo vale anche quando è richiesta la multi-factor authentication. Qualsiasi identità dell'account affidabile che disponga dell'autorizzazione a creare MFA dispositivi virtuali può MFA affermare di soddisfare quella parte della politica di fiducia del ruolo. Prima di consentire ai membri di un altro account di accedere alle tue AWS risorse che richiedono l'autenticazione a più fattori, devi assicurarti che il proprietario dell'account affidabile segua le migliori pratiche di sicurezza. Ad esempio, l'account affidabile dovrebbe limitare l'accesso a API operazioni sensibili, come le operazioni di MFA gestione dei dispositivi, a API identità specifiche e affidabili.

  • Se una policy include una MFA condizione, una richiesta viene rifiutata se gli utenti non sono stati MFA autenticati o se forniscono un identificatore del dispositivo non valido o non validoMFA. TOTP

Scenario: MFA protezione per la delega tra account

In questo scenario, si desidera delegare l'accesso agli IAM utenti di un altro account, ma solo se gli utenti sono autenticati con un dispositivo. AWS MFA Per ulteriori informazioni sulla delega tra più account, consulta Termini e concetti dei ruoli.

Immagina di avere l'account A (l'account affidabile che possiede la risorsa a cui accedere), con l'IAMutente Anaya, che dispone dell'autorizzazione di amministratore. Vuole concedere l'accesso all'utente Richard nell'account B (l'account fidato), ma vuole assicurarsi che Richard sia autenticato MFA prima che lui assuma il ruolo.

  1. Nell'account di fiducia A, Anaya crea un IAM ruolo denominato CrossAccountRole e imposta come principale nella politica di fiducia del ruolo l'ID dell'account B. La politica di fiducia concede l'autorizzazione all'azione. AWS STS AssumeRole Anaya aggiunge anche una MFA condizione alla politica di fiducia, come nell'esempio seguente.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "ACCOUNT-B-ID"}, "Action": "sts:AssumeRole", "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} } }
  2. Anaya aggiunge una policy di autorizzazione al ruolo che specifica le attività consentite per il ruolo. La politica di autorizzazione per un ruolo con MFA protezione non è diversa da qualsiasi altra politica di autorizzazione dei ruoli. L'esempio seguente mostra la policy aggiunta al ruolo da Anaya, che consente a un utente ipotetico di eseguire qualsiasi operazione Amazon DynamoDB sulla tabella Books nell'account A. Questa policy consente anche l'operazione dynamodb:ListTables, necessaria per eseguire operazioni nella console.

    Nota

    La politica sulle autorizzazioni non include alcuna condizione. MFA È importante comprendere che l'MFAautenticazione viene utilizzata solo per determinare se un utente può assumere il ruolo. Una volta che l'utente ha assunto il ruolo, non vengono MFA effettuati ulteriori controlli.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "TableActions", "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:*:ACCOUNT-A-ID:table/Books" }, { "Sid": "ListTables", "Effect": "Allow", "Action": "dynamodb:ListTables", "Resource": "*" } ] }
  3. Nell'account attendibile B, l'amministratore si assicura che IAM l'utente Richard sia configurato con un AWS MFA dispositivo e che conosca l'ID del dispositivo. L'ID del dispositivo è il numero di serie se si tratta di un MFA dispositivo hardware o il numero del dispositivo ARN se si tratta di un MFA dispositivo virtuale.

  4. Nell'account B, l'amministratore collega all'utente Richard (o un gruppo di cui è membro) la policy seguente, che gli permette di chiamare l'operazione AssumeRole. La risorsa è impostata sul ARN ruolo creato da Anaya nel passaggio 1. Nota che questa politica non contiene alcuna MFA condizione.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": ["arn:aws:iam::ACCOUNT-A-ID:role/CrossAccountRole"] }] }
  5. Nell'account B, Richard (o un'applicazione che Richard sta eseguendo) chiama AssumeRole. La API chiamata include il ARN ruolo da assumere (arn:aws:iam::ACCOUNT-A-ID:role/CrossAccountRole), l'ID del MFA dispositivo e la corrente TOTP che Richard riceve dal suo dispositivo.

    Quando Richard chiamaAssumeRole, AWS determina se dispone di credenziali valide, incluso il requisito perMFA. In caso affermativo, Richard assume correttamente il ruolo e può eseguire qualsiasi operazione DynamoDB sulla tabella denominata Books nell'account A usando le credenziali temporanee del ruolo.

    Per un esempio di programma che chiama AssumeRole, consulta Chiamata con autenticazione AssumeRole MFA.

Scenario: MFA protezione per l'accesso alle API operazioni nell'account corrente

In questo scenario, dovreste assicurarvi che un vostro utente Account AWS possa accedere alle API operazioni riservate solo quando l'utente è autenticato tramite un AWS MFA dispositivo.

Immagina di avere un account A contenente un gruppo di sviluppatori che devono lavorare con le EC2 istanze. In genere, gli sviluppatori possono usare le istanze, ma non hanno le autorizzazioni per le operazioni ec2:StopInstances e ec2:TerminateInstances. Desideri limitare queste azioni privilegiate «distruttive» a pochi utenti fidati, quindi aggiungi MFA protezione alla politica che consente queste azioni sensibili di Amazon. EC2

In questo scenario, uno degli utenti attendibili è Sofía. L'utente Anaya è un amministratore nell'account A.

  1. Anaya si assicura che Sofía sia configurata con un AWS MFA dispositivo e che Sofía conosca l'ID del dispositivo. L'ID del dispositivo è il numero di serie se si tratta di un MFA dispositivo hardware o il numero del dispositivo ARN se è un dispositivo virtuale. MFA

  2. Anaya crea un gruppo denominato EC2-Admins e aggiunge l'utente Sofía al gruppo.

  3. Anaya collega la policy seguente al gruppo EC2-Admins. Questa politica concede agli utenti l'autorizzazione a chiamare Amazon EC2 StopInstances e ad TerminateInstances agire solo se l'utente si è autenticato tramite. MFA

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:StopInstances", "ec2:TerminateInstances" ], "Resource": ["*"], "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} }] }
  4. Nota

    Per rendere effettiva questa policy, gli utenti devono prima disconnettersi e quindi accedere nuovamente.

    Se l'utente Sofía deve interrompere o terminare un'EC2istanza Amazon, lei (o un'applicazione che sta eseguendo) chiama. GetSessionToken Questa API operazione trasmette l'ID del MFA dispositivo e la corrente TOTP che Sofía riceve dal suo dispositivo.

  5. L'utente Sofía (o un'applicazione utilizzata da Sofía) utilizza le credenziali temporanee fornite da GetSessionToken per chiamare Amazon EC2 StopInstances or action. TerminateInstances

    Per un esempio di programma che chiama GetSessionToken, consulta Chiamata GetSessionToken con MFA autenticazione più avanti in questo documento.

Scenario: MFA protezione delle risorse con politiche basate sulle risorse

In questo scenario, sei il proprietario di un bucket S3, di una SQS coda o di un argomento. SNS Vuoi assicurarti che tutti gli utenti Account AWS che accedono alla risorsa siano autenticati da un dispositivo. AWS MFA

Questo scenario illustra un modo per fornire una MFA protezione su più account senza richiedere agli utenti di assumere prima un ruolo. In questo caso, l'utente può accedere alla risorsa se vengono soddisfatte tre condizioni: l'utente deve essere autenticato daMFA, essere in grado di ottenere credenziali di sicurezza temporanee da GetSessionToken e avere un account considerato attendibile dalla politica della risorsa.

Immagina di avere l'account A e di creare un bucket S3. Vuoi concedere l'accesso a questo bucket agli utenti che si trovano in diversi paesi Account AWS, ma solo se tali utenti sono autenticati con. MFA

In questo scenario, l'utente Anaya è un amministratore dell'account A. L'utente Nikhil è un utente dell'account C. IAM

  1. Nell'account A, Anaya crea un bucket denominato Account-A-bucket.

  2. Anaya aggiunge la policy del bucket al bucket. La policy permette a qualsiasi utente in un account A, un account B o un account C di eseguire le operazioni PutObject e DeleteObject di Amazon S3 nel bucket. La politica include una condizione. MFA

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": [ "ACCOUNT-A-ID", "ACCOUNT-B-ID", "ACCOUNT-C-ID" ]}, "Action": [ "s3:PutObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::ACCOUNT-A-BUCKET-NAME/*"], "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} }] }
    Nota

    Amazon S3 offre una funzionalità di MFA eliminazione per l'accesso all'account root (solo). Puoi abilitare Amazon S3 MFA Delete quando imposti lo stato di versione del bucket. Amazon S3 MFA Delete non può essere applicato a un IAM utente ed è gestito indipendentemente dall'accesso protettoMFA. API Un IAM utente con le autorizzazioni per eliminare un bucket non può eliminare un bucket con Amazon S3 Delete abilitato. MFA Per ulteriori informazioni su Amazon S3 MFA Delete, consulta MFA Delete.

  3. Nell'account C, un amministratore si assicura che l'utente Nikhil sia configurato con un AWS MFA dispositivo e che conosca l'ID del dispositivo. L'ID del dispositivo è il numero di serie se si tratta di un MFA dispositivo hardware o il numero del dispositivo ARN se si tratta di un dispositivo virtualeMFA.

  4. Nell'account C, Nikhil (o un'applicazione che lui sta eseguendo) chiama GetSessionToken. La chiamata include l'ID o ARN del MFA dispositivo e la corrente TOTP che Nikhil riceve dal suo dispositivo.

  5. Nikhil (o un'applicazione che lui sta usando) usa le credenziali temporanee restituite da GetSessionToken per chiamare l'operazione PutObject di Amazon S3 per caricare un file in Account-A-bucket.

    Per un esempio di programma che chiama GetSessionToken, consulta Chiamata GetSessionToken con MFA autenticazione più avanti in questo documento.

    Nota

    Le credenziali temporanee che AssumeRole restituisce non funzionano in questo caso. Sebbene l'utente possa fornire MFA informazioni per assumere un ruolo, le credenziali temporanee restituite da AssumeRole non includono tali informazioni. MFA Tali informazioni sono necessarie per soddisfare le MFA condizioni previste dalla politica.