问题:
使用Kubernetes的网络策略无法按预期运行(出口和入口似乎切换到我了吗?)更重要的是,我似乎无法在不阻止前端的情况下就阻止Web流量直接访问/ api /路由。 / p>
代码设置:
使用Axios与后端对话的前端(反应)。设置为微服务,并使用Ingress根据路由适当推送流量。外部托管数据库。
Kubernetes设置
有问题的网络政策:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: api-blocking
spec:
podSelector:
matchLabels:
component: api
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 111.111.111.0/32
ports:
- port: 98711
egress:
- to:
- podSelector:
matchLabels:
component: frontend
ports:
- port: 3000
允许使用特定端口号的特定CIDR进入流量,可以适当地进行数据库提取。允许将流量发送到前端是使前端能够捕获后端数据的原因。
网络策略的任何组合都不会阻止用户在不折叠前端的情况下转到/ api /。希望找到一种方法来将其锁定并仅允许特定的客户端Pod连接到后端?
...。输入后,也许我需要针对入口服务的网络策略?
更新: 我尝试使用特定于网络插件的规则。
我编写规则的方式是只允许“前端”端点访问/ api / http路由用于入口和出口。似乎并没有阻止它通过API进入网络流量。
其中一部分带有占位符值的示例:
ingress:
- fromEndpoints:
- matchLabels:
component: frontend
toPorts:
- ports:
- port: '1111'
rules:
http:
- path: '/api/ping'
答案 0 :(得分:1)
在不阻止前端的情况下,我似乎无法阻止Web流量直接访问/ api /路由。
我认为使用标准网络策略对象是不可能的,因为它仅允许您根据pods, namespaces and IPs将流量列入白名单。
在我看来,Calico Network Policies(检查for Application layer policy
)可能更细致。