我正在使用无服务器管理我的Lambda函数。
如果我必须将给定Serverless部署中的所有函数白名单,我可以使用这样的方法。
provider:
name: aws
...
resourcePolicy:
- Effect: Deny
Principal: '*'
Action: execute-api:Invoke
Resource:
- execute-api:/*/*/*
Condition:
NotIpAddress:
aws:SourceIp:
- '141.206.243.10/32' # Teradata IP
- '142.0.162.0/32' # Eloqua IPs
- Effect: Allow
Principal: '*'
Action: execute-api:Invoke
Resource:
- execute-api:/*/*/*在我的场景中,我有两个API,例如
我希望将GetEmployees限制为可从某个IP范围( 1.2.3.x/24 )获得,而PutEmployees限制为可从另一个IP范围( 4.5.6.x/24 )获得。
我怎样才能容纳这个serverless.yml?
发布于 2019-11-25 19:12:13
资源策略附加到API网关,而不是单独的路径,因此每个API网关只能有一个资源策略文档。
但是,由于策略中的规则是一系列规则,因此可以以下列格式为不同阶段、路径和方法设置单独的规则:
execute-api:/{stage}/{path}/{method}因此,您需要在您的资源策略,是更具体一点。
下面的示例将在任何阶段和任何方法中对API中的特定资源应用不同的IP限制。
provider:
name: aws
...
resourcePolicy:
- Effect: Allow
Principal: '*'
Action: execute-api:Invoke
Resource:
- execute-api:/*/*/*
- Effect: Deny
Principal: '*'
Action: execute-api:Invoke
Resource:
- execute-api:/*/GetEmployees/*
Condition:
NotIpAddress:
aws:SourceIp:
- '1.2.3.x/24'
- Effect: Deny
Principal: '*'
Action: execute-api:Invoke
Resource:
- execute-api:/*/PutEmployees/*
Condition:
NotIpAddress:
aws:SourceIp:
- '4.5.6.x/24'https://stackoverflow.com/questions/59032067
复制相似问题