如何保护 AWS Lambda 函数?
How to secure an AWS Lambda function?
我有一个简单的 Lambda 函数,它通过 SES 发送电子邮件。我可以使用带有所需数据的 POST 请求来调用它,它会发送一封电子邮件。我的问题是,我可以使用哪些方法来保护此功能?目前,任何人都可以调用该端点并使用任何数据执行该函数。
您需要为您的 API 网关设置一个 授权者。 tutorial 是一个很好的起点。
总而言之,您需要:
- Create a Cognito User Pool
- Create a Cognito Identity Pool that uses this User Pool
- Make the client to log in and retrieve Cognito credentials
- Make the client to send authorization headers for all requests
- 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
我有一个简单的 Lambda 函数,它通过 SES 发送电子邮件。我可以使用带有所需数据的 POST 请求来调用它,它会发送一封电子邮件。我的问题是,我可以使用哪些方法来保护此功能?目前,任何人都可以调用该端点并使用任何数据执行该函数。
您需要为您的 API 网关设置一个 授权者。 tutorial 是一个很好的起点。
总而言之,您需要:
- Create a Cognito User Pool
- Create a Cognito Identity Pool that uses this User Pool
- Make the client to log in and retrieve Cognito credentials
- Make the client to send authorization headers for all requests
- 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