除了Istio中的单个特定服务,是否可以将身份验证应用于所有服务?

时间:2019-10-21 15:30:02

标签: kubernetes istio amazon-eks aws-eks

我有以下与我们的Auth0帐户集成的政策:

apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: auth-policy
spec:
  targets:
  - name: my-service
  origins:
  - jwt:
      issuer: "https://<redacted>.eu.auth0.com/"
      jwksUri: "https://<redacted>.eu.auth0.com/.well-known/jwks.json"
  principalBinding: USE_ORIGIN

这会将我们的Auth0配置应用于所有内容,但我想针对一项服务禁用此功能。我想将目标设置为“ x以外的所有东西”。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

在策略的spec.targets中,您仅指定了一个服务名称my-service,该名称仅适用于仅具有该名称的一项服务。在Target selector文档上,您可以找到信息,使用该方法您需要指定每个服务名称,但您也可以指定端口号。其中还提到了大约3种类型的策略:Mesh-wideNamespace-wideService-specific

关于您问题的解决方案,我可以为您提供3种选择:

1。启用和禁用服务的单独名称空间

您可以将应通过身份验证的服务放置到另一个namespace上并启用namespace-wide policy。此选项的另一个变体是将不应进行身份验证的服务移至不同的namespace,并在default名称空间中启用身份验证。

2。具有命名服务的命名空间范围政策 它与以前的相似,但是无需创建新的整个命名空间范围的策略,只需创建一个service-specific策略即可禁用一项服务中的身份验证。

它应该按优先级顺序工作

  

特定于服务>整个命名空间>整个网格

3。具有个人服务的MeshPolicy 如果要将所有服务保留在一个namespace中,则可以使用MeshPolicy将此策略应用于网格中所有命名空间中的所有services,然后创建另一个service-specific策略以禁用身份验证。如前所述,service-specific的优先级高于MeshPolicy

希望这会有所帮助。