Como as políticas de recursos do API Gateway afetam o fluxo de trabalho de autorização - Amazon API Gateway

Como as políticas de recursos do API Gateway afetam o fluxo de trabalho de autorização

Quando o API Gateway avalia a política de recurso anexada à sua API, o resultado é afetado pelo tipo de autenticação definido para a API, conforme ilustrado nos fluxogramas das próximas seções.

Somente política de recursos do API Gateway

Neste fluxo de trabalho, uma política de recursos do API Gateway é anexada à API, mas nenhum tipo de autenticação é definido para a API. A avaliação da política envolve a busca de uma permissão explícita baseada nos critérios de entrada do autor da chamada. Uma negação implícita ou qualquer negação explícita resulta na negação do autor da chamada.

Veja a seguir um exemplo dessa política de recursos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:region:account-id:api-id/", "Condition": { "IpAddress": { "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

Política de recursos e autorizador do Lambda

Neste fluxo de trabalho, um autorizador do Lambda é configurado para a API, além de uma política de recursos. A política de recursos é avaliada em duas fases. Antes de chamar o autorizador do Lambda, o API Gateway primeiro avalia a política e verifica se há negações explícitas. Se encontradas, o autor da chamada terá o acesso negado imediatamente. Caso contrário, o autorizador do Lambda é chamado e retorna um documento de política, que é avaliado em conjunto com a política de recursos. O resultado é determinado com base na Tabela A (no final deste tópico).

O exemplo de política de recursos a seguir permite chamadas somente a partir do VPC endpoint cujo ID de VPC endpoint é vpce-1a2b3c4d. Durante a avaliação de “pré-autorização”, somente as chamadas vindas do VPC endpoint indicado no exemplo são permitidas para prosseguir e avaliar o autorizador do Lambda. Todas as chamadas restantes são bloqueadas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/" ], "Condition" : { "StringNotEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } } ] }

Política de recursos e autenticação do IAM

Nesse fluxo de trabalho, uma autenticação do IAM é configurada para a API além de uma política de recursos. Depois de autenticar o usuário com o serviço do IAM, a API avalia as duas políticas anexadas ao usuário, além da política de recursos. O resultado varia com base na origem do autor da chamada, se ele está na mesma Conta da AWS ou em outra Conta da AWS do proprietário da API.

Se o autor da chamada e o proprietário da API forem de contas diferentes, as políticas do IAM e a política de recursos deverão permitir explicitamente que o autor da chamada prossiga. (Consulte a Tabela B no final deste tópico.) No entanto, se o autor da chamada e o proprietário da API estiverem na mesma Conta da AWS, as políticas de usuário do IAM ou a política de recursos deverá permitir explicitamente que o autor da chamada prossiga. (Consulte a Tabela A abaixo.)

Veja a seguir um exemplo de uma política de recursos entre contas. Pressupondo-se que a política do IAM contenha um efeito de permissão, essa política de recursos permite chamadas somente da VPC cujo ID é vpc-2f09a348. (Consulte a Tabela B no final deste tópico.)

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/" ], "Condition" : { "StringEquals": { "aws:SourceVpc": "vpc-2f09a348" } } } ] }

Autenticação e política de recursos do Amazon Cognito

Neste fluxo de trabalho, um grupo de usuários do Amazon Cognito é configurado para a API, além de uma política de recursos. O API Gateway primeiro tenta autenticar o autor da chamada por meio do Amazon Cognito. Isso é normalmente executado por meio de um token JWT que é fornecido pelo autor da chamada. Se a autenticação for bem-sucedida, a política de recursos é avaliada de forma independente e é necessária uma permissão explícita. Uma negação ou “nem permissão nem negação” resulta em uma negação. Veja a seguir um exemplo de uma política de recursos que pode ser usada com os grupos de usuários do Amazon Cognito.

Veja a seguir um exemplo de uma política de recursos que permite chamadas somente de IPs de origem especificados, pressupondo que o token de autenticação do Amazon Cognito contém uma permissão. (Consulte a Tabela A no final deste tópico.)

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:region:account-id:api-id/", "Condition": { "IpAddress": { "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

Tabelas de resultados de avaliação de política

A Tabela A lista o comportamento resultante quando o acesso a uma API do API Gateway é controlado por uma política do IAM (ou um autorizador de grupos de usuários do Lambda ou do Amazon Cognito) e por uma política de recursos do API Gateway, ambos na mesma Conta da AWS.

Tabela A: a conta A chama a API pertencente à conta A
Política do IAM (ou autorizador de grupos de usuários do Lambda ou do Amazon Cognito) Política de recursos do API Gateway Comportamento resultante
Permitir Permitir Permitir
Permitir Nem permitir ou negar Permitir
Permitir Deny Negação explícita
Nem permitir ou negar Permitir Permitir
Nem permitir ou negar Nem permitir ou negar Negação implícita
Nem permitir ou negar Deny Negação explícita
Deny Permitir Negação explícita
Deny Nem permitir ou negar Negação explícita
Deny Deny Negação explícita

A Tabela B lista o comportamento resultante quando o acesso a uma API do API Gateway é controlado por uma política do IAM (ou um autorizador de grupos de usuários do Lambda ou do Amazon Cognito) e uma política de recursos do API Gateway, que estão em diferentes Contas da AWS. Se uma delas for silenciosa (nem permissão nem negação), o acesso entre contas é negado. Isso acontece porque o acesso entre contas requer que tanto a política de recursos quanto a política do IAM (ou um autorizador de grupos de usuários do Amazon Cognito ou do Lambda) conceda acesso explicitamente.

Tabela B: a conta B chama a API pertencente à conta A
Política do IAM (ou autorizador de grupos de usuários do Lambda ou do Amazon Cognito) Política de recursos do API Gateway Comportamento resultante
Permitir Permitir Permitir
Permitir Nem permitir ou negar Negação implícita
Permitir Deny Negação explícita
Nem permitir ou negar Permitir Negação implícita
Nem permitir ou negar Nem permitir ou negar Negação implícita
Nem permitir ou negar Deny Negação explícita
Deny Permitir Negação explícita
Deny Nem permitir ou negar Negação explícita
Deny Deny Negação explícita