Come le policy delle risorse API Gateway influiscono sul flusso di lavoro delle autorizzazioni
Quando API Gateway valuta la policy delle risorse collegata all'API, il risultato è influenzato dal tipo di autenticazione definito per l'API, come illustrato nei diagrammi nelle seguenti sezioni.
Argomenti
Solo policy delle risorse API Gateway
In questo flusso di lavoro, una policy delle risorse API Gateway è collegata all'API, ma non viene definito alcun tipo di autenticazione per l'API. La valutazione della policy comporta la ricerca di un'autorizzazione esplicita basata sui criteri in entrata dell'intermediario. Un rifiuto implicito o esplicito comporta il rifiuto dell'intermediario.
Di seguito viene riportato un esempio di tale policy delle risorse.
Autorizzazione Lambda e policy delle risorse
In questo flusso di lavoro, un'autorizzazione Lambda è configurata per l'API in aggiunta a una policy delle risorse. La policy delle risorse viene valutata in due fasi. Prima di chiamare l'autorizzazione Lambda, API Gateway valuta innanzitutto la policy e controlla la presenza di eventuali negazioni esplicite. Se riscontrati, all'intermediario viene negato subito l'accesso. In caso contrario viene chiamata l'autorizzazione Lambda, che restituisce un documento della policy che viene valutato insieme alla policy delle risorse. Se il sistema di autorizzazione utilizza il caching, Gateway API potrebbe restituire il documento di policy memorizzato nella cache. Il risultato è determinato in base alla tabella A.
La seguente policy delle risorse di esempio autorizza le chiamate solo dall'endpoint VPC il cui ID è . Nella fase di valutazione "pre-autorizzazione", solo le chiamate provenienti dall'endpoint VPC indicato nell'esempio sono autorizzate a proseguire e a valutare l'autorizzazione Lambda. Tutte le chiamate rimanenti vengono bloccate. Questo flusso di lavoro di autorizzazione è lo stesso se si utilizza un nome di dominio personalizzato per un’API privata.vpce-1a2b3c4d
Autenticazione IAM e policy delle risorse
In questo flusso di lavoro, viene configurata un'autenticazione IAM per l'API in aggiunta a una policy delle risorse. Dopo l'autenticazione dell'utente con il servizio IAM, l'API valuta sia le policy collegate all'utente sia la policy delle risorse. Il risultato varia a seconda che il chiamante si trovi nello stesso Account AWS del proprietario dell'API o in un Account AWS distinto.
Se il chiamante e il proprietario dell'API sono in account diversi, il chiamante sarà autorizzato esplicitamente a procedere sia dalle policy dell'utente IAM sia dalla policy delle risorse. Per ulteriori informazioni, consulta la tabella B.
Tuttavia, se il chiamante e il proprietario dell'API si trovano nello stesso Account AWS, le policy dell'utente IAM o la policy delle risorse devono esplicitamente autorizzare il chiamante a proseguire. Per ulteriori informazioni, consulta la tabella A.
Di seguito viene riportato un esempio di policy delle risorse multiaccount. Ipotizzando che la policy IAM contenga un'autorizzazione di questo tipo, questa policy delle risorse permette chiamate solo dal VPC il cui ID VPC è . Per ulteriori informazioni, consulta la tabella B.vpc-2f09a348
Autenticazione Amazon Cognito e policy delle risorse
In questo flusso di lavoro, un pool di utenti di Amazon Cognito è configurato per l'API in aggiunta a una policy delle risorse. API Gateway tenta innanzitutto di autenticare l'intermediario tramite Amazon Cognito. Questa operazione viene in genere eseguita tramite un token JWT fornito dall'intermediario. Se l'autenticazione va a buon fine, la policy delle risorse viene valutata in modo indipendente ed è richiesta un'autorizzazione esplicita. Un rifiuto o "non consentire né rifiutare" si traduce in un rifiuto. Di seguito è riportato un esempio di una policy delle risorse che potrebbe essere utilizzata insieme a pool di utenti di Amazon Cognito.
Di seguito è riportato un esempio di una policy delle risorse che consente chiamate solo da determinati IP di origine, ipotizzando che il token di autenticazione di Amazon Cognito contenga un'autorizzazione. Per ulteriori informazioni, consulta la tabella B.
Tabelle dei risultati della valutazione delle policy
La tabella A riporta il comportamento risultante quando l'accesso a un'API di Gateway API è controllato da una policy IAM o da un sistema di autorizzazione Lambda e da una policy delle risorse Gateway API, entrambe nello stesso Account AWS.
Policy IAM (o sistema di autorizzazione Lambda) |
Policy delle risorse Gateway API |
Comportamento risultante |
|---|---|---|
| Abilita | Abilita | Abilita |
| Abilita | Né Abilita né Rifiuta | Abilita |
| Abilita | Rifiuta | Explicit Deny (rifiuto esplicito) |
| Né Abilita né Rifiuta | Abilita | Abilita |
| Né Abilita né Rifiuta | Né Abilita né Rifiuta | Rifiuto implicito |
| Né Abilita né Rifiuta | Rifiuta | Explicit Deny (rifiuto esplicito) |
| Rifiuta | Abilita | Explicit Deny (rifiuto esplicito) |
| Rifiuta | Né Abilita né Rifiuta | Explicit Deny (rifiuto esplicito) |
| Rifiuta | Rifiuta | Explicit Deny (rifiuto esplicito) |
La tabella B riporta il comportamento risultante quando l'accesso a un'API di Gateway API è controllato da una policy IAM o da un sistema di autorizzazione del pool di utenti di Amazon Cognito e da una policy delle risorse Gateway API che si trovano in Account AWS diversi. Se una delle due è silente (non permette né rifiuta). l'accesso multiaccount viene negato. Questo perché l'accesso multi-account richiede l'autorizzazione esplicita all'accesso sia dalla policy delle risorse sia dalla policy IAM o dal sistema di autorizzazione del pool di utenti di Amazon Cognito.
Policy IAM o sistema di autorizzazione del pool di utenti di Amazon Cognito |
Policy delle risorse Gateway API |
Comportamento risultante |
|---|---|---|
| Abilita | Abilita | Abilita |
| Abilita | Né Abilita né Rifiuta | Rifiuto implicito |
| Abilita | Rifiuta | Explicit Deny (rifiuto esplicito) |
| Né Abilita né Rifiuta | Abilita | Rifiuto implicito |
| Né Abilita né Rifiuta | Né Abilita né Rifiuta | Rifiuto implicito |
| Né Abilita né Rifiuta | Rifiuta | Explicit Deny (rifiuto esplicito) |
| Rifiuta | Abilita | Explicit Deny (rifiuto esplicito) |
| Rifiuta | Né Abilita né Rifiuta | Explicit Deny (rifiuto esplicito) |
| Rifiuta | Rifiuta | Explicit Deny (rifiuto esplicito) |