首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保护只能从Amazon的api网关或任何经过身份验证的应用程序访问的微服务

问如何保护只能从Amazon的api网关或任何经过身份验证的应用程序访问的微服务
EN

Stack Overflow用户
提问于 2018-02-07 10:02:51
回答 2查看 761关注 0票数 1

我正在管理AWS服务器上的用户和他们的身份验证/授权过程(使用认知、API网关和IAM特性),我在grails应用程序中编写了微服务,这个应用程序是/将要托管在不同的服务器上,但是这些服务现在是公开的,因为我使用AWS认知来进行身份验证和授权,我希望这里只从AWS的API网关访问我的所有微服务。我读过关于客户端证书的文章,但没有找到合适的文档。

任何帮助都将不胜感激!谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-02-07 14:46:55

似乎您正在寻找一个API网关私有集成。

API网关私有集成使得在Amazon后面公开HTTP/HTTPS资源变得非常简单,以供VPC之外的客户访问。要将对私有VPC资源的访问扩展到VPC边界之外,您可以创建一个具有私有集成的API,用于开放访问或受控访问。您可以通过使用IAM权限、自定义授权程序或亚马逊认知用户池来实现这一点。 https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-private-integration.html

私有集成利用VPC的其他特性--网络负载均衡器和VPC链接--允许API网关访问到基于实例的服务的“后门”连接,这样它们根本不需要暴露在Internet上。流量从API网关拥有的(隐藏的) VPC流到您的VPC,通过一个可以访问北草坪会议大楼的虚拟专用通道。

票数 2
EN

Stack Overflow用户

发布于 2018-02-07 10:53:01

客户端证书是最好的方法。

https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-client-side-ssl-authentication.html

您可以使用API生成SSL证书,并在后端使用其公钥来验证对后端系统的HTTP请求是否来自API。这允许您的HTTP后端控制和只接受来自Amazon网关的请求,即使后端是可公开访问的。

可以将它看作是转换SSL证书的典型角色(该证书目前验证您正在查看的HTTP响应来自StackOverflow.com)。

相反,您将使用此客户端证书在微服务的HTTP层中验证请求是否来自您的API网关。为此,生成一个API网关的客户端证书。然后,从同一个接口检索PEM编码的公钥,将您的HTTP配置为只接受使用此客户端证书加密的连接。。

本文似乎描述了如何配置Tomcat以接受/强制执行客户端证书:http://www.maximporges.com/2009/11/18/configuring-tomcat-ssl-clientserver-authentication/

代码语言:javascript
复制
<Connector
   clientAuth="true" port="8443" minSpareThreads="5" maxSpareThreads="75"
   enableLookups="true" disableUploadTimeout="true"
   acceptCount="100" maxThreads="200"
   scheme="https" secure="true" SSLEnabled="true"
   keystoreFile="/Users/mporges/Desktop/tomcat-ssl/final/server.jks"
   keystoreType="JKS" keystorePass="password"
   truststoreFile="/Users/mporges/Desktop/tomcat-ssl/final/server.jks"
   truststoreType="JKS" truststorePass="password"
   SSLVerifyClient="require" SSLEngine="on" SSLVerifyDepth="2" sslProtocol="TLS"
/>

--一个不那么健壮的选项,而不是SSL客户端证书,可能是将“秘密”API密钥添加到来自API网关的所有请求中,例如作为请求头或查询参数。然后,您的微服务可以查找这个API密钥,作为请求来自您的API网关的指示,并且应该被信任/接受。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48660912

复制
相关文章

相似问题

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