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. 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.

    Conteúdo do valor do cabeçalho Authorization

    Como a política de endpoint da VPC é avaliada

    Sem conteúdo O invocador é avaliado como um usuário anônimo
    Assinatura SigV4 válida O invocador é avaliado como a identidade IAM autenticada da assinatura
    Assinatura SigV4 inválida O Gateway da API nega o acesso
    Informações de autorização não SigV4, como um token de portador O invocador é avaliado como um usuário anônimo
  • 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.

  • 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 e propriedades da entidade 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

É 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 realizar 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. Para exemplos adicionais de políticas, consulte Exemplos de políticas de perímetro de dados 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.

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/*" ] } ] }

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

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.

{ "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

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.

{ "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

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" } ] }