2

J'ai une simple fonction Lambda qui envoie des emails via SES. Je peux l'appeler en utilisant une requête POST avec les données requises et j'enverrai un email. Ma question est, quelles sont les méthodes que je peux utiliser pour sécuriser cette fonction? Actuellement, n'importe qui peut appeler ce point de terminaison et exécuter la fonction avec n'importe quelles données.Comment sécuriser une fonction AWS Lambda?

+2

Vous ne pouvez pas sécuriser le code côté client, sauf si l'on considère l'obfuscation comme une mesure de sécurité. Tout formulaire de contact de base est vulnérable à être spammé, je suppose. –

+3

@ChrisG 'aws-lambda' est une technologie côté serveur – LifeQuery

Répondre

5

Vous devez définir un autorisateur pour votre API Gateway. Ce tutorial est un bon point de départ.

En résumé, vous devez:

  1. Create a Cognito User Pool
  2. Create a Cognito Identity Pool that uses this User Pool
  3. Make the client to log in and retrieve Cognito credentials
  4. Make the client to send authorization headers for all requests
  5. Set an authorizer in your Lamba function

Y notre serverless.yml ressemblera à ceci avec le approbateur configuration:

functions: 
    hello: 
    handler: handler.hello 
    events: 
     - http: 
      path: hello 
      method: post 
      authorizer: 
      arn: YOUR_USER_POOL_ARN 

Vous n'êtes pas obligé de se limiter à un approbateur Cognito. Vous pouvez utiliser configurer un approbateur pour Google, Facebook, etc.

Ce paramètre signifie que la fonction Lamba sera déclenchée que par les utilisateurs authentifiés et vous pouvez identifier ce qui est l'ID utilisateur en inspectant l'objet event:

event.requestContext.authorizer.claims.sub