Usar políticas de VPC endpoint para APIs privadas no API Gateway - Amazon API Gateway

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 do authorizationType, isso pode causar um erro 403 IncompleteSignatureException ou 403 InvalidSignatureException. A tabela a seguir mostra os valores do cabeçalho Authorization de cada authorizationType.

    authorizationType

    Cabeçalho Authorization avaliado?

    Valores do cabeçalho Authorization permitidos

    NONE com a política padrão de acesso total Não Não aprovado
    NONE com uma política de acesso personalizada Sim Deve ser um valor SigV4 válido
    IAM Sim Deve ser um valor SigV4 válido
    CUSTOM ou COGNITO_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 o authorizationType do método da API como AWS_IAM ou NONE. Para obter mais instruções sobre como definir authorizationType 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/*" ] } ] }