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.
Tópicos
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.
O exemplo de política de recursos a seguir permite chamadas somente a partir do VPC endpoint cujo ID de VPC endpoint é
. 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.vpce-1a2b3c4d
{ "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 mais informações em Tabela B.
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 mais informações em Tabela A.
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 é
. Consulte mais informações em Tabela B.vpc-2f09a348
{ "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 mais informações em Tabela B.
{ "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 do Lambda e por uma política de recursos do API Gateway, ambos na mesma Conta da AWS.
Política do IAM (ou autorizador do Lambda) |
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 Amazon Cognito e por uma política de recursos do API Gateway, os quais estão em Contas da AWS diferentes. Se uma delas for silenciosa (nem permissão nem negação), o acesso entre contas é negado. Isso ocorre porque o acesso entre contas requer que tanto a política de recursos quanto a política do IAM, ou o autorizador de grupos de usuários do Amazon Cognito, conceda acesso explicitamente.
Política do IAM (ou autorizador de grupos de usuários 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 |