我有以下与我们的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以外的所有东西”。
有没有办法做到这一点?
答案 0 :(得分:0)
在策略的spec.targets
中,您仅指定了一个服务名称my-service
,该名称仅适用于仅具有该名称的一项服务。在Target selector文档上,您可以找到信息,使用该方法您需要指定每个服务名称,但您也可以指定端口号。其中还提到了大约3种类型的策略:Mesh-wide
,Namespace-wide
和Service-specific
。
关于您问题的解决方案,我可以为您提供3种选择:
1。启用和禁用服务的单独名称空间
您可以将应通过身份验证的服务放置到另一个namespace
上并启用namespace-wide policy。此选项的另一个变体是将不应进行身份验证的服务移至不同的namespace
,并在default
名称空间中启用身份验证。
2。具有命名服务的命名空间范围政策
它与以前的相似,但是无需创建新的整个命名空间范围的策略,只需创建一个service-specific
策略即可禁用一项服务中的身份验证。
它应该按优先级顺序工作
特定于服务>整个命名空间>整个网格
3。具有个人服务的MeshPolicy
如果要将所有服务保留在一个namespace
中,则可以使用MeshPolicy将此策略应用于网格中所有命名空间中的所有services
,然后创建另一个service-specific
策略以禁用身份验证。如前所述,service-specific
的优先级高于MeshPolicy
。
希望这会有所帮助。