授权过于严格

当你第一次对一个服务启用授权,所有的请求都会被默认拒绝。在你增加上授权策略后,满足授权策略的请求就能够通过。如果所有的请求还是被拒绝,你可以试试下面的操作:

  1. 确保在你的授权策略 YAML 文件中内容正确。

  2. 不要为 Istio 的控制面组件启用授权,包括 Mixer、Pilot、Ingress。Istio 授权策略是为访问 Istio 网格内服务的授权而设计的。如果对 Istio 的控制面启用授权会导致不可预期的行为。

  3. 确保你的 ServiceRoleBinding 和相关的 ServiceRole 对象在同一个命名空间(检查 metadata/namespace 这一行)。

  4. 请您不要为 TCP 服务的 ServiceRoleServiceRoleBinding 设置那些仅适用于 HTTP 服务的属性字段。 否则,Istio 会自动忽略这些配置,就好像它们不存在一样。

  5. 在 Kubernetes 环境,确保所有在一个 ServiceRole 对象下的服务都在和 ServiceRole 在同一个命名空间。例如,如果 ServiceRole 对象中的服务是 a.default.svc.cluster.localServiceRole 必须在 default 命名空间(metadata/namespace 这一行应该是 default)。对于非 Kubernetes 的环境,一个网格的所有 ServiceRolesServiceRoleBindings 都应该在相同的命名空间下。

  6. 根据调试授权文档找到确切的原因。