0

在同一个命名空间下部署了 ServiceA 和 ServiceB 服务。启用了 istio 来验证请求身份验证。对服务的任何调用都需要具有带有有效 jwt 令牌的“Authrization”标头。它通过RequestAuthenicationAuthorizationPolicy集进行验证。它按预期工作,我可以使用有效的身份验证令牌进行 http 调用。现在 ServiceA 需要与 ServiceB 对话。我使用了 service-name serviceb..<namespace-name>.svc.cluster.local。调用已传递给 ServiceB,但由于 HTTP 403 失败。它需要 auth 令牌标头。如何在没有身份验证令牌的情况下允许同一命名空间内的服务之间的调用?我正在尝试找到一个示例来自定义AuthorizationPolicy, 以便它允许在与受信任服务相同的命名空间中调用而无需身份验证令牌。请让我知道,是否有可能或是否有替代方法。

我在服务下运行的所有 pod 都是 spring-boot 并使用 RestTemplate 在服务之间调用。

以下是使用的 istio 身份验证策略

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: service-auth-policy
  namespace: namespace-dev
spec:
  rules:
  - from:
      - source:
          requestPrincipals: ["*"]
4

1 回答 1

1

我将原来的授权策略从

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: service-auth-policy
  namespace: namespace-dev
spec:
  rules:
  - from:
      - source:
          requestPrincipals: ["*"]

包括如下命名空间

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: catalog-auth-policy
  namespace: namespace-dev
spec:
  rules:
  - from:
      - source:
          requestPrincipals: ["*"]
      - source:
          namespaces: ["namespace-dev"]

它按预期工作。

于 2020-12-12T19:19:53.030 回答