我正在使用Azure Kubernetes进行后端部署。我有2个URL,一个是API URL(api.project.com),另一个是BFF URL(bff.project.com)。
在Web应用程序中,它们使用BFF URL(www.example.com),而不是调用API URLapi.project.com(bff.project.com)在内部调用API URL(api.project.com)并发送响应。
我现在想限制API URL(www.example.com)的直接使用api.project.com,即使是从任何REST API客户端(如 Postman 、失眠等),它应该只有在从BFF URL(www.example.com)触发时才起作用bff.project.com。
我们已经使用nginx-ingress创建子域,并且两个URL(BFF和API)都在同一个集群中。
是否有防火墙或内置Azure服务来解决上述问题?
提前感谢:)
1条答案
按热度按时间0x6upsns1#
你想保持你的api私有,只能从另一个K8S服务访问,所以不要使用你的入口控制器暴露它,它只是将无法访问K8S以外的任何客户端。
这意味着您丢失了api.project.com地址(虽然如果您真的想恢复,您可以恢复该地址,但似乎没有必要)。
http://<service-name>.<namespace>.svc.cluster.local:<service-port>
,在您的情况下可能是:假设您没有使用TLS(http而不是https),服务名为
api
,它运行在端口80上(这是应该的),名称空间名为api_ns
。如果您需要为开发人员提供对API的临时访问,例如postman,那么他们可以使用端口转发在开发环境中提供,而不需要始终允许外部访问。
然而,这并不能限制对BFF的访问。任何运行在K8S中的服务都可以访问API。如果你需要/想进一步限制,那么你有很多选择。