从集群外部访问 OIDC 端点 /.well-known/openid-configuration 会导致 401 Unauthorized

问题描述 投票:0回答:2

使用 kOps 将 kubernetes 集群部署到 AWS,我正在尝试配置外部 Hashicorp Vault 以使用 JWT/OIDC 身份验证。按照 https://www.vaultproject.io/docs/auth/jwt/oidc_providers#kubernetes 上的教程,我尝试从保险库发出:

vault write auth/jwt/config oidc_discovery_url="${ISSUER}" [email protected]

但它返回 401/Unauthorized。在此之前,我在 kubernetes 集群上做了:

kubectl create clusterrolebinding oidc-reviewer --clusterrole=system:service-account-issuer-discovery --group=system:unauthenticated

据称确保 OIDC 发现 URL 不需要身份验证。

从外部金库机器,我只是尝试:

curl --cacert ca.crt $ISSUER/.well-known/openid-configuration

我也得到了 401/Unauthorized。它正在正常到达服务器,所以这不是证书问题或任何问题,只是与 kubernetes/API 配置有关。

另外,我将 kOps 部署更改为 AlwaysAllow API 调用:

apiVersion: kops.k8s.io/v1alpha2
kind:Cluster
spec:
  api:
    dns: { }
  authorization:
    alwaysAllow: { }

但这没有任何区别。

有人知道我可能会遗漏什么吗?

否则我可以创建一个 kubectl 代理并从那里访问端点就好了。

kubernetes openid-connect hashicorp-vault kops kubernetes-apiserver
2个回答
0
投票

您可能希望从 kOps 启用 OIDC 发现。这会将 OIDC 发现文件放在 S3 中,而不是从 APIServer 上经过身份验证的端点提供它们:

spec:
  serviceAccountIssuerDiscovery:
    discoveryStore: s3://publicly-readable-store

0
投票

我也希望能够快速得到这个。看起来你有 kubectl 访问权限,所以你可以使用原始请求来获取 openid-config

kubectl get --raw=/.well-known/openid-configuration
© www.soinside.com 2019 - 2024. All rights reserved.