首页 > 解决方案 > Istio Mixer 的应用程序身份和访问适配器不工作

问题描述

我正在尝试使用 IBM App Identity and Access Adapter for Istio 来保护前端应用程序。服务到位后,需要执行两个步骤:

  1. 创建 OidcConfig(这是他们的示例中提供的默认配置):
kind: OidcConfig
metadata:
    name: hello-oidc
    namespace: my-namespace
spec:
    discoveryUrl: https://dev-b37sro-t.auth0.com/.well-known/openid-configuration
    clientId: E3LjLlomDnaPTc0b83eZa1gT0oGDNLko
    clientSecret: randomlyGeneratedClientSecret(not revealing this one)
  1. 创建 OidcPolicy(他们的示例配置再次):
apiVersion: "security.cloud.ibm.com/v1"
kind: Policy
metadata:
  name:  oidcsamplepolicy
  namespace: my-namespace
spec:
  targets:
    -
      serviceName: helloworld
      paths:
        - exact: /hello
          method: ALL
          policies:
            - policyType: oidc
              config: hello-oidc
              redirectUri: http://helloworld.my-namespace.my-project-host/hello

我使用 Auth0 作为身份颁发者,因此我生成了一个新应用程序(来自 Istio 1.4.0 的 helloworld)并从那里获取以前配置中所需的参数。

出于某种原因,当我在 Kubernetes 集群/命名空间/服务中应用 OidcConfig 和策略时,它似乎没有任何效果。我仍然可以从 Web 浏览器访问应用程序,而无需任何身份验证。

这些是我为实现而遵循的链接:

https://www.ibm.com/cloud/blog/using-istio-to-secure-your-multicloud-kubernetes-applications-with-zero-code-change

https://github.com/ibm-cloud-security/app-identity-and-access-adapter

标签: kubernetesgoogle-cloud-platformibm-cloudopenid-connectistio

解决方案


您是否在安装 Istio 期间设置global.disablePolicyChecksfalse启用了混音器?

现在默认情况下禁用混音器。

请参阅https://istio.io/docs/reference/config/installation-options/#mixer-options

更新:

我只是能够通过执行以下操作在我的设置中解决此问题:

首先检查以下状态disablePolicyCheck

kubectl -n istio-system get cm istio -o jsonpath="{@.data.mesh}" | grep disablePolicyChecks

如果返回disablePolicyChecks: true运行

istioctl manifest apply --set values.global.disablePolicyChecks=false \
 --set values.mixer.policy.enabled=true \
 --set values.pilot.policy.enabled=true

运行以下内容应显示disablePolicyChecksasfalse

kubectl -n istio-system get cm istio -o jsonpath="{@.data.mesh}" | grep disablePolicyChecks

推荐阅读