特定用户的IP地址限制 - AWS / Cognito / IAM / API网关

时间:2018-04-20 13:19:25

标签: aws-lambda aws-api-gateway amazon-cognito amazon-iam

我正在使用API​​ Gateway和Lambda构建无服务器的Web应用程序,它限制了Cognito和IAM对注册用户的API调用。我们有个人/企业用户,并希望为特定的企业用户提供额外的访问限制。

所以有如下的用户组。

  • 个人用户可以随时随地访问
  • 公司A用户只能从网络A访问
  • 公司B用户只能从网络B访问
  • 公司C用户可以随时随地访问

控制此访问限制的有效方法是什么?

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。

方法1

一种方法是为每个用户创建具有IP限制的多个IAM策略,并允许他们使用AWS Cognito联合身份来假设它们,并在API网关上使用IAM授权程序。您可以将公司设置为属性,并在映射IAM策略的Cognito Federated Identities中创建规则。例如,请检查以下IAM策略。

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "*",
    "Resource": "*",
    "Condition": {"NotIpAddress": {"aws:SourceIp": [
      "192.0.2.0/24",
      "203.0.113.0/24"
    ]}}
  }
}

注意:您需要使用IAM策略授予对API网关端点的访问权限。

方法2

另一种方法是为每个公司保留多个用户池,并链接到与具有IP过滤的IAM策略链接的不同Cognito联合身份池。在API网关中,您可以类似地使用IAM授权程序。

方法3

另一种方法是使用AWS自定义授权程序,在查看Cognito ID令牌并与公司匹配后,​​根据传入请求的IPAddress过滤请求(如果公司存储为UserPool中的属性)。

注意:您需要使用Enhanced Request Authorizers来访问包含IP信息的标头。