首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无服务器白名单不同的IP到不同的功能

无服务器白名单不同的IP到不同的功能
EN

Stack Overflow用户
提问于 2019-11-25 12:39:46
回答 1查看 389关注 0票数 2

我正在使用无服务器管理我的Lambda函数。

如果我必须将给定Serverless部署中的所有函数白名单,我可以使用这样的方法。

代码语言:javascript
复制
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,例如

  • PutEmployees

  1. GetEmployees GetEmployees

我希望将GetEmployees限制为可从某个IP范围( 1.2.3.x/24 )获得,而PutEmployees限制为可从另一个IP范围( 4.5.6.x/24 )获得。

我怎样才能容纳这个serverless.yml?

EN

回答 1

Stack Overflow用户

发布于 2019-11-25 19:12:13

资源策略附加到API网关,而不是单独的路径,因此每个API网关只能有一个资源策略文档。

但是,由于策略中的规则是一系列规则,因此可以以下列格式为不同阶段、路径和方法设置单独的规则:

代码语言:javascript
复制
execute-api:/{stage}/{path}/{method}

因此,您需要在您的资源策略,是更具体一点。

下面的示例将在任何阶段和任何方法中对API中的特定资源应用不同的IP限制。

代码语言:javascript
复制
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'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59032067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档