我正在使用 azure kubernetes 進行后端部署。我有 2 個 URL,一個是 API URL(api.project.com),另一個是 BFF URL(bff.project.com)。
從 Web 應用程式中,他們使用 BFF URL(bff.project.com) 而不是呼叫 API URL(api.project.com),它在內部呼叫 API URL(api.project.com) 并發送回應。
我現在想限制 API URL(api.project.com) 的直接使用,即使是從任何 REST API 客戶端(如郵遞員、失眠等),它也只能在從 BFF URL(bff.project.com) 觸發時作業。
我們使用 nginx-ingress 創建子域,并且 URL(BFF 和 API)都在同一個集群中。
是否有任何防火墻或內置的 Azure 服務來解決上述問題?
提前致謝 :)
uj5u.com熱心網友回復:
你想讓你的 api 保持私有,只能從另一個 K8S 服務訪問,所以不要使用你的入口控制器公開它,它根本無法在 K8S 之外被任何客戶端訪問。
這意味著您丟失了 api.project.com 地址(盡管如果您真的想找回,但似乎沒有必要)。然后 BFF 將通過 URL: 訪問 API http://<service-name>.<namespace>.svc.cluster.local:<service-port>,在您的情況下可能是:
http://api.api_ns.svc.cluster.local
假設您沒有使用 TLS(http 而不是 https),服務被呼叫api,它運行在埠 80(它應該是)上并且命名空間被呼叫api_ns。
如果您需要為開發人員提供對 API 的臨時訪問權限以供使用,例如郵遞員,那么他們可以使用埠轉發在開發環境中提供該 API,而無需始終允許外部訪問。
但是,這不會單獨限制對 BFF 的訪問。在 K8S 中運行的任何服務都可以訪問該 API。如果您需要/想要進一步限制事情,那么您有很多選擇。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/517194.html
