Usar políticas de VPC endpoint para APIs privadas no API Gateway
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.
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
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
. Dependendo doauthorizationType
, isso pode causar um erro403 IncompleteSignatureException
ou403 InvalidSignatureException
. A tabela a seguir mostra os valores do cabeçalhoAuthorization
de cadaauthorizationType
.authorizationType
Cabeçalho
Authorization
avaliado?Valores do cabeçalho
Authorization
permitidosNONE
com a política padrão de acesso totalNão Não aprovado NONE
com uma política de acesso personalizadaSim Deve ser um valor SigV4 válido IAM
Sim Deve ser um valor SigV4 válido CUSTOM
ouCOGNITO_USER_POOLS
Não Não aprovado Se uma política restringir o acesso a uma entidade principal específica do IAM, como
arn:aws:iam::account-id:role/developer
, você deverá definir oauthorizationType
do método da API comoAWS_IAM
ouNONE
. Para obter mais instruções sobre como definirauthorizationType
para um método, consulte Métodos para APIs REST no API Gateway.-
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 VPC endpoint
É 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.
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.
Exemplo 1: Política de VPC endpoint que concede acesso a duas APIs
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.
{ "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
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.
{ "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
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
.
{ "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
/*" ] } ] }