【问题标题】:Understanding Kubernetes users了解 Kubernetes 用户
【发布时间】:2018-08-11 06:31:23
【问题描述】:

我无法理解 Kubernetes 身份验证模型,尤其是“用户”是什么。

假设我在一台位于 kubernetes 集群内的计算机上。我想使用 kubectl 向 API 服务器发出请求。

所以: - 我需要从 api-server HTTPS 端口获取公钥。所以让我们假设这是提供给我的。 - 那么,在我的请求中,我需要填充“用户”字段吗?

根据文档的这一部分,用户字段是一个方法:https://kubernetes.io/docs/admin/authentication/#authentication-strategies

但是在这里https://kubernetes.io/docs/admin/accessing-the-api/#authorization 我们读到实际上 kubernetes 没有用户的概念。

所以:

  • 我什至在用户字段中输入了什么/在哪里?
  • 如果由于我控制客户端请求内容,我不能简单地在此处输入任何用户名吗?难道我不能只是反复猜测任何用户名,直到找到一个具有我想要的授权的用户名吗?

谢谢。

【问题讨论】:

    标签: kubernetes kubernetes-security


    【解决方案1】:

    我们了解到实际上 kubernetes 没有用户的概念。

    不完全...“它没有用户object,也没有存储用户名或其他关于用户的信息在它的对象存储中。”

    例如,如果您提供了客户端证书,Kubernetes 将验证证书上的签名,然后从证书主题中提取您的身份。

    如果您提供了 OpenID Connect 不记名令牌,kubernetes 将验证令牌上的签名并从签名令牌中提取您的用户名和组成员身份。

    kubernetes 服务器还可以使用其他方法来验证您的凭据(webhook 调用、通过身份验证代理传递您的请求等)

    我什至在用户字段中输入了什么/在哪里?

    在 kubectl 使用的 kubeconfig 文件中,它存储有关将被联系的服务器的信息,以及要提供的用户凭据。您可以提供客户端 x509 证书、不记名令牌或基本身份验证用户名/密码。您选择哪一种取决于您的服务器中配置的身份验证方法。

    https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/#define-clusters-users-and-contexts 很好地介绍了如何设置 kubeconfig 文件。您可以使用您选择的名称(只是为了在本地引用它)和要发送到服务器的凭据来定义用户节。您在本地选择的名称与服务器无关,它只关注您指定的凭据。

    【讨论】:

    • 谢谢。我已经阅读了上面链接中的一步一步,并与我自己的链接进行了比较,这似乎是有道理的。但是我还有一个问题,教程创建了这个文件,用户和上下文都在同一个节点中。我不确定使用多台计算机会如何发生这种情况。例如:假设我们有 2 台机器,其中一台是创建规则的管理员,另一台是我们只想开始授予节点访问权限的新用户。作为管理员,我如何将此用户添加到主服务器,然后本地环境中的用户应该如何设置他的配置文件?
    【解决方案2】:

    要使用的用户取决于您要使用的 kubeconfig(例如 ~/.kube/config)和当前上下文。例如,如果您的 ~/.kube/config 在下面,则 kubernetes-admin 是用户。

    apiVersion: v1
    kind: Config
    current-context: kubernetes-admin@kubernetes
    preferences: {}
    
    contexts:
      - context:       <---- Current context to identify which cluster, user, and namespace (*) to use.
          cluster: kubernetes
          user: kubernetes-admin   <----- user for the context
        name: kubernetes-admin@kubernetes
    
    clusters:
      - cluster:
          certificate-authority-data: REDACTED
          server: https://172.31.4.117:6443 
        name: kubernetes
    
    users:
      - name: kubernetes-admin <----
        user:
          client-certificate-data: REDACTED
          client-key-data: REDACTED
    

    您可以添加用户。请参阅用例 1:在 Configure RBAC In Your Kubernetes Cluster 中创建具有受限命名空间访问权限的用户。此“用户”不是“服务帐号”。


    参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 2017-07-08
      • 1970-01-01
      • 2021-04-26
      相关资源
      最近更新 更多