【问题标题】:How to configure kubectl to connect to EKS using OIDC (Azure AD)?如何配置 kubectl 以使用 OIDC (Azure AD) 连接到 EKS?
【发布时间】:2021-09-29 11:08:03
【问题描述】:

我已将 Azure AD 应用程序配置为 OIDC 提供程序,并在配置 EKS 中关联了 OIDC。现在我想使用 kubectl 访问,但我无法使用以下配置。

错误:无法连接到服务器:没有有效的 id-token,并且没有 refresh-token 无法刷新

kubectl config set-credentials aman \
   --auth-provider=oidc \
   --auth-provider-arg=idp-issuer-url=<my azure one> \
   --auth-provider-arg=client-id=<my client id> \
   --auth-provider-arg=client-secret=<my secret id>

而我可以使用 kubectl 的 oidc 插件以相同的详细信息进行连接。 我做错了什么?

我不明白为什么它要求刷新令牌。另外我没有刷新令牌。

注意:我按照 EKS 官方文档配置 https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html 和 Kubernetes 官方文档设置 kubectl https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl

任何人都可以在我不需要使用任何带有 kubectl 的 oidc 插件的地方提出任何建议吗?

【问题讨论】:

    标签: azure-active-directory openid-connect kubectl amazon-eks


    【解决方案1】:

    所以,我一直在做一些研究,我想我找到了答案。我发布我的发现,以便如果有人遇到同样的问题,它可以提供帮助。

    Kubernetes 使用 kubectl 进行身份验证的方式是使用 bearer_token。现在一个 bearer_token 由 access_token 和 refresh_token 组成。但是我们只能有 id 令牌,而 oidc 插件在这里发挥作用。根据 Kubernetes 官方文档,即https://kubernetes.io/docs/reference/access-authn-authz/authentication/

    The first option is to use the kubectl oidc authenticator, which sets the id_token as a bearer token for all requests and refreshes the token once it expires.

    换句话说,由于 EKS 仅提供 OIDC 身份验证,因此它只需要 id_token。然后我们需要oidc插件的帮助,它可以将我们的id_token设置为bearer_token。因此,我们不需要为 oidc 身份验证器插件提供任何刷新令牌。

    附言

    授权稍后由 RBAC 功能负责。在我的例子中,我将我的 AD 组映射到具有角色和角色绑定的 Kubernetes 组。

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 2023-01-31
      • 2021-08-28
      • 2020-09-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 2019-05-26
      • 2021-09-18
      相关资源
      最近更新 更多