kubernetes 从群集外部命中OIDC端点/.well-known/openid配置将导致401未经授权

mpgws1up  于 2023-03-01  发布在  Kubernetes
关注(0)|答案(2)|浏览(216)

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

vault write auth/jwt/config oidc_discovery_url="${ISSUER}" oidc_discovery_ca_pem=@ca.crt

但是它返回了一个401/未经授权。在此之前,在kubernetes集群上,我做了:

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

以确保OIDC发现URL不需要身份验证。
从外部Vault计算机,我只是尝试:

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

我还收到了401/未经授权。它可以正常到达服务器,所以这不是证书问题或其他问题,只是与kubernetes/API配置有关。
此外,我还将kOps部署更改为AlwaysAllow API调用:

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

但这并没有改变什么。
有人知道我错过了什么吗?
我也可以创建一个kubectl代理并从那里访问端点。

vngu2lb8

vngu2lb81#

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

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

wmomyfyw2#

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

kubectl get --raw=/.well-known/openid-configuration

相关问题