【问题标题】:Istio 1.5.1 - Security - Authorisation Policy - 503 Response codeIstio 1.5.1 - 安全 - 授权策略 - 503 响应码
【发布时间】:2020-08-31 23:28:37
【问题描述】:

在设置授权策略方面需要帮助。使用 Istio 版本的 Kubernetes 本地设置:1.5.1

在没有授权策略时获得 200 Ok。应用授权策略时的 503 响应代码。

Ingressgateway 访问日志(在没有授权策略时工作)

[2020-05-15T07:08:30.278Z] "GET /v1/delegation/test HTTP/1.1" 200 - "-" "-" 0 4 81 79 "10.40.172.33,10.32.0.1" "Mozilla/5.0 (Windows NT 10.0; WIN64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" “a19876b4-12ee-9172-aa93-e405a1a89c6b” “[替换服务器名称]” “10.32.0.150:9091” 出站|9091||[REPLACED].[REPLACED-NAMESPACENAME].svc.cluster.local 10.32.0.153:56224 10.32.0.153:80 10.32.0.1:15044 - -

对应应用pod Istio-proxy日志(工作时没有授权策略)

[2020-05-15T07:08:30.279Z] “- - -” 0 - “-” “-” 1805 142 60133 - “-” “-” “-” “-” “127.0.0.1:9091” 入站|9091||[REPLACED].[REPLACED-NAMESPACENAME].svc.cluster.local 127.0.0.1:33222 10.32.0.150:9091 10.32.0.153:56224 outbound_.9091_._.[REPLACED].[REPLACED-NAMESPACENAME].svc.cluster.local

实施以下授权政策

$ cat [REPLACED]-auth-policy.yaml apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata:   name: [REPLACED]-auth-policy   namespace: [REPLACED-NAMESPACENAME] spec:   selector:
    matchLabels:
      app: [REPLACED]   action: ALLOW   rules:
  - to:
    - operation:
        paths: ["/v1/delegation/test"]

authorizationpolicy.security.istio.io/[REPLACED]-auth-policy created

Ingressgateway 访问日志(当授权策略应用时不起作用)

[2020-05-15T07:12:54.333Z] "GET /v1/delegation/test HTTP/1.1" 503 UC "-" "-" 0 95 9 - "10.40.172.33,10.32.0.1" "Mozilla/5.0 (Windows NT 10.0; WIN64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" “b1177978-3151-9629-b8cf-d97f6dc40fb6” “[替换服务器名称]” “10.32.0.150:9091” 出站|9091||[REPLACED].[REPLACED-NAMESPACENAME].svc.cluster.local 10.32.0.153:60850 10.32.0.153:80 10.32.0.1:33145 - -

对应的applicaiton pod Istio-proxy日志(当授权策略applied时不工作)

[2020-05-15T06:43:07.789Z] “- - -” 0 - “-” “-” 968 1796 1764128 - “-” "-" "-" "-" "10.41.88.60:1282" PassthroughCluster 10.32.0.150:52592 10.41.88.60:1282 10.32.0.150:52590 - - [2020-05-15T07:12:54.334Z] “- - -” 0 - “-” “-” 0 0 8 - “-” “-” “-” "-" "127.0.0.1:9091" 入站|9091||[REPLACED].[REPLACED-NAMESPACENAME].svc.cluster.local 127.0.0.1:37848 10.32.0.150:9091 10.32.0.153:60850 outbound_.9091_._.[REPLACED].[REPLACED-NAMESPACENAME].svc.cluster.local - [2020-05-15T06:43:38.749Z] “- - -” 0 - “-” “-” 968 1796 1757489 - “-” “-” “-” “-” “10.41.88.60:1282” PassthroughCluster 10.32.0.150:53270 10.41.88.60:1282 10.32.0.150:53268 - -

【问题讨论】:

  • 也许是因为严格的 mtls?如果您将其更改为宽容怎么办?如果您想检查是否有一个 example 严格,请将 STRICT 更改为 PERMISSIVE 并将其应用于您的集群。
  • @jt97 感谢您的回复。未启用 mtls。我也看不到任何 PeerAuthentication。
  • 因为它是 1.5.1 mtls 默认启用,更多关于它here。从 alpha 到 beta 的分级自动双向 TLS。现在默认启用此功能。另一件事,你能尝试使用路径以外的东西吗?例如获取/发布there?

标签: authorization istio


【解决方案1】:

在 Kubernetes 服务定义中,我必须专门将 TCP 端口命名为“http”。将帖子命名为 http 允许对 _http._tcp.my-service.my-ns 进行 DNS SRV 查询。

https://kubernetes.io/docs/concepts/services-networking/service/#dns

“Kubernetes 还支持命名端口的 DNS SRV(服务)记录。如果“my-service.my-ns”服务有一个名为“http”且协议设置为 TCP 的端口,您可以对 _http._tcp.my-service.my-ns 执行 DNS SRV 查询以发现端口号对于“http”,以及 IP 地址。”

【讨论】:

  • 如果我理解你,我应该将我的服务部署为 http 而不是:名称:tcp,协议:TCP 吗?任何时候我申请 AuthorizationPolicy 和 RequestAuthentication,我的请求状态总是 503 我想知道为什么,你能帮忙吗?
  • 是的name: http, protocol: TCP。关于帮助,你可以发个问题并标记我,我会尽力帮助的。
  • 嗨 @cory-silva 这里是我的仓库 github.com/jamesmedice/Istio-Rbac-Policy-Mesh ,如果我在 31400 端口使用 istio 网关,RequestAuthentication 和 AuthorizationPolicy 的安全性,请求正在抛出 503,安全性 repo 是 github.com/jamesmedice/Istio-Security-VS-Mesh,istio 版本 1.5.1,tks 支持
  • 刚刚这样做并且正在检索 503 Service Unavailable,以防我的入口网关有端口:名称:http 编号:31400 协议:HTTP,安全项目是 github.com/jamesmedice/Istio- Security-VS-Mesh , istio 1.5.8
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 2023-03-08
  • 1970-01-01
  • 2021-08-07
相关资源
最近更新 更多