我正在使用API Gateway和Lambda构建无服务器的Web应用程序,它限制了Cognito和IAM对注册用户的API调用。我们有个人/企业用户,并希望为特定的企业用户提供额外的访问限制。
所以有如下的用户组。
控制此访问限制的有效方法是什么?
答案 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信息的标头。