Controlar o acesso a uma API com permissões do IAM - Amazon API Gateway

Controlar o acesso a uma API com permissões do IAM

O acesso à sua API do Amazon API Gateway com permissões do IAM é controlado pelo controle do acesso aos dois processos de componente do API Gateway a seguir:

  • Para criar, implantar e gerenciar uma API no API Gateway, você deve conceder as permissões de desenvolvedor de APIs para realizar as ações necessárias com suporte pelo componente de gerenciamento de APIs do API Gateway.

  • Para chamar uma API implantada ou atualizar o armazenamento em cache de APIs, você deve conceder ao autor da chamada da API as devidas permissões para realizar as ações necessárias do IAM com suporte pelo componente de execução de APIs do API Gateway.

O controle de acesso para os dois processos envolve diferentes modelos de permissões, explicados em seguida.

Modelo de permissões do API Gateway para criar e gerenciar uma API

Para permitir que um desenvolvedor de API crie e gerencie uma API no API Gateway, você deve criar políticas de permissões do IAM que permitem a um desenvolvedor de API especificado criar, atualizar, implantar, exibir ou excluir entidades de API necessárias. Você anexa a política de permissões a um usuário do IAM que representa o desenvolvedor, a um grupo do IAM que contém o usuário ou a uma função do IAM assumida pelo usuário.

Para obter mais informações sobre como usar esse modelo de permissões, consulte Políticas baseadas em identidade do API Gateway.

Modelo de permissões do API Gateway para invocar uma API

Para permitir que um autor da chamada de API invoque a API ou atualize seu armazenamento em cache, você deve criar políticas do IAM que permitam que o autor da chamada invoque o método de API para o qual a autenticação de usuários do IAM está habilitada. O desenvolvedor de APIs define a propriedade authorizationType do método como AWS_IAM para exigir que o autor da chamada envie as chaves de acesso do usuário do IAM a serem autenticadas. Depois, anexe a política a um usuário do IAM que representa o autor da chamada de API a um grupo do IAM que contém esse usuário ou a uma função do IAM assumida pelo usuário.

Nesta instrução de política de permissões do IAM, o elemento Resource do IAM contém uma lista de métodos de API implantados identificados por verbos HTTP especificados e por caminhos de recursos do API Gateway. O elemento Action do IAM contém as ações necessárias de execução de API do API Gateway. Essas ações incluem execute-api:Invoke ou execute-api:InvalidateCache, em que execute-api designa o componente de execução de API subjacente do API Gateway.

Para obter mais informações sobre como usar esse modelo de permissões, consulte Controlar o acesso para chamar uma API.

Quando uma API é integrada a um serviço da AWS (por exemplo, AWS Lambda) no backend, o API Gateway também deve ter permissões para acessar recursos integrados da AWS (por exemplo, invocar uma função do Lambda) em nome do autor da chamada da API. Para conceder essas permissões, crie uma função do IAM do tipo serviço da AWS para API Gateway. Quando você cria essa função no console de gerenciamento do IAM, essa função resultante contém a seguinte política de confiança do IAM que declara o API Gateway como uma entidade confiável com permissão para assumir a função:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Se você criar a função do IAM chamando o comando create-role da CLI ou um método de SDK correspondente, forneça a política de confiança acima como o parâmetro de entrada de assume-role-policy-document. Não tente criar essa política diretamente no console de gerenciamento do IAM ou chamando o comando da AWS CLI create-policy ou um método correspondente do SDK.

Para que o API Gateway chame o serviço da AWS integrado, você também deve anexar a essa função políticas de permissões do IAM apropriadas para chamar os serviços integrados da AWS. Por exemplo, para chamar uma função do Lambda, inclua a seguinte política de permissão do IAM na função do IAM:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "*" } ] }

Observe que o Lambda oferece suporte a políticas de acesso com base em recursos, que combina políticas de confiança com políticas de permissões. Ao integrar uma API com uma função do Lambda usando o console do API Gateway, você não é solicitado a definir essa função do IAM explicitamente, pois o console define as permissões com base em recurso na função do Lambda para você, com seu consentimento.

nota

Para implementar o controle de acesso em um serviço da AWS, você pode usar o modelo de permissões com base em autor da chamada, no qual uma política de permissões é diretamente anexada ao usuário ou grupo do IAM do autor da chamada, ou ao modelo de permissões com base em função, no qual uma política de permissões é anexada a uma função do IAM que o API Gateway pode assumir. As políticas de permissões podem ser diferentes nos dois modelos. Por exemplo, a política baseada em agente de chamada bloqueia o acesso, enquanto a política baseada em função permite o acesso. Você pode utilizar isso para exigir que um usuário do IAM acesse um serviço da AWS somente por meio da API do API Gateway.