Controlar o acesso a uma API REST 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, perfil ou grupo.
Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
-
Usuários e grupos no AWS IAM Identity Center:
Crie um conjunto de permissões. Siga as instruções em Criação de um conjunto de permissões no Guia do usuário do AWS IAM Identity Center.
-
Usuários gerenciados no IAM com provedor de identidades:
Crie um perfil para a federação de identidades. Siga as instruções em Criando um perfil para um provedor de identidades de terceiros (federação) no Guia do Usuário do IAM.
-
Usuários do IAM:
-
Crie um perfil que seu usuário possa assumir. Siga as instruções em Criação de um perfil para um usuário do IAM no Guia do usuário do IAM.
-
(Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em Adição de permissões a um usuário (console) no Guia do usuário do IAM.
-
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, é necessário criar políticas do IAM que permitam que um autor da chamada de API específico invoque o método de API para o qual a autenticação de usuários está ativada. O desenvolvedor de APIs define a propriedade authorizationType
do método como AWS_IAM
para exigir que o autor da chamada envie as credenciais do usuário do IAM a serem autenticadas. Depois, é possível anexar a política a um usuário, grupo ou perfil.
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 back-end, 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 chamador 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 autor da chamada, ou ao modelo de permissões com base em perfil, no qual uma política de permissões é anexada a um perfil 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 acesse um serviço da AWS somente por meio da API do API Gateway.