限制从 API Gateway(客户端证书)访问 Elastic Beanstalk

Posted

技术标签:

【中文标题】限制从 API Gateway(客户端证书)访问 Elastic Beanstalk【英文标题】:Restrict access to Elastic Beanstalk from API Gateway (Client Side Cert.) 【发布时间】:2017-06-07 03:34:14 【问题描述】:

如何限制对 Elastic Beanstalk 的访问使其只能处理来自 API Gateway 的请求?

从 API Gateway 的角度来看,这很简单:

    生成简单的客户端证书(通过 API Gateway 仪表板), 后端验证每个请求的证书。

(A) 但是我应该如何验证这个客户端证书。在我的 Elastic Beanstalk (EB) 上使用 nginx 进行多 docker 配置?

我了解到弹性负载均衡器 (ELB)(EB 的组件)无法验证它。我必须使用 NGINX 在 ELB 后面的 EC2 上作为 Docker 容器运行来验证它。

(B) EB的Elastic Load Balancer应该设置什么(端口配置:HTTP(S)/TCP)?我是否购买了我的 Elastic Beanstalk 可以使用 443 端口的经过验证的 SSL 证书?

(C) 我应该在我的 EC2 实例上设置什么? (除了 NGINX - 我相信我知道如何设置 nginx.conf)

(D) 在 ELB 中使用 TCP 代替 HTTP 是否有一些缺点?

我已经阅读了一些关于这个问题的文章和其他 SO 帖子,但目前我对这个主题感到困惑。任何澄清都会非常有帮助!

【问题讨论】:

【参考方案1】:

您是正确的,因为您需要验证服务器主机上的证书。具体配置将根据您的设置而有所不同,但应该非常简单 - 我建议您查阅 NGINX 文档。

为了验证主机上的证书,您需要将 ELB 配置为使用 TCP 负载平衡。请参阅ELB docs 了解 HTTP 和 TCP 负载平衡之间的区别。

【讨论】:

感谢您的回答!你知道如何在 ELB 和 NGINX 上配置端口吗? ELB 应该监听端口 80 (TCP) 并将其转发到端口 80? NGINX 应该监听 80 端口吗?我对吗?还是应该是无处不在的 443 端口,还是 80 和 443 的某种混合? @nicq 你是否掌握了在 ELB 和 Nginx 上设置监听的端口?

以上是关于限制从 API Gateway(客户端证书)访问 Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes Ingress-Controller 和 AWS API Gateway 客户端证书

AWS APi Gateway 客户端证书,带有适用于 Elastic Beanstalk ELB 的 AWS 证书管理器

如何配置后端服务器以使用由 aws gateway api 生成的客户端 SSL 证书?

如何通过 Cognito 用户 ID 限制访问 AWS API Gateway 端点

从 VPC 内将“禁止”异常发布到 API Gateway Websocket API

AWS API Gateway 的访问权限