我正在使用azure kubernetes进行后端部署。我有两个URL,一个是API URL(API.project.com(,另一个是BFF URL(BFF.project.com(
在Web应用程序中,它们使用BFF URL(BFF.project.com(,而不是调用API URL(API.project.com(,BFF URL在内部调用API URL(API.project.com(并发送响应。
我现在想限制API URL(API.project.com(的直接使用,即使是从任何REST API客户端(如邮递员、失眠等(,它也只能在从BFF URL(BFF.project.com(触发时工作
我们使用nginx-ingress创建子域,并且两个URL(BFF和API(都在同一个集群中。
是否有任何防火墙或内置azure服务来解决上述问题?
提前感谢:(
您希望保持您的api私有,只能从另一个K8S服务访问,所以不要使用您的ingress控制器公开它,任何客户端都无法在K8S之外访问它。
这意味着你失去了api.project.com地址(尽管如果你真的想找回它,但似乎没有必要(。然后BFF将通过URL:http://<service-name>.<namespace>.svc.cluster.local:<service-port>
访问API,在您的情况下可能是:
http://api.api_ns.svc.cluster.local
假设您没有使用TLS(http而不是https(,那么该服务被称为api
,它在端口80上运行(应该是(,命名空间被称为api_ns
。
如果您需要为开发人员提供对API的临时访问以供他们使用,比如说poster,那么他们可以使用port-fowarding在开发环境中提供,而不需要一直允许外部访问。
然而,这并不会单独限制对BFF的访问。在K8S中运行的任何服务都可以访问API。如果你需要/想进一步限制事情,那么你有很多选择。