Autorização: IAM, autorizadores do Lambda e Cognito
Proteja endpoints de API com assinaturas IAM SigV4, autorizadores personalizados do Lambda ou autorizadores de grupos de usuários do Amazon Cognito.
Autorização: IAM, autorizadores do Lambda e Cognito é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
Por que a Autorização da API é Importante
Sem controles de autorização, qualquer cliente da Internet poderia chamar seus endpoints do API Gateway e acessar ou modificar dados. O API Gateway oferece três mecanismos nativos de autorização: IAM (SigV4), autorizadores do Lambda e autorizadores do grupo de usuários do Amazon Cognito. Cada mecanismo atende a diferentes casos de uso: IAM para chamadas entre serviços da AWS, autorizadores do Lambda para autenticação personalizada baseada em token ou solicitação e Cognito para autenticação de usuários da web e de dispositivos móveis.
Autorização do IAM com SigV4
A autorização do IAM exige que os chamadores assinem as solicitações usando a Assinatura AWS versão 4 (SigV4). O chamador deve ter credenciais da AWS (chave de acesso e chave secreta ou credenciais temporárias do STS), e a política do IAM deve permitir execute-api:Invoke no ARN da API. Isso é ideal para chamadas entre máquinas (servidor para servidor) dentro da AWS: um Lambda chamando outra API, uma EC2 chamando uma API interna ou o acesso a serviços entre contas. Clientes de navegador não conseguem usar SigV4 com facilidade.
# IAM policy to allow invoking a specific API endpoint
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Action': 'execute-api:Invoke',
'Resource': 'arn:aws:execute-api:us-east-1:123456789012:abc123/prod/GET/orders'
}]
}Autorizadores do Lambda: Baseados em Token
Um autorizador do Lambda (anteriormente, autorizador personalizado) é uma função Lambda escrita por você que o API Gateway invoca antes de chamar a integração de back-end. Para autorizadores baseados em token, o API Gateway extrai um token (JWT, OAuth, chave de API) do cabeçalho Authorization e o passa para o Lambda. Sua função Lambda valida o token (por exemplo, verificando a assinatura JWT com uma chave pública ou chamando um provedor de identidade terceirizado) e retorna um documento de política do IAM que permite ou nega a solicitação.
def lambda_handler(event, context):
token = event['authorizationToken']
# Validate token (JWT verification, introspect OAuth, etc.)
if is_valid_token(token):
return {
'principalId': 'user123',
'policyDocument': {
'Version': '2012-10-17',
'Statement': [{'Effect': 'Allow', 'Action': 'execute-api:Invoke',
'Resource': event['methodArn']}]
},
'context': {'userId': 'user123', 'role': 'admin'}
}
raise Exception('Unauthorized')Autorizadores do Lambda: Baseados em Solicitação
Para autorizadores do Lambda baseados em solicitação, o API Gateway passa todo o contexto da solicitação (cabeçalhos, strings de consulta, variáveis de estágio e parâmetros de caminho) para o Lambda, e não apenas um token. Isso é útil para autorizações que dependem de vários atributos da solicitação: listas de permissões de IP, combinações de cabeçalhos ou verificações de autenticação multifator. Os autorizadores baseados em solicitação são compatíveis com a API REST e a API HTTP.
Armazenamento em Cache de Autorizadores do Lambda
Chamar um autorizador do Lambda em cada solicitação da API aumenta a latência e o custo. Habilite o armazenamento em cache do resultado do autorizador: armazene em cache a política do IAM retornada pelo autorizador por um TTL configurável (0–3600 segundos), usando o valor do token como chave. As solicitações subsequentes com o mesmo token ignoram a invocação do Lambda e usam a política armazenada em cache. Defina o TTL de acordo com o tempo de expiração do token — se um token for válido por 1 hora, armazene o resultado do autorizador pelo mesmo período. O armazenamento em cache está disponível na API REST; os autorizadores JWT da API HTTP têm armazenamento em cache integrado.
Autorizador do Grupo de Usuários do Amazon Cognito
Os autorizadores do grupo de usuários do Cognito validam JWTs emitidos pelo Cognito diretamente no API Gateway, sem uma função Lambda. Quando um usuário se autentica pelo Cognito (por meio da interface hospedada, do SDK ou de um provedor de identidade federado), o Cognito emite um token de ID ou um token de acesso. O cliente inclui esse token no cabeçalho Authorization. O API Gateway verifica a assinatura e a expiração do token em relação ao grupo de usuários do Cognito. Se for válido, a solicitação prossegue; caso contrário, o API Gateway retorna 401.
aws apigateway create-authorizer \
--rest-api-id 'abc123' \
--name 'CognitoAuthorizer' \
--type COGNITO_USER_POOLS \
--provider-arns 'arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_XXXXXXX' \
--identity-source 'method.request.header.Authorization'Autorizador JWT na API HTTP
A API HTTP oferece suporte nativo a autorizadores JWT, sem Lambda. Você especifica a URL do emissor JWT (Cognito, Auth0, Okta) e o público, e o API Gateway valida os JWTs automaticamente. Isso é essencialmente um autorizador do grupo de usuários do Cognito, mas também funciona com qualquer provedor OIDC compatível com os padrões. A validação do token (assinatura, expiração e público) é feita internamente pelo API Gateway — com menor latência do que os autorizadores do Lambda e sem custo de Lambda.
aws apigatewayv2 create-authorizer \
--api-id 'abc123' \
--authorizer-type JWT \
--name 'JWTAuthorizer' \
--identity-source '$request.header.Authorization' \
--jwt-configuration '{
"Issuer": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_XXXXXXX",
"Audience": ["your-client-id"]
}'Grupos de Identidade do Cognito versus Grupos de Usuários
Para autorização de APIs, use os grupos de usuários do Cognito: eles gerenciam a autenticação dos usuários e emitem JWTs. Os grupos de identidade do Cognito (identidades federadas) são diferentes: eles trocam tokens de terceiros (de grupos de usuários, logins sociais ou SAML) por credenciais temporárias da AWS (por meio de STS AssumeRoleWithWebIdentity). Os grupos de identidade são usados quando seu aplicativo precisa acessar serviços da AWS diretamente (S3, DynamoDB) a partir do cliente. Para autenticação do API Gateway, os JWTs dos grupos de usuários são a escolha certa; as credenciais dos grupos de identidade são destinadas a chamadas diretas do SDK da AWS feitas pelo navegador ou dispositivo móvel.
Políticas de Recursos no API Gateway
As APIs REST oferecem políticas de recursos — políticas JSON associadas à API que controlam o acesso por endereço IP, endpoint da VPC, conta de origem ou ARN. Use políticas de recursos para: permitir que apenas intervalos de IP específicos chamem sua API, restringir o acesso a solicitações provenientes de um endpoint específico da VPC (API privada) ou permitir invocações entre contas. As políticas de recursos funcionam além dos autorizadores no nível do método — ambos devem permitir a solicitação para que ela seja bem-sucedida.
# Allow only specific IP range to call the API
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': '*',
'Action': 'execute-api:Invoke',
'Resource': 'arn:aws:execute-api:us-east-1:123456789012:abc123/*',
'Condition': {'IpAddress': {'aws:SourceIp': '203.0.113.0/24'}}
}]
}Autenticação TLS Mútua
TLS mútuo (mTLS) exige que o cliente e o servidor apresentem certificados durante o handshake TLS. O API Gateway oferece suporte a mTLS para APIs REST e HTTP quando nomes de domínio personalizados estão configurados. Os clientes devem apresentar um certificado válido assinado por uma Autoridade de Certificação (CA) que você envia para um truststore no S3. O mTLS é usado em serviços financeiros, na autenticação de dispositivos de IoT e em integrações B2B nas quais é necessária uma verificação forte da identidade do cliente, além da autenticação baseada em token.
Escolhendo o Tipo de Autorizador Adequado
Seleção de autorizador para o exame SAA-C03: IAM (SigV4) → chamadas entre serviços da AWS na mesma conta ou entre contas; grupo de usuários do Cognito → usuários de aplicativos web ou móveis autenticados pelo Cognito; autorizador do Lambda → lógica de autenticação personalizada (provedores de identidade terceirizados, formatos de token legados, introspecção de OAuth, IP + token combinados); autorizador JWT (API HTTP) → tokens OIDC/OAuth2 com qualquer provedor compatível com os padrões, a um custo menor que o dos autorizadores do Lambda. Sem autorizador → API pública.
Verificação Rápida
Teste sua compreensão dos conceitos de AWS Solutions Architect (SAA-C03) desta lição.
Recapitulação da Lição
Nesta lição, você aprendeu que a autorização IAM (SigV4) é usada em chamadas entre serviços com credenciais da AWS; os autorizadores do grupo de usuários do Cognito validam nativamente JWTs emitidos pelo Cognito para aplicativos web e móveis; e os autorizadores do Lambda implementam validação personalizada de tokens para provedores de identidade terceirizados ou lógica de autorização complexa, com armazenamento opcional dos resultados em cache. A seguir, exploraremos limitação de taxa, armazenamento em cache e planos de uso no API Gateway.
Perguntas Frequentes
A aula “Autorização: IAM, autorizadores do Lambda e Cognito” é grátis?
Sim — o texto completo de “Autorização: IAM, autorizadores do Lambda e Cognito” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que vou aprender em “Autorização: IAM, autorizadores do Lambda e Cognito”?
Proteja endpoints de API com assinaturas IAM SigV4, autorizadores personalizados do Lambda ou autorizadores de grupos de usuários do Amazon Cognito. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cloud & IT Cert Prep?
Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Autorização: IAM, autorizadores do Lambda e Cognito”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?
Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- API REST versus API HTTP versus API WebSocket
- Integrações: Lambda, HTTP e simulação
- Autorização: IAM, autorizadores do Lambda e Cognito
- Limitação, armazenamento em cache e planos de uso