

# Como as políticas de recursos do API Gateway afetam o fluxo de trabalho de autorização
<a name="apigateway-authorization-flow"></a>

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.

**Topics**
+ [Somente política de recursos do API Gateway](#apigateway-authorization-flow-resource-policy-only)
+ [Política de recursos e autorizador do Lambda](#apigateway-authorization-flow-lambda)
+ [Política de recursos e autenticação do IAM](#apigateway-authorization-flow-iam)
+ [Autenticação e política de recursos do Amazon Cognito](#apigateway-authorization-flow-cognito)
+ [Tabelas de resultados de avaliação de política](#apigateway-resource-policies-iam-policies-interaction)

## Somente política de recursos do API Gateway
<a name="apigateway-authorization-flow-resource-policy-only"></a>

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.

![\[Fluxo de autorização somente de uma política de recursos.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/apigateway-auth-resource-policy-only.png)


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

------
#### [ JSON ]

****  

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

------

## Política de recursos e autorizador do Lambda
<a name="apigateway-authorization-flow-lambda"></a>

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](api-gateway-lambda-authorizer-output.md), que é avaliado em conjunto com a política de recursos. Se seu autorizador usa armazenamento em cache, o API Gateway pode exibir o documento de política em cache. O resultado é determinado com base na [Tabela A](#apigateway-resource-policies-iam-policies-interaction).

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. Esse fluxo de trabalho de autorização será o mesmo se você usar um nome de domínio personalizado para uma API privada.

![\[Fluxo de autorização de uma política de recursos e um autorizador do Lambda.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/apigateway-auth-lambda-resource-policy.png)


------
#### [ JSON ]

****  

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

------

## Política de recursos e autenticação do IAM
<a name="apigateway-authorization-flow-iam"></a>

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](#apigateway-resource-policies-iam-policies-interaction). 

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](#apigateway-resource-policies-iam-policies-interaction).

![\[Fluxo de autorização de uma política de recursos e autenticação do IAM.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/apigateway-auth-iam-resource-policy.png)


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 mais informações em [Tabela B](#apigateway-resource-policies-iam-policies-interaction).

------
#### [ JSON ]

****  

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

------

## Autenticação e política de recursos do Amazon Cognito
<a name="apigateway-authorization-flow-cognito"></a>

Neste fluxo de trabalho, um [grupo de usuários do Amazon Cognito](apigateway-integrate-with-cognito.md) é 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](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) 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.

![\[Fluxo de autorização de uma política de recursos e um autorizador do Amazon Cognito.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/apigateway-auth-cognito-resource-policy.png)


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](#apigateway-resource-policies-iam-policies-interaction).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:111111111111: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 name="apigateway-resource-policies-iam-policies-interaction"></a>

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 | 