

# Usar políticas de VPC endpoint para APIs privadas no API Gateway
<a name="apigateway-vpc-endpoint-policies"></a>

Para aumentar a segurança de sua API privada, você pode criar uma política de endpoint da VPC. Uma política de endpoint da VPC é uma política de recursos do IAM que você anexa a um endpoint da VPC. Para obter mais informações, consulte [Controlar o acesso a serviços com endpoints da VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).

Talvez você queira criar uma política de endpoint da VPC para realizar as tarefas a seguir.
+ Permitir que somente determinadas organizações ou recursos acessem seu endpoint da VPC e invoquem sua API.
+ Usar uma única política e evitar políticas baseadas em sessão ou perfil para controlar o tráfego para sua API.
+ Restringir o perímetro de segurança de sua aplicação ao migrar do ambiente on-premises para a AWS.

## Política do endpoint da VPC
<a name="apigateway-vpc-endpoint-policies-considerations"></a>

Veja a seguir as considerações para a política de endpoint da VPC.
+ A identidade do invocador é avaliada com base no valor do cabeçalho `Authorization`. A política de endpoint da VPC é avaliada primeiro e, em seguida, o Gateway da API avalia a solicitação com base no tipo de autorização configurada na solicitação do método. A tabela a seguir mostra como a política de endpoint da VPC é avaliada com base no conteúdo do valor do cabeçalho `Authorization`.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/apigateway-vpc-endpoint-policies.html)
+ Se seu controle de acesso depender do uso de um token de portador, como um autorizador Lambda ou Amazon Cognito, você pode controlar seu perímetro de segurança usando [propriedades do recurso](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resource-properties).
+  Se seus controles de autorização usarem a autorização do IAM, você poderá controlar seu perímetro de segurança usando [propriedades do recurso](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resource-properties) e [propriedades da entidade principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resource-principal).
+ As políticas de VPC endpoint podem ser usadas com políticas de recurso do API Gateway. A política de recursos do API Gateway é usada para especificar quais entidades principais podem acessar a API. A política de endpoint especifica quem pode acessar a VPC e quais APIs podem ser chamadas pelo endpoint da VPC. Sua API privada precisa de uma política de recursos, mas você não precisa criar uma política de endpoint da VPC personalizada.

## Exemplos de política de endpoint da VPC
<a name="apigateway-vpc-endpoint-policies-examples"></a>

É possível criar políticas para endpoints da Amazon Virtual Private Cloud para o Amazon API Gateway nas quais você pode especificar o indicado a seguir.
+ A entidade principal que pode executar ações.
+ As ações que podem ser executadas.
+ Os recursos que podem ter ações executadas neles.

Isso pode depender do conteúdo do cabeçalho de autorização. Para obter mais informações, consulte [Política do endpoint da VPC](#apigateway-vpc-endpoint-policies-considerations). Para exemplos adicionais de políticas, consulte [Exemplos de políticas de perímetro de dados](https://github.com/aws-samples/data-perimeter-policy-examples) no site do GitHub.

Para anexar a política ao VPC endpoint, será necessário usar o console da VPC. Para obter mais informações, consulte [Controlar o acesso a serviços com endpoints da VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html). 

## Exemplo 1: Política de VPC endpoint que concede acesso a duas APIs
<a name="apigateway-vpc-endpoint-policies-example-1"></a>

O exemplo de política a seguir concede acesso somente a duas APIs específicas por meio do VPC endpoint ao qual a política está anexada.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": "*",
            "Action": [
                "execute-api:Invoke"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*",
                "arn:aws:execute-api:us-east-1:123412341234:aaaaa11111/*"
            ]
        }
    ]
}
```

------

## Exemplo 2: Política de VPC endpoint que concede acesso a métodos GET
<a name="apigateway-vpc-endpoint-policies-example-2"></a>

O exemplo de política a seguir concede aos usuários acesso a métodos `GET` para uma API específica por meio do VPC endpoint ao qual a política está anexada.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": "*",
            "Action": [
                "execute-api:Invoke"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/stageName/GET/*"
            ]
        }
    ]
}
```

------

## Exemplo 3: Política de VPC endpoint que concede acesso a uma API específica para um usuário específico
<a name="apigateway-vpc-endpoint-policies-example-3"></a>

O exemplo de política a seguir concede acesso a uma API específica para um usuário específico por meio do VPC endpoint ao qual a política está anexada.

Neste caso, como a política restringe o acesso a entidades principais específicas do IAM, você precisa definir o método `authorizationType` como `AWS_IAM` ou `NONE`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": [
                    "arn:aws:iam::123412341234:user/MyUser"
                ]
            },
            "Action": [
                "execute-api:Invoke"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*"
            ]
        }
    ]
}
```

------

## Exemplo 4: política de endpoint da VPC que concede aos usuários acesso a um nome de domínio personalizado específico e a todas as APIs associadas ao domínio
<a name="apigateway-vpc-endpoint-policies-example-4"></a>

O exemplo de política a seguir concede aos usuários acesso a um nome de domínio personalizado específico para APIs privadas por meio do endpoint da VPC ao qual a política está anexada. Com essa política, desde que o usuário tenha criado uma associação de acesso ao nome de domínio entre o endpoint da VPC e o nome de domínio personalizado e tenha permissão para invocar o nome de domínio personalizado e quaisquer APIs privadas associadas ao nome de domínio personalizado, ele poderá invocar quaisquer APIs associadas a esse nome de domínio personalizado. Para obter mais informações, consulte [Nomes de domínio personalizados para APIs privadas no API Gateway](apigateway-private-custom-domains.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "execute-api:Invoke",
      "Resource": [
        "*"
      ],
       "Condition": {
        "ArnEquals": {
          "execute-api:viaDomainArn": "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.test.com+f4g5h6",
        }
      }
    }
  ]
}
```

------

## Exemplo 5: política de endpoint da VPC que concede ou nega acesso a APIs e recursos de domínio específicos
<a name="apigateway-vpc-endpoint-policies-example-5"></a>

O exemplo de política a seguir concede aos usuários acesso a APIs e recursos de domínio específicos. Com essa política, desde que o usuário tenha criado uma associação de acesso ao nome de domínio entre o endpoint da VPC e o nome de domínio personalizado e tenha permissão para invocar o nome de domínio personalizado e quaisquer APIs privadas associadas ao nome de domínio personalizado, ele poderá invocar APIs privadas e recursos de domínio permitidos. Para obter mais informações, consulte [Nomes de domínio personalizados para APIs privadas no API Gateway](apigateway-private-custom-domains.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "execute-api:Invoke",
      "Resource": [
        "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.test.com+f4g5h6",
        "arn:aws:execute-api:us-west-2:111122223333:a1b2c3d4e5/*"
      ]
    },
    {
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": "execute-api:Invoke",
      "Resource": [
        "arn:aws:execute-api:us-west-2:111122223333:a1b2c3d4e5/admin/*",
        "arn:aws:execute-api:us-west-2:111122223333:bcd123455/*"
      ]
    }
  ]
}
```

------

## Exemplo 6: política de endpoint da VPC concedendo ou negando acesso por entidades principais e recursos pertencentes a uma organização
<a name="apigateway-vpc-endpoint-policies-example-6"></a>

O exemplo de política a seguir concede acesso a entidades principais e recursos que pertencem a uma organização.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Condition": {
                "StringEquals": {
                    "aws:ResourceOrgID": "o-abcd1234",
                    "aws:PrincipalOrgID": "o-abcd1234"
                }
            },
            "Action": "*",
            "Resource": "*",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources"
        }
    ]
}
```

------