如何保护 AWS Lambda 函数?

How to secure an AWS Lambda function?

我有一个简单的 Lambda 函数,它通过 SES 发送电子邮件。我可以使用带有所需数据的 POST 请求来调用它,它会发送一封电子邮件。我的问题是,我可以使用哪些方法来保护此功能?目前,任何人都可以调用该端点并使用任何数据执行该函数。

您需要为您的 API 网关设置一个 授权者tutorial 是一个很好的起点。

总而言之,您需要:

  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

您的 serverless.yml 授权方 配置下将如下所示:

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

您不需要仅限于 Cognito 授权方。您可以为 Google+、Facebook 等配置授权方

此设置意味着 Lamba 功能将仅由经过身份验证的用户触发,您可以通过检查 event 对象来识别什么是用户 ID:

event.requestContext.authorizer.claims.sub