Controllo degli accessi a una REST API con le autorizzazioni IAM - Amazon API Gateway

Controllo degli accessi a una REST API con le autorizzazioni IAM

Puoi controllare l'accesso all'API di Amazon API Gateway con le autorizzazioni IAM controllando l'accesso ai seguenti due processi componenti di API Gateway:

  • Per creare, distribuire e gestire un'API in API Gateway, è necessario concedere allo sviluppatore dell'API le autorizzazioni per eseguire le operazioni richieste supportate dal componente di gestione dell'API di API Gateway.

  • Per chiamare un'API distribuita o per aggiornare la memorizzazione nella cache dell'API, è necessario concedere all'intermediario dell'API le autorizzazioni per eseguire le operazioni IAM supportate dal componente di esecuzione dell'API di API Gateway.

Il controllo degli accessi per i due processi prevede l'uso dei due diversi modelli di autorizzazione illustrati più avanti.

Modello di autorizzazione API Gateway per la creazione e la gestione di un'API

Per consentire a uno sviluppatore di API di creare e gestire un'API in API Gateway, è necessario creare le policy di autorizzazione IAM che consentono a uno sviluppatore di API specifico di creare, aggiornare, distribuire, visualizzare o eliminare le entità API richieste. È possibile collegare la policy delle autorizzazioni a un utente, un ruolo o un gruppo.

Per fornire l'accesso, aggiungi autorizzazioni ai tuoi utenti, gruppi o ruoli:

  • Utenti e gruppi in AWS IAM Identity Center:

    Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina Create a permission set (Creazione di un set di autorizzazioni) nella Guida per l'utente di AWS IAM Identity Center.

  • Utenti gestiti in IAM tramite un provider di identità:

    Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina Create a role for a third-party identity provider (federation) della Guida per l'utente IAM.

  • Utenti IAM:

Per ulteriori informazioni su come usare il modello di autorizzazione, consulta Policy basate su identità dei API Gateway.

Modello di autorizzazione API Gateway per invocare un'API

Per consentire a un chiamante dell'API di richiamare l'API o aggiornare la relativa memorizzazione nella cache, è necessario creare policy IAM che permettano al chiamante dell'API specificato di richiamare il metodo API per il quale è abilitata l'autenticazione dell'utente. Lo sviluppatore dell'API imposta la proprietà authorizationType del metodo su AWS_IAM per richiedere al chiamante di inviare le chiavi di accesso dell'utente per l'autenticazione. Sarà quindi possibile collegare la policy all'utente, al gruppo o al ruolo.

In questa istruzione di policy di autorizzazione IAM l'elemento IAM Resource contiene un elenco di metodi API distribuiti identificati da verbi HTTP e percorsi di risorsa API Gateway specifici. L'elemento IAM Action contiene le operazioni di esecuzione API di API Gateway richieste. Tali operazioni includono execute-api:Invoke o execute-api:InvalidateCache, dove execute-api designa il componente di esecuzione dell'API sottostante di API Gateway.

Per ulteriori informazioni su come usare il modello di autorizzazione, consulta Controllo degli accessi per invocare un'API.

Quando un'API viene integrata con un servizio AWS (ad esempio AWS Lambda) nel back-end, l'API Gateway deve disporre delle autorizzazioni per accedere anche alle risorse AWS integrate (ad esempio per richiamare una funzione Lambda) per conto dell'intermediario dell'API. Per concedere queste autorizzazioni, crea un ruolo IAM del tipo AWS service for API Gateway (Servizio AWS per API Gateway). Quando crei questo ruolo nella console di gestione IAM, tale ruolo contiene la policy di attendibilità IAM seguente, in base alla quale API Gateway viene dichiarato un'entità attendibile che può assumere quel ruolo:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Se crei il ruolo IAM chiamando il comando create-role della CLI o un metodo SDK corrispondente, devi fornire la policy di attendibilità precedente come parametro di input di assume-role-policy-document. Non tentare di creare tale policy direttamente nella console di gestione IAM o chiamando il comando create-policy della AWS CLI o un metodo SDK corrispondente.

Per fare in modo che API Gateway chiami il servizio AWS integrato, devi anche collegare a questo ruolo policy di autorizzazione IAM appropriate per chiamare i servizi AWS integrati. Ad esempio, per chiamare una funzione Lambda, devi includere la seguente policy di autorizzazione IAM nel ruolo IAM:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "*" } ] }

Lambda supporta le policy di accesso basate su risorse, che combinano policy di autorizzazione e di attendibilità. Quando integri un'API con una funzione Lambda utilizzando la console API Gateway, non ti viene richiesto di impostare questo ruolo IAM esplicitamente, poiché la console imposta automaticamente con il tuo consenso le autorizzazioni basate su risorse sulla funzione Lambda.

Nota

Per implementare il controllo degli accessi in un servizio AWS, è possibile usare il modello di autorizzazione basato su chiamante, dove una policy di autorizzazione è direttamente collegata all'utente o al gruppo del chiamante oppure il modello di autorizzazione basato su ruolo, dove una policy di autorizzazione è collegata a un ruolo IAM che API Gateway può assumere. Le policy di autorizzazione possono differire nei due modelli. Ad esempio la policy basata su intermediario blocca l'accesso, mentre quella basata su ruolo lo consente. È possibile sfruttare queste caratteristiche per richiedere che un utente acceda a un servizio AWS solo mediante un'API di API Gateway.