【问题标题】:Can Google client-id and client-secret credential be exploited by a non org member?非组织成员可以利用 Google 客户端 ID 和客户端机密凭据吗?
【发布时间】:2019-06-17 17:51:17
【问题描述】:

假设我们有一个 Kubernetes 集群,谷歌作为 OIDC 提供者进行身份验证。 每个使用该集群的开发人员都有~/.kube/config,并配置了以下内容:

user:
    auth-provider:
      config:
        client-id: <client-id>
        client-secret: <client-secret>
        id-token: <id-token>
        idp-issuer-url: https://accounts.google.com
        refresh-token: <refresh-token>

当开发人员离开组织时,他将被从 Google 登录中删除,并且他无法使用此 ~/.kube/config 访问 kubernetes 资源,因为他需要登录到 Google,但他现在不能这样做。

但客户端 ID 和密码仍然泄露。

  • client-secret 这里的泄漏可能会引起任何安全问题?
  • 非组织成员可以使用组织成员来利用它吗?
  • 这个client-idclient-secret 是否可以用于制作不同的应用程序并被利用以使现有组织用户代表该现有用户登录并获得对 ID 令牌的访问权限?

请提出建议。

PS:这个client-id和client-secret的凭证类型是“Other”,而不是带有redirect url的“Web application”。

【问题讨论】:

    标签: security authentication kubernetes google-oauth


    【解决方案1】:

    首先,离职后禁止使用机密凭据和访问帐户,这就是为什么开发人员在离职后无法访问这些数据。

    Kubernetes 中 OpenID 的流程:

    1. 登录您的身份提供商
    2. 您的身份提供商将为您提供 access_token、id_token 和 refresh_token
    3. 使用 kubectl 时,将您的 id_token 与 --token 标志一起使用或直接将其添加到您的 kubeconfig 中
    4. kubectl 在名为 Authorization 的标头中将您的 id_token 发送到 API 服务器
    5. API 服务器将通过检查配置中指定的证书来确保 JWT 签名有效
    6. 检查以确保 id_token 未过期
    7. 确保用户已获得授权
    8. 一旦获得授权,API 服务器就会向 kubectl 返回响应
    9. kubectl 向用户提供反馈

    对您来说最重要的点是 567。您客户端的 JWT 无效,因此离职用户及其帐户凭据(或具有此类凭据的其他组织的成员)无法访问您的集群。

    id_token 不能被撤销,它就像一个证书,所以它应该是短暂的。 如果不使用 kubectl proxy 命令或注入 id_token 的反向代理,则无法轻松地向 Kubernetes 仪表板进行身份验证。

    您可以在此处找到更多信息:kubernetes-cluster-access。 所以假设你不必担心泄露 client_id 和

    您也可以删除集群/上下文/用户条目,例如:

    $ kubectl config unset users.gke_project_zone_name

    Client_secret 现在对于 k8s oidc 配置是可选的,这意味着它可以支持公共客户端(有或没有 client_secret)和机密客户端(有 client_secret,每个 kubectl 用户)。

    因此,对于您的问题,每个问题的答案是否定的,无需担心安全方面。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 2021-02-15
      • 2014-12-27
      • 2021-12-09
      • 1970-01-01
      相关资源
      最近更新 更多