我试图用“istio-system” ns在k8s istio中创建防火墙规则,
我在不同的ns内都有服务。
我需要使用istio ingress创建防火墙规则,该规则会阻止除“POST”请求之外的所有请求。
我试图像这样在防火墙中创建新规则:
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: deny-all
namespace: istio-system
spec:
{}
这实际上阻止了所有请求,之后我尝试应用此规则:apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: httpbin
namespace: test
spec:
action: ALLOW
selector:
matchLabels:
app: test
rules:
to:
- operation:
hosts: ["https://ABCD.xxx.ddd"]
methods: ["POST"]
paths: ["/*"]
那没有成功就我目前的理解而言,我无法阻止一个 namespace 上的服务,
使用防火墙规则作为另一个命名空间上的istio(在不同ns中)的一部分。
我的问题是有可能这样做吗?
最佳答案
也许只是创建一个拒绝除POST之外的每个授权策略的授权策略?
我举了一个仅允许GET请求而拒绝休息的示例。看一看。
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: httpbin
namespace: istio-system
spec:
action: DENY
selector:
matchLabels:
istio: ingressgateway
rules:
- to:
- operation:
methods: ["POST", "HEAD", "PUT", "DELETE", "CONNECT", "OPTIONS", "TRACE", "PATCH"]
和一些测试root@httpbin-779c54bf49-s6g6r:/# curl http://xx.xx.xxx.xxx/productpage -X GET -s -o /dev/null -w "%{http_code}\n"
200
root@httpbin-779c54bf49-s6g6r:/# curl http://xx.xx.xxx.xxx/productpage -X POST -s -o /dev/null -w "%{http_code}\n"
403
root@httpbin-779c54bf49-s6g6r:/# curl http://xx.xx.xxx.xxx/productpage -X PUT -s -o /dev/null -w "%{http_code}\n"
403
有关AuthorizationPolicy的相关文档:
如果您还有其他问题,请告诉我。