我需要在命名空间“默认”中设置授权策略,这应该检查标头拒绝访问中是否不存在 JWT 令牌。所以我设置了一个“不允许”的策略,如下所示。这将拒绝标头中没有有效令牌的所有请求。我想从此规则中排除同一命名空间中的一些应用程序。允许访问的应用程序需要位于相同的命名空间中。我可以创建这样的规则。对此的任何指示都会有所帮助。尝试了几件事,但无法使其正常工作。
kind: “AuthorizationPolicy”
metadata:
name: “allow-nothing”
namespace: default
spec:
selector:
matchLabels:
istio: ingressgateway
action: DENY
rules:
from:
source:
notRequestPrincipals: ["*"]
编辑
这是我应用的更改notHosts
:notMethods
和notPaths
操作
kind: "AuthorizationPolicy"
metadata:
name: "deny-all"
namespace: istio-system
spec:
selector:
matchLabels:
istio: ingressgateway
action: DENY
rules:
- from:
- source:
notRequestPrincipals: ["*"]
- to:
- operation:
notHosts: ["localhost"]
notPaths: ["/ns/mypath"]
notMethods: ["GET"]
当我应用此策略DENY
操作时仍会触发。请注意在请求中我没有请求主体。这些是入口网关日志
[2021-05-22T06:42:34.106Z] "GET /ns/mypath HTTP/1.1" 403 - rbac_access_denied_matched_policy[ns[istio-system]-policy[deny-all]-rule[0]] - "-" 0 19 0 - "w.x.y.z" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36" "7b4eb6d0-bdc0-943f-ad81-292b65809639" "localhost" "-" - - a.b.c.d:8080 w.x.y.z:34974 - -